diff --git a/lib/Bio/Tools/CodonTable.pm b/lib/Bio/Tools/CodonTable.pm index 315c541d48..9411e035c0 100644 --- a/lib/Bio/Tools/CodonTable.pm +++ b/lib/Bio/Tools/CodonTable.pm @@ -330,7 +330,7 @@ sub new { @args); $id = 1 if ( ! defined ( $id ) ); - $id && $self->id($id); + $self->id($id); return $self; # success - we hope! } @@ -352,7 +352,7 @@ sub new { sub id{ my ($self,$value) = @_; if( defined $value) { - if ( not defined $TABLES[$value] or $TABLES[$value] eq '') { + if ( not defined $TABLES[$value] or $TABLES[$value] eq '' or $TABLES[$value] eq "''" or $value < 0) { $self->warn("Not a valid codon table ID [$value], using [1] instead "); $value = 1; } diff --git a/t/SeqTools/CodonTable.t b/t/SeqTools/CodonTable.t index f8cba9c4e6..d008de117e 100644 --- a/t/SeqTools/CodonTable.t +++ b/t/SeqTools/CodonTable.t @@ -6,7 +6,7 @@ use strict; BEGIN { use Bio::Root::Test; - test_begin(-tests => 84); + test_begin(-tests => 87); use_ok('Bio::Tools::CodonTable'); use_ok('Bio::CodonUsage::IO'); @@ -18,6 +18,18 @@ my $myCodonTable = Bio::Tools::CodonTable -> new ( -id => 16); ok defined $myCodonTable; isa_ok $myCodonTable, 'Bio::Tools::CodonTable'; +# Access to ID table 0 +$myCodonTable = Bio::Tools::CodonTable->new( -id => 0); +is $myCodonTable->id(), 0; + +# Access removed table e.g. 7 should return defaut table 1 +$myCodonTable = Bio::Tools::CodonTable->new( -id => 7); +is $myCodonTable->id(), 1; + +# Access negative table must return defaut table 1 +$myCodonTable = Bio::Tools::CodonTable->new( -id => -2); +is $myCodonTable->id(), 1; + # defaults to ID 1 "Standard" $myCodonTable = Bio::Tools::CodonTable->new(); is $myCodonTable->id(), 1;