X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=pysam.git;a=blobdiff_plain;f=tests%2Fpysam_test.py;fp=tests%2Fpysam_test.py;h=aefcbb94e2a60fcdd651ae7695c2e22d9834952e;hp=5be5ca4c783f74cef3ebf775681ef1f95a619269;hb=7f85f82bcb01134b7398f0d26b9d1b9a21a3e66c;hpb=1880a0e7e45766a58e2b42c59d6993cb543e4538 diff --git a/tests/pysam_test.py b/tests/pysam_test.py index 5be5ca4..aefcbb9 100755 --- a/tests/pysam_test.py +++ b/tests/pysam_test.py @@ -100,11 +100,17 @@ class BinaryTest(unittest.TestCase): ("ex1.view", "samtools view ex1.bam > ex1.view"), ("pysam_ex1.view", (pysam.view, "ex1.bam" ) ), ), + "view2" : + ( + ("ex1.view", "samtools view -bT ex1.fa -o ex1.view2 ex1.sam"), + # note that -o ex1.view2 throws exception. + ("pysam_ex1.view", (pysam.view, "-bT ex1.fa -oex1.view2 ex1.sam" ) ), + ), } # some tests depend on others. The order specifies in which order # the samtools commands are executed. - mOrder = ('faidx', 'import', 'index', 'pileup1', 'pileup2', 'glfview', 'view' ) + mOrder = ('faidx', 'import', 'index', 'pileup1', 'pileup2', 'glfview', 'view', 'view2' ) def setUp( self ): '''setup tests. @@ -247,11 +253,22 @@ class IOTest(unittest.TestCase): samfile.close() self.assertRaises( ValueError, samfile.fetch, 'chr1', 100, 120) - def testPileupFromClosedFile( self ): + def testClosedFile( self ): + '''test that access to a closed samfile raises ValueError.''' samfile = pysam.Samfile( "ex1.bam", "rb" ) samfile.close() + self.assertRaises( ValueError, samfile.fetch, 'chr1', 100, 120) self.assertRaises( ValueError, samfile.pileup, 'chr1', 100, 120) + self.assertRaises( ValueError, samfile.getrname, 0 ) + self.assertRaises( ValueError, samfile.tell ) + self.assertRaises( ValueError, samfile.write, None ) + self.assertRaises( ValueError, samfile.seek, 0 ) + self.assertRaises( ValueError, getattr, samfile, "nreferences" ) + self.assertRaises( ValueError, getattr, samfile, "references" ) + self.assertRaises( ValueError, getattr, samfile, "lengths" ) + self.assertRaises( ValueError, getattr, samfile, "text" ) + self.assertRaises( ValueError, getattr, samfile, "header" ) def testBinaryReadFromSamfile( self ): pass @@ -267,12 +284,6 @@ class IOTest(unittest.TestCase): self.assertRaises( ValueError, samfile.fetch ) self.assertEqual( len(list( samfile.fetch(until_eof = True) )), 3270 ) - def testReadingFromFileWithWrongMode( self ): - - assert not os.path.exists( "ex2.bam.bai" ) - samfile = pysam.Samfile( "ex2.bam", "r" ) - self.assertRaises( ValueError, samfile.fetch ) - class TestIteratorRow(unittest.TestCase): def setUp(self): @@ -602,9 +613,29 @@ class TestExceptions(unittest.TestCase): def testOutOfRangeLargeOldFormat(self): self.assertRaises( ValueError, self.samfile.fetch, "chr1:99999999999999999-999999999999999999" ) + def testZeroToZero(self): + '''see issue 44''' + self.assertEqual( len(list(self.samfile.fetch('chr1', 0, 0))), 0) + def tearDown(self): self.samfile.close() + +class TestWrongFormat(unittest.TestCase): + '''test cases for opening files not in bam/sam format.''' + + def testOpenSamAsBam( self ): + self.assertRaises( ValueError, pysam.Samfile, 'ex1.sam', 'rb' ) + + def testOpenBamAsSam( self ): + self.assertRaises( ValueError, pysam.Samfile, 'ex1.bam', 'r' ) + + def testOpenFastaAsSam( self ): + self.assertRaises( ValueError, pysam.Samfile, 'ex1.fa', 'r' ) + + def testOpenFastaAsBam( self ): + self.assertRaises( ValueError, pysam.Samfile, 'ex1.fa', 'rb' ) + class TestFastaFile(unittest.TestCase): mSequences = { 'chr1' : @@ -691,7 +722,7 @@ class TestAlignedRead(unittest.TestCase): a.mpos=200 a.isize=167 a.qual="1234" * 3 - + # todo: create tags return a def testUpdate( self ): @@ -760,6 +791,19 @@ class TestAlignedRead(unittest.TestCase): return a + def testTagParsing( self ): + '''test for tag parsing + + see http://groups.google.com/group/pysam-user-group/browse_thread/thread/67ca204059ea465a + ''' + samfile=pysam.Samfile( "ex8.bam","rb" ) + + for entry in samfile: + before = entry.tags + entry.tags = entry.tags + after = entry.tags + self.assertEqual( after, before ) + class TestDeNovoConstruction(unittest.TestCase): '''check BAM/SAM file construction using ex3.sam @@ -874,6 +918,7 @@ class TestDeNovoConstruction(unittest.TestCase): os.unlink( tmpfilename ) + class TestDoubleFetch(unittest.TestCase): '''check if two iterators on the same bamfile are independent.'''