Newer
Older
# Copyright [1999-2013] Wellcome Trust Sanger Institute and the EMBL-European Bioinformatics Institute
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
Andy Yates
committed
use Test::More;
use Test::Warnings;
use Bio::EnsEMBL::DBEntry;
use Bio::EnsEMBL::Operon;
use Bio::EnsEMBL::Test::MultiTestDB;
use Bio::EnsEMBL::Test::TestUtils;
use Bio::EnsEMBL::DBSQL::OperonAdaptor;
use Bio::EnsEMBL::DBSQL::OperonTranscriptAdaptor;
debug("Startup test");
ok(1);
my $multi = Bio::EnsEMBL::Test::MultiTestDB->new();
my $dba = $multi->get_DBAdaptor("core");
debug("Test database instatiated");
ok($dba);
# get a slice
my $slice = $dba->get_SliceAdaptor()->fetch_by_seq_region_id(469283);
# create operon
my $start = 31225346;
my $end = 31225946;
my $strand = 1;
my $display_label = "accBC";
my $analysis = $dba->get_AnalysisAdaptor->fetch_by_logic_name("Genscan");
ok(defined $analysis);
my $operon = Bio::EnsEMBL::Operon->new(
-START => $start,
-END => $end,
-STRAND => $strand,
-SLICE => $slice,
-DISPLAY_LABEL => $display_label,
-ANALYSIS => $analysis);
$operon->add_DBEntry( Bio::EnsEMBL::DBEntry->new( -DBNAME => 'EMBL',
-RELEASE => 1,
-PRIMARY_ID => 'XZY',
-DISPLAY_ID => '123',
-ANALYSIS => $analysis ) );
# check it has the correct properties
Andy Yates
committed
is( $display_label, $operon->display_label(), "Operon name" );
is( $start, $operon->seq_region_start(), "Operon start" );
is( $end, $operon->seq_region_end(), "Operon end" );
is( $strand, $operon->seq_region_strand(), "Operon strand" );
is( $analysis, $operon->analysis(), "Analysis" );
my $operon_adaptor = Bio::EnsEMBL::DBSQL::OperonAdaptor->new($dba);
# store operon
$operon_adaptor->store($operon);
ok( defined $operon->dbID() );
# retrieve operon
my $operon2 = $operon_adaptor->fetch_by_dbID( $operon->dbID() );
Andy Yates
committed
is( $operon2->dbID(), $operon->dbID(), "Operon ID" );
is( $operon2->display_label(), $operon->display_label(), "Operon name" );
is( $operon2->seq_region_start(), $operon->seq_region_start(), "Operon start" );
is( $operon2->seq_region_end(), $operon->seq_region_end(), "Operon end" );
is( $operon2->seq_region_strand(),
Andy Yates
committed
is( $operon2->analysis(),
$operon->analysis(),
"Analysis" );
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#test the get_species_and_object_type method from the Registry
my $registry = 'Bio::EnsEMBL::Registry';
my ( $species, $object_type, $db_type ) = $registry->get_species_and_object_type('16152-16153-4840');
ok( $species eq 'homo_sapiens' && $object_type eq 'Operon');
debug ("Operon->list_stable_ids");
my $stable_ids = $operon_adaptor->list_stable_ids();
ok (@{$stable_ids});
$operon = $operon_adaptor->fetch_by_stable_id('16152-16153-4840');
debug( "Operon->fetch_by_stable_id()" );
ok( $operon );
#19
my @operons = @{ $operon_adaptor->fetch_all_versions_by_stable_id('16152-16153-4840') };
debug("fetch_all_versions_by_stable_id");
ok( scalar(@operons) == 1 );
#20
$operon = $operon_adaptor->fetch_by_operon_transcript_stable_id('T16152-16153-4840');
debug( "Operon->fetch_by_operon_transcript_stable_id()" );
ok( $operon );
#21-24
#
# Operon remove test
#
$multi->save( "core", "operon", "operon_transcript",
'xref', "object_xref", "ontology_xref", "identity_xref", 'meta_coord');
$operon = $operon_adaptor->fetch_by_stable_id( "16152-16153-4840" );
my $operon_count = count_rows( $dba, "operon" );
my $operon_trans_count = count_rows( $dba, "operon_transcript" );
my $ots = scalar( @{$operon->get_all_OperonTranscripts() } );
debug( "Operons before ".$operon_count );
debug( "OperonTranscripts before ".$operon_trans_count );
debug( "Operon has ".$ots." transcripts" );
$operon_adaptor->remove( $operon );
ok( count_rows( $dba, "operon" ) == ( $operon_count - 1 ));
ok( count_rows( $dba, "operon_transcript" ) == ($operon_trans_count-$ots));
ok(!defined($operon->dbID()));
ok(!defined($operon->adaptor()));
$multi->restore('core');
Andy Yates
committed
done_testing();