diff --git a/modules/t/canonicalDBAdaptor.t b/modules/t/canonicalDBAdaptor.t new file mode 100644 index 0000000000000000000000000000000000000000..93bfe42e6824af99b8922478529e003c93269b7e --- /dev/null +++ b/modules/t/canonicalDBAdaptor.t @@ -0,0 +1,129 @@ +use strict; +use warnings; + +use lib 't'; + +BEGIN { $| = 1; + use Test; + plan tests => 41; +} + + +use TestUtils qw(debug test_getter_setter); +use Bio::EnsEMBL::DBSQL::DBAdaptor; +use Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor; +use Bio::EnsEMBL::DBSQL::ProteinFeatureAdaptor; +use Bio::EnsEMBL::DBSQL::DnaAlignFeatureAdaptor; + +my $db = Bio::EnsEMBL::DBSQL::DBAdaptor->new( -user => 'ensro', + -dbname => 'homo_sapiens_core_14_31', + -host => '127.0.0.1', + -port => '5000', + -driver => 'mysql'); + +# Check DBAdaptor +ok($db); + +# Should get meaningful type back +my $test_adaptor = $db->get_ArchiveStableIdAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor")); +$test_adaptor = $db->get_QtlFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::Map::DBSQL::QtlFeatureAdaptor")); +$test_adaptor = $db->get_QtlAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::Map::DBSQL::QtlAdaptor")); +$test_adaptor = $db->get_ProteinFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ProteinFeatureAdaptor")); +$test_adaptor = $db->get_ProteinAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ProteinAdaptor")); +#$test_adaptor = $db->get_SNPAdaptor(); +#ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ProxySNPAdaptor")); +#$test_adaptor = $db->get_BlastAdaptor(); +#ok($test_adaptor->isa("Bio::EnsEMBL::External::BlastAdaptor")); +$test_adaptor = $db->get_MapFragAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::MapFragAdaptor")); +$test_adaptor = $db->get_CloneAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::CloneAdaptor")); +$test_adaptor = $db->get_PredictionTranscriptAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::PredictionTranscriptAdaptor")); +$test_adaptor = $db->get_SequenceAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::SequenceAdaptor")); +$test_adaptor = $db->get_GeneAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ProxyGeneAdaptor")); +$test_adaptor = $db->get_ExonAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ExonAdaptor")); +$test_adaptor = $db->get_TranscriptAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::TranscriptAdaptor")); +$test_adaptor = $db->get_TranslationAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::TranslationAdaptor")); +$test_adaptor = $db->get_RawContigAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::RawContigAdaptor")); +$test_adaptor = $db->get_SliceAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::SliceAdaptor")); +$test_adaptor = $db->get_AnalysisAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::AnalysisAdaptor")); +$test_adaptor = $db->get_SimpleFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::SimpleFeatureAdaptor")); +$test_adaptor = $db->get_RepeatConsensusAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::RepeatConsensusAdaptor")); +$test_adaptor = $db->get_RepeatFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ProxyRepeatFeatureAdaptor")); +$test_adaptor = $db->get_ProteinAlignFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ProteinAlignFeatureAdaptor")); +$test_adaptor = $db->get_DnaAlignFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ProxyDnaAlignFeatureAdaptor")); +$test_adaptor = $db->get_AssemblyMapperAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor")); +$test_adaptor = $db->get_DBEntryAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::DBEntryAdaptor")); +$test_adaptor = $db->get_KaryotypeBandAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::KaryotypeBandAdaptor")); +$test_adaptor = $db->get_ChromosomeAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::ChromosomeAdaptor")); +$test_adaptor = $db->get_SupportingFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::DBSQL::SupportingFeatureAdaptor")); +$test_adaptor = $db->get_MarkerFeatureAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::Map::DBSQL::MarkerFeatureAdaptor")); +$test_adaptor = $db->get_MarkerAdaptor(); +ok($test_adaptor->isa("Bio::EnsEMBL::Map::DBSQL::MarkerAdaptor")); + +# Should get an error if we ask for something non-existent +eval { $db->get_adaptor("SomeNonExistentType") }; +ok($@); + +# Check setting module with good values +ok($db->set_adaptor("ArchiveStableId", "Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor" )); + +# Setting an unknown data type should give an error +eval { $db->set_adaptor("SomeNonExistentType", "Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor") }; +ok($@); + +# Setting to a non-subclass of the default should give an error +eval { $db->set_adaptor("ArchiveStableId", "Bio::EnsEMBL::DBSQL::GeneAdaptor") }; +ok($@); + +# Generic adaptors + +# Should work OK with subclasses of BaseFeatureAdaptor +my $rfa = Bio::EnsEMBL::DBSQL::RepeatFeatureAdaptor->new($db); +my $sfa = Bio::EnsEMBL::DBSQL::SimpleFeatureAdaptor->new($db); +ok($db->add_GenericFeatureAdaptor("Repeat", $rfa)); +ok($db->add_GenericFeatureAdaptor("Simple", $sfa)); + + +# Check get-ing the above +# by name ... +my %generic_adaptors = $db->get_GenericFeatureAdaptors("Simple", "Repeat"); +ok(%generic_adaptors); +ok(exists(%generic_adaptors->{'Simple'})); + +# no arg should return all +%generic_adaptors = $db->get_GenericFeatureAdaptors(); +my $size = keys(%generic_adaptors); +ok($size == 2); +ok(%generic_adaptors->{"Simple"}); +ok(%generic_adaptors->{"Repeat"}); + +# requesting one that hasn't been added should throw +eval { my %generic_adpators = $db->get_GenericFeatureAdaptors("Mickey") }; +ok($@); +