Extend the python mussa interface.
[mussa.git] / py / test / TestSequence.py
1 import os
2 import sys
3 import unittest
4
5 # kinda hackish but it makes it possible to runi under ctest 
6 sys.path.append(os.getcwd())
7
8 import mussa
9
10 class TestSequence(unittest.TestCase):
11   def testSimple(self):
12     seq_text = "AGCT"
13     s = mussa.Sequence(seq_text)
14     self.failUnless(len(seq_text) == len(s))
15     self.failUnless(len(s) == s.size())
16     self.failUnless(str(s) == seq_text)
17     self.failUnless(str(s) == seq_text)
18
19     for i in range(len(seq_text)):
20       self.failUnlessEqual(s[i], seq_text[i])
21
22   def testNames(self):
23     seq_text = "AAGGCCTT"
24     header_text = "hello"
25     species = "Goo Gooerific"
26
27     s = mussa.Sequence(seq_text)
28
29     s.header = header_text
30     s.species = species
31     self.failUnless(s.header == header_text)
32     self.failUnless(s.species == species)
33
34   def testAnnotations(self):
35     seq = mussa.Sequence("AAGGCCTTAATTGGCCTT")
36     seq.add_annotation("foo", "utr", 0, 10)
37
38   def notestFile(self):
39     # remove no prefix once we have sequence loading from a stream
40     seq_text = "AAGGCCTT"
41     from StringIO import StringIO
42     s = StringIO(seq_text)
43
44     seq = mussa.Sequence(s)
45
46     self.failUnless(seq == seq_text)
47
48 def suite():
49   return unittest.makeSuite(TestSequence, 'test')
50
51 if __name__ == "__main__":
52   sys.exit(unittest.main(defaultTest='suite'))