File: test_rgfa_line_segment.rb

package info (click to toggle)
ruby-rgfa 1.3.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 848 kB
  • sloc: ruby: 5,666; makefile: 9
file content (76 lines) | stat: -rw-r--r-- 2,909 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
require "rgfa.rb"
require "test/unit"

class TestRGFALineSegment < Test::Unit::TestCase

  def test_from_string
    fields=["S","1","ACGTCACANNN","RC:i:1232","LN:i:11","ab:Z:abcd",
            "FC:i:2321","KC:i:1212"]
    str=fields.join("\t")
    assert_nothing_raised { str.to_rgfa_line }
    assert_equal(RGFA::Line::Segment, str.to_rgfa_line.class)
    assert_equal(fields[0].to_sym, str.to_rgfa_line.record_type)
    assert_equal(fields[1].to_sym, str.to_rgfa_line.name)
    assert_equal(fields[2], str.to_rgfa_line.sequence)
    assert_equal(1232, str.to_rgfa_line.RC)
    assert_equal(11, str.to_rgfa_line.LN)
    assert_equal(2321, str.to_rgfa_line.FC)
    assert_equal(1212, str.to_rgfa_line.KC)
    assert_equal("abcd", str.to_rgfa_line.ab)
    assert_raises(RGFA::FieldParser::FormatError) { (str+"\tH1").to_rgfa_line }
    assert_raises(RGFA::Line::RequiredFieldMissingError) { "S\tH".to_rgfa_line }
    assert_raises(RGFA::FieldParser::FormatError) do
      f=fields.dup; f[2]="!@#?"; f.join("\t").to_rgfa_line(validate: 3)
    end
    assert_raises(RGFA::Line::PredefinedOptfieldTypeError) do
      f=fields.dup; f[3]="RC:Z:1232"; f.join("\t").to_rgfa_line
    end
    f=["S","2","ACGTCACANNN","LN:i:3"]
    assert_raises(RGFA::Line::Segment::InconsistentLengthError) do
      f.join("\t").to_rgfa_line(validate: 3)
    end
    f=["S","2","ACGTCACANNN","LN:i:11"]
    assert_nothing_raised { f.join("\t").to_rgfa_line }
    f=["S","2","*","LN:i:3"]
    assert_nothing_raised { f.join("\t").to_rgfa_line }
  end

  def test_forbidden_segment_names
    assert_nothing_raised { "S\tA+B\t*".to_rgfa_line }
    assert_nothing_raised { "S\tA-B\t*".to_rgfa_line }
    assert_nothing_raised { "S\tA,B\t*".to_rgfa_line }
    assert_raises(RGFA::FieldParser::FormatError) do
      "S\tA+,B\t*".to_rgfa_line
    end
    assert_raises(RGFA::FieldParser::FormatError) do
      "S\tA-,B\t*".to_rgfa_line
    end
  end

  def test_coverage
    l = "S\t0\t*\tRC:i:600\tLN:i:100".to_rgfa_line
    assert_equal(6, l.coverage)
    assert_equal(6, l.coverage!)
    l = "S\t0\t*\tRC:i:600".to_rgfa_line
    assert_equal(nil, l.coverage)
    assert_raises(RGFA::Line::Segment::UndefinedLengthError) {l.coverage!}
    l = "S\t0\t*\tLN:i:100".to_rgfa_line
    assert_equal(nil, l.coverage)
    assert_raises(RGFA::Line::TagMissingError) {l.coverage!}
    l = "S\t0\t*\tFC:i:600\tLN:i:100".to_rgfa_line
    assert_equal(nil, l.coverage)
    assert_raises(RGFA::Line::TagMissingError) {l.coverage!}
    assert_equal(6, l.coverage(count_tag: :FC))
    assert_equal(6, l.coverage!(count_tag: :FC))
  end

  def test_other_orientation
    assert_equal(:+, RGFA::OrientedSegment.invert("-"))
    assert_equal(:-, RGFA::OrientedSegment.invert("+"))
    assert_equal(:-, RGFA::OrientedSegment.invert(:+))
    assert_raises(RGFA::SegmentInfo::InvalidAttributeError) do
      RGFA::OrientedSegment.invert("x")
    end
  end

end