1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
import unittest
import gfapy
class TestApiComments(unittest.TestCase):
def test_initialize(self):
l = gfapy.line.Comment("# hallo")
self.assertEqual("# hallo", str(l))
l = gfapy.line.Comment(["#", "hallo", "\t"])
self.assertEqual("#\thallo", str(l))
def test_fields(self):
l = gfapy.line.Comment("# hallo")
self.assertEqual("hallo", l.content)
self.assertEqual(" ", l.spacer)
l.content = "hello"
self.assertEqual("hello", l.content)
self.assertEqual("# hello", str(l))
l.spacer = " "
self.assertEqual("hello", l.content)
self.assertEqual("# hello", str(l))
def test_validation(self):
with self.assertRaises(gfapy.FormatError):
gfapy.line.Comment(["#", "hallo\nhallo"])
with self.assertRaises(gfapy.FormatError):
gfapy.line.Comment(["#", "hallo", "\n"])
gfapy.line.Comment(["#", "hallo", "\n"], vlevel=0) # nothing raised
l = gfapy.line.Comment(["#", "hallo"])
l.content = "hallo\n" # nothing raised
with self.assertRaises(gfapy.FormatError): str(l)
l.content = "hallo"
str(l) # nothing raised
l.spacer = "\n" # nothing raised
with self.assertRaises(gfapy.FormatError): str(l)
l = gfapy.line.Comment(["#", "hallo"], vlevel=3)
with self.assertRaises(gfapy.FormatError): l.content = "hallo\n"
with self.assertRaises(gfapy.FormatError): l.spacer = "\n"
def test_from_string(self):
s = "# this is a comment"
l = gfapy.Line(s)
self.assertEqual(gfapy.line.Comment, l.__class__)
self.assertEqual(s[2:], l.content)
self.assertEqual(" ", l.spacer)
s = "#this is another comment"
l = gfapy.Line(s)
self.assertEqual(gfapy.line.Comment, l.__class__)
self.assertEqual(s[1:], l.content)
self.assertEqual("", l.spacer)
s = "#\t and this too"
l = gfapy.Line(s)
self.assertEqual(gfapy.line.Comment, l.__class__)
self.assertEqual(s[3:], l.content)
self.assertEqual(s[1:3], l.spacer)
s = "#: and this too"
l = gfapy.Line(s)
self.assertEqual(gfapy.line.Comment, l.__class__)
self.assertEqual(s[1:], l.content)
self.assertEqual("", l.spacer)
def test_to_s(self):
s = "# this is a comment"
l = gfapy.Line(s)
self.assertEqual(s, str(l))
s = "#this is another\tcomment"
l = gfapy.Line(s)
self.assertEqual(s, str(l))
s = "#this is another\tcomment"
l = gfapy.Line(s)
l.spacer = " "
self.assertEqual("# "+s[1:], str(l))
def test_tags(self):
with self.assertRaises(gfapy.ValueError):
gfapy.line.Comment(["#", "hallo", " ", "zz:Z:hallo"])
l = gfapy.Line("# hallo zz:Z:hallo")
self.assertEqual("hallo zz:Z:hallo", l.content)
self.assertEqual(None, l.zz)
with self.assertRaises(gfapy.RuntimeError): l.zz = 1
with self.assertRaises(gfapy.RuntimeError): l.set("zz", 1)
self.assertEqual(None, l.get("zz"))
def test_to_gfa1(self):
s = "# this is a comment"
l = gfapy.Line(s,version="gfa2")
self.assertEqual(gfapy.line.Comment, l.__class__)
self.assertEqual("gfa2", l.version)
self.assertEqual(s, str(l))
self.assertEqual("gfa2", l.to_gfa2().version)
self.assertEqual(s, str(l.to_gfa2()))
self.assertEqual("gfa1", l.to_gfa1().version)
self.assertEqual(s, str(l.to_gfa1()))
def test_to_gfa2(self):
s = "# this is a comment"
l = gfapy.Line(s,version="gfa1")
self.assertEqual(gfapy.line.Comment, l.__class__)
self.assertEqual("gfa1", l.version)
self.assertEqual(s, str(l))
self.assertEqual("gfa1", l.to_gfa1().version)
self.assertEqual(s, str(l.to_gfa1()))
self.assertEqual("gfa2", l.to_gfa2().version)
self.assertEqual(s, str(l.to_gfa2()))
def test_rgfa_comments(self):
gfa = gfapy.Gfa()
c1 = "#this is a comment"
c2 = "# this is also a comment"
c3 = "#and \tthis too!"
gfa.add_line(c1) # nothing raised
gfa.add_line(c2) # nothing raised
gfa.add_line(c3) # nothing raised
self.assertEqual([c1,c2,c3], [str(x) for x in gfa.comments])
self.assertEqual(c1, str(gfa.comments[0]))
gfa.rm(gfa.comments[0])
self.assertEqual([c2,c3], [str(x) for x in gfa.comments])
gfa.comments[0].disconnect()
self.assertEqual([c3], [str(x) for x in gfa.comments])
|