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