]> git.donarmstrong.com Git - biopieces.git/blob - code_ruby/test/maasha/seq/test_trim.rb
9c3f7d076ff4246f9383250879e74e33e0ea5238
[biopieces.git] / code_ruby / test / maasha / seq / test_trim.rb
1 #!/usr/bin/env ruby
2
3 require 'maasha/seq'
4 require 'test/unit'
5 require 'pp'
6
7 class TestTrim < Test::Unit::TestCase 
8   def setup
9     @entry = Seq.new
10   end
11
12   def test_Trim_quality_trim_with_missing_seq_raises
13     @entry.qual = "hhhh"
14     assert_raise(TrimError) { @entry.quality_trim_right(20) }
15     assert_raise(TrimError) { @entry.quality_trim_right!(20) }
16     assert_raise(TrimError) { @entry.quality_trim_left(20) }
17     assert_raise(TrimError) { @entry.quality_trim_left!(20) }
18     assert_raise(TrimError) { @entry.quality_trim(20) }
19     assert_raise(TrimError) { @entry.quality_trim!(20) }
20   end
21
22   def test_Trim_quality_trim_with_missing_qual_raises
23     @entry.seq = "ATCG"
24     assert_raise(TrimError) { @entry.quality_trim_right(20) }
25     assert_raise(TrimError) { @entry.quality_trim_right!(20) }
26     assert_raise(TrimError) { @entry.quality_trim_left(20) }
27     assert_raise(TrimError) { @entry.quality_trim_left!(20) }
28     assert_raise(TrimError) { @entry.quality_trim(20) }
29     assert_raise(TrimError) { @entry.quality_trim!(20) }
30   end
31
32   def test_Trim_quality_trim_with_bad_min_raises
33     @entry.seq  = "ATCG"
34     @entry.qual = "hhhh"
35
36     [-1, 41].each do |min|
37       assert_raise(TrimError) { @entry.quality_trim_right(min) }
38       assert_raise(TrimError) { @entry.quality_trim_right!(min) }
39       assert_raise(TrimError) { @entry.quality_trim_left(min) }
40       assert_raise(TrimError) { @entry.quality_trim_left!(min) }
41       assert_raise(TrimError) { @entry.quality_trim(min) }
42       assert_raise(TrimError) { @entry.quality_trim!(min) }
43     end
44   end
45
46   def test_Trim_quality_trim_with_ok_min_dont_raise
47     @entry.seq  = "ATCG"
48     @entry.qual = "hhhh"
49
50     [0, 40].each do |min|
51       assert_nothing_raised { @entry.quality_trim_right(min) }
52       assert_nothing_raised { @entry.quality_trim_right!(min) }
53       assert_nothing_raised { @entry.quality_trim_left(min) }
54       assert_nothing_raised { @entry.quality_trim_left!(min) }
55       assert_nothing_raised { @entry.quality_trim(min) }
56       assert_nothing_raised { @entry.quality_trim!(min) }
57     end
58   end
59
60   def test_Trim_quality_trim_right_returns_correctly
61     @entry.seq  = "AAAAATCG"
62     @entry.qual = "hhhhhgfe"
63     new_entry = @entry.quality_trim_right(38)
64     assert_equal("AAAAATC", new_entry.seq) 
65     assert_equal("hhhhhgf", new_entry.qual) 
66     assert_equal("AAAAATCG", @entry.seq) 
67     assert_equal("hhhhhgfe", @entry.qual) 
68   end
69
70   def test_Trim_quality_trim_right_bang_returns_correctly
71     @entry.seq  = "AAAAATCG"
72     @entry.qual = "hhhhhgfe"
73     @entry.quality_trim_right!(38)
74     assert_equal("AAAAATC", @entry.seq) 
75     assert_equal("hhhhhgf", @entry.qual) 
76   end
77
78   def test_Trim_quality_trim_right_with_all_low_qual_returns_correctly
79     @entry.seq  = "GCTAAAAA"
80     @entry.qual = "@@@@@@@@"
81     @entry.quality_trim_right!(38)
82     assert_equal("", @entry.seq) 
83     assert_equal("", @entry.qual) 
84   end
85
86   def test_Trim_quality_trim_left_returns_correctly
87     @entry.seq  = "GCTAAAAA"
88     @entry.qual = "efghhhhh"
89     new_entry = @entry.quality_trim_left(38)
90     assert_equal("CTAAAAA", new_entry.seq) 
91     assert_equal("fghhhhh", new_entry.qual) 
92     assert_equal("GCTAAAAA", @entry.seq) 
93     assert_equal("efghhhhh", @entry.qual) 
94   end
95
96   def test_Trim_quality_trim_left_bang_returns_correctly
97     @entry.seq  = "GCTAAAAA"
98     @entry.qual = "efghhhhh"
99     @entry.quality_trim_left!(38)
100     assert_equal("CTAAAAA", @entry.seq) 
101     assert_equal("fghhhhh", @entry.qual) 
102   end
103
104   def test_Trim_quality_trim_left_with_all_low_qual_returns_correctly
105     @entry.seq  = "GCTAAAAA"
106     @entry.qual = "@@@@@@@@"
107     @entry.quality_trim_left!(38)
108     assert_equal("", @entry.seq) 
109     assert_equal("", @entry.qual) 
110   end
111
112   def test_Trim_quality_trim_returns_correctly
113     @entry.seq  = "GCTAAAAAGTG"
114     @entry.qual = "efghhhhhgfe"
115     new_entry = @entry.quality_trim(38)
116     assert_equal("CTAAAAAGT", new_entry.seq) 
117     assert_equal("fghhhhhgf", new_entry.qual) 
118     assert_equal("GCTAAAAAGTG", @entry.seq) 
119     assert_equal("efghhhhhgfe", @entry.qual) 
120   end
121
122   def test_Trim_quality_trim_bang_returns_correctly
123     @entry.seq  = "GCTAAAAAGTG"
124     @entry.qual = "efghhhhhgfe"
125     @entry.quality_trim!(38)
126     assert_equal("CTAAAAAGT", @entry.seq) 
127     assert_equal("fghhhhhgf", @entry.qual) 
128   end
129
130   def test_Trim_quality_trim_with_min_len_bang_returns_correctly
131     @entry.seq  = "GCTCAAACGTG"
132     @entry.qual = "hdefghgfedh"
133     @entry.quality_trim!(37, 2)
134     assert_equal("TCAAACG", @entry.seq) 
135     assert_equal("efghgfe", @entry.qual) 
136   end
137
138   def test_Trim_quality_trim_with_all_low_qual_returns_correctly
139     @entry.seq  = "GCTCAAACGTG"
140     @entry.qual = "@@@@@@@@@@@"
141     @entry.quality_trim!(37, 2)
142     assert_equal("", @entry.seq) 
143     assert_equal("", @entry.qual) 
144   end
145 end
146
147 __END__