class PrefixUnionDict_Test(object): """ Test for all of the basic dictionary functions on 'PrefixUnionDict'. """ def setup(self): blastdb = SequenceFileDB('dnaseq') # contains 'seq1', 'seq2' self.db = PrefixUnionDict({ 'prefix' : blastdb }) def keys_test(self): k = self.db.keys() k.sort() assert k == ['prefix.seq1', 'prefix.seq2'] def contains_test(self): assert 'prefix.seq1' in self.db assert 'prefix.seq2' in self.db assert 'foo' not in self.db assert 'prefix.foo' not in self.db def has_key_test(self): assert self.db.has_key('prefix.seq1') assert self.db.has_key('prefix.seq2') assert not self.db.has_key('prefix.foo') assert not self.db.has_key('foo') def get_test(self): assert self.db.get('foo') is None assert self.db.get('prefix.foo') is None assert self.db.get('prefix.seq1') is not None assert str(self.db.get('prefix.seq1')).startswith('atggtgtca') assert self.db.get('prefix.seq2') is not None assert str(self.db.get('prefix.seq2')).startswith('GTGTTGAA') def items_test(self): i = [ k for (k,v) in self.db.items() ] i.sort() assert i == ['prefix.seq1', 'prefix.seq2'] def iterkeys_test(self): kk = self.db.keys() kk.sort() ik = list(self.db.iterkeys()) ik.sort() assert kk == ik def itervalues_test(self): kv = self.db.values() kv.sort() iv = list(self.db.itervalues()) iv.sort() assert kv == iv def iteritems_test(self): ki = self.db.items() ki.sort() ii = list(self.db.iteritems()) ii.sort() assert ki == ii # test some things other than dict behavior def keyerror_test(self): "Make sure that the PrefixUnionDict KeyError is informative." try: self.db['prefix.foo'] except KeyError, e: assert "no key 'prefix.foo' in " in str(e), str(e) try: self.db['foo'] except KeyError, e: assert "invalid id format; no prefix: foo" in str(e), str(e)
class PrefixUnionDict_Test(unittest.TestCase): """ Test for all of the basic dictionary functions on 'PrefixUnionDict'. """ def setUp(self): dnaseq = testutil.datafile('dnaseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' self.db = PrefixUnionDict({ 'prefix' : seqdb }) def tearDown(self): close_pud_dicts(self.db) def test_keys(self): "PrefixUnionDict keys" k = self.db.keys() k.sort() assert k == ['prefix.seq1', 'prefix.seq2'] def test_contains(self): "PrefixUnionDict contains" # first, check "is this sequence name in the PUD?"-style contains. assert 'prefix.seq1' in self.db assert 'prefix.seq2' in self.db assert 'foo' not in self.db assert 'prefix.foo' not in self.db # now, check "is this sequence in the PUD?" seq = self.db['prefix.seq1'] assert seq in self.db # finally, check failure: "is something other than str/seq in db" try: 12345 in self.db assert 0, "should not get to this point" except AttributeError: pass def test_invert_class(self): "PrefixUnionDict __invert__" seq = self.db['prefix.seq1'] inversedb = ~self.db assert inversedb[seq] == 'prefix.seq1' assert seq in inversedb assert 'foo' not in inversedb def test_funny_key(self): "check handling of ID containing multiple separators" dnaseq = testutil.datafile('funnyseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' try: pudb = PrefixUnionDict({ 'prefix' : seqdb }) seq = pudb['prefix.seq.1.more'] finally: seqdb.close() def test_funny_key2(self): "check handling of ID containing multiple separators" dnaseq = testutil.datafile('funnyseq.fasta') seqdb = SequenceFileDB(dnaseq) # contains 'seq1', 'seq2' try: pudb = PrefixUnionDict({ 'prefix' : seqdb }) seq = pudb['prefix.seq.2.even.longer'] finally: seqdb.close() def test_has_key(self): "PrefixUnionDict has key" assert self.db.has_key('prefix.seq1') assert self.db.has_key('prefix.seq2') assert not self.db.has_key('prefix.foo') assert not self.db.has_key('foo') def test_get(self): "PrefixUnionDict get" assert self.db.get('foo') is None assert self.db.get('prefix.foo') is None assert self.db.get('prefix.seq1') is not None assert str(self.db.get('prefix.seq1')).startswith('atggtgtca') assert self.db.get('prefix.seq2') is not None assert str(self.db.get('prefix.seq2')).startswith('GTGTTGAA') assert self.db.get('foo.bar') is None assert self.db.get(12345) is None def test_get_prefix_id(self): try: self.db.get_prefix_id(12345) assert 0, "should not get here" except KeyError: pass def test_getName(self): seq1 = self.db['prefix.seq1'] name = self.db.getName(seq1) assert name == 'prefix.seq1' def test_items(self): "PrefixUnionDict items" i = [ k for (k,v) in self.db.items() ] i.sort() assert i == ['prefix.seq1', 'prefix.seq2'] def test_iterkeys(self): "PrefixUnionDict iterkeys" kk = self.db.keys() kk.sort() ik = list(self.db.iterkeys()) ik.sort() assert kk == ik def test_itervalues(self): "PrefixUnionDict itervalues" kv = self.db.values() kv.sort() iv = list(self.db.itervalues()) iv.sort() assert kv == iv def test_iteritems(self): "PrefixUnionDict iteritems" ki = self.db.items() ki.sort() ii = list(self.db.iteritems()) ii.sort() assert ki == ii # test some things other than dict behavior def test_keyerror(self): "PrefixUnionDict keyerror" "Make sure that the PrefixUnionDict KeyError is informative." try: self.db['prefix.foo'] except KeyError, e: assert "no key 'foo' in " in str(e), str(e) try: self.db['foo'] except KeyError, e: assert "invalid id format; no prefix: foo" in str(e), str(e)