text: import gfapy
  import unittest
  
  class TestLineSegment(unittest.TestCase):
  
    def test_from_string(self):
      fields = ["S","1","ACGTCACANNN","RC:i:1232","LN:i:11","ab:Z:abcd",
              "FC:i:2321","KC:i:1212"]
      string = "\t".join(fields)
      gfapy.Line(string)
      self.assertIsInstance(gfapy.Line(string), gfapy.line.segment.GFA1)
      self.assertEqual(str(fields[0]), gfapy.Line(string).record_type)
      self.assertEqual(str(fields[1]), gfapy.Line(string).name)
      self.assertEqual(fields[2], gfapy.Line(string).sequence)
      self.assertEqual(1232, gfapy.Line(string).RC)
      self.assertEqual(11, gfapy.Line(string).LN)
      self.assertEqual(2321, gfapy.Line(string).FC)
      self.assertEqual(1212, gfapy.Line(string).KC)
      self.assertEqual("abcd", gfapy.Line(string).ab)
      with self.assertRaises(gfapy.FormatError):
        gfapy.Line(string + "\tH1")
      with self.assertRaises(gfapy.FormatError):
        gfapy.Line("S\tH")
      with self.assertRaises(gfapy.FormatError):
        f = fields[:]
        f[2]="!@#?"
        gfapy.Line("\t".join(f), vlevel = 2)
      with self.assertRaises(gfapy.TypeError):
        f=fields[:]
        f[3]="RC:Z:1232"
        gfapy.Line("\t".join(f), version = "gfa1")
      f=["S","2","ACGTCACANNN","LN:i:3"]
      with self.assertRaises(gfapy.InconsistencyError):
        gfapy.Line("\t".join(f), version = "gfa1", vlevel = 2)
      f=["S","2","ACGTCACANNN","LN:i:11"]
      gfapy.Line("\t".join(f))
      f=["S","2","*","LN:i:3"]
      gfapy.Line("\t".join(f))
  
    def test_forbidden_segment_names(self):
      gfapy.Line("S\tA+B\t*")
      gfapy.Line("S\tA-B\t*")
      gfapy.Line("S\tA,B\t*")
      with self.assertRaises(gfapy.FormatError):
        gfapy.Line("S\tA+,B\t*", vlevel = 2)
      with self.assertRaises(gfapy.FormatError):
        gfapy.Line("S\tA-,B\t*", vlevel = 2)
  
    def test_coverage(self):
      l = gfapy.Line("S\t0\t*\tRC:i:600\tLN:i:100")
      self.assertEqual(6, l.coverage())
      self.assertEqual(6, l.try_get_coverage())
      l = gfapy.Line("S\t0\t*\tRC:i:600")
      self.assertEqual(None, l.coverage())
      self.assertRaises(gfapy.NotFoundError, l.try_get_coverage)
      l = gfapy.Line("S\t0\t*\tLN:i:100")
      self.assertEqual(None, l.coverage())
      self.assertRaises(gfapy.NotFoundError, l.try_get_coverage)
      l = gfapy.Line("S\t0\t*\tFC:i:600\tLN:i:100")
      self.assertEqual(None, l.coverage())
      self.assertRaises(gfapy.NotFoundError, l.try_get_coverage)
      self.assertEqual(6, l.coverage(count_tag = "FC"))
      self.assertEqual(6, l.try_get_coverage(count_tag = "FC"))
  