File: test_unit_oriented_line.py

package info (click to toggle)
gfapy 1.2.3%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,048 kB
  • sloc: python: 11,777; sh: 167; makefile: 68
file content (100 lines) | stat: -rw-r--r-- 3,336 bytes parent folder | download | duplicates (4)
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
import unittest
import gfapy

class TestUnitOrientedLine(unittest.TestCase):

  def test_init(self):
    a = gfapy.OrientedLine("a","+")
    # no validation on creation: (invalid orientation)
    gfapy.OrientedLine("a","*")
    # no validation on creation: (invalid line name)
    gfapy.OrientedLine("a\ta","+")
    b = gfapy.OrientedLine("a+")
    self.assertEqual(a, b)
    c = gfapy.OrientedLine(["a","+"])
    self.assertEqual(a, c)
    self.assertRaises(IndexError, gfapy.OrientedLine, [])
    self.assertRaises(IndexError, gfapy.OrientedLine, ["a"])
    # nothing raised, if too many args are provided (further are ignored)
    gfapy.OrientedLine(["a", "+", 1])

  def test_properties(self):
    a = gfapy.OrientedLine("a", "+")
    self.assertEqual("a", a.line)
    self.assertEqual("+", a.orient)
    self.assertEqual("a", a.name)
    s = gfapy.Line("S\tb\t*\txx:Z:1.0")
    a.line = s
    self.assertEqual(s, a.line)
    self.assertEqual("b", a.name)
    self.assertEqual("+", a.orient)
    a.orient = "-"
    self.assertEqual(s, a.line)
    self.assertEqual("-", a.orient)

  def test_validate(self):
    gfapy.OrientedLine("a","+").validate()
    gfapy.OrientedLine(gfapy.Line("S\tb\t*\txx:Z:1.0"),
                       "-").validate()
    self.assertRaises(gfapy.ValueError,
        gfapy.OrientedLine("a","*").validate)
    self.assertRaises(gfapy.TypeError,
        gfapy.OrientedLine([],"+").validate)
    self.assertRaises(gfapy.FormatError,
        gfapy.OrientedLine("a\ta","+").validate)


  def test_inverted(self):
    os = gfapy.OrientedLine("a", "+")
    inv_os = os.inverted()
    self.assertEqual("a", inv_os.line)
    self.assertEqual("+", os.orient)
    self.assertEqual("-", inv_os.orient)
    s = gfapy.Line("S\tb\t*\txx:Z:1.0")
    os = gfapy.OrientedLine(s, "-")
    inv_os = os.inverted()
    self.assertEqual(s, inv_os.line)
    self.assertEqual("-", os.orient)
    self.assertEqual("+", inv_os.orient)
    os = gfapy.OrientedLine("a", "*")
    self.assertRaises(gfapy.ValueError, os.invert)

  def test_str(self):
    self.assertEqual("a-", str(gfapy.OrientedLine("a","-")))
    s = gfapy.Line("S\tb\t*\txx:Z:1.0")
    self.assertEqual("b+", str(gfapy.OrientedLine(s,"+")))

  def test_equal(self):
    a = gfapy.OrientedLine("a", "+")
    b = gfapy.OrientedLine(gfapy.Line("S\ta\t*"), "+")
    c = gfapy.OrientedLine("a", "-")
    self.assertEqual(a, b)
    self.assertNotEqual(a, c)
    # line itself is not checked for equiv, only name:
    b2 = gfapy.OrientedLine(gfapy.Line("S\ta\tCACAC"), "+")
    self.assertEqual(b, b2)
    # equivalence to string:
    self.assertEqual("a+", a)
    self.assertEqual("a+", b)
    self.assertEqual(a, "a+")
    self.assertEqual(b, "a+")
    # equivalence to list:
    self.assertEqual(a, ["a", "+"])
    self.assertEqual(b, ["a", "+"])
    self.assertEqual(["a", "+"], a)
    self.assertEqual(["a", "+"], b)

  def test_block(self):
    a = gfapy.OrientedLine("a", "+")
    a._block()
    with self.assertRaises(gfapy.RuntimeError):
      a.line = "b"
    a._unblock()
    a.line = "b"

  def test_delegate_methods(self):
    ol = gfapy.OrientedLine(gfapy.Line("S\ta\tCACAC"), "+")
    self.assertEqual("CACAC", ol.sequence)
    self.assertEqual("CACAC", ol.field_to_s("sequence"))
    ol.set("xx", 1)
    self.assertEqual("xx:i:1", ol.field_to_s("xx", True))