]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_ruby/test/maasha/seq/test_trim.rb
rewrite of seq.rb and addition of seq/trim.rb
[biopieces.git] / code_ruby / test / maasha / seq / test_trim.rb
diff --git a/code_ruby/test/maasha/seq/test_trim.rb b/code_ruby/test/maasha/seq/test_trim.rb
new file mode 100755 (executable)
index 0000000..e9695be
--- /dev/null
@@ -0,0 +1,147 @@
+#!/usr/bin/env ruby
+
+require 'maasha/seq'
+require 'test/unit'
+require 'pp'
+
+class TestTrim < Test::Unit::TestCase 
+  def setup
+    @entry = Seq.new
+  end
+
+  def test_Trim_quality_trim_with_missing_seq_raises
+    @entry.qual = "hhhh"
+    assert_raise(SeqError) { @entry.quality_trim_right(20) }
+    assert_raise(SeqError) { @entry.quality_trim_right!(20) }
+    assert_raise(SeqError) { @entry.quality_trim_left(20) }
+    assert_raise(SeqError) { @entry.quality_trim_left!(20) }
+    assert_raise(SeqError) { @entry.quality_trim(20) }
+    assert_raise(SeqError) { @entry.quality_trim!(20) }
+  end
+
+  def test_Trim_quality_trim_with_missing_qual_raises
+    @entry.seq = "ATCG"
+    assert_raise(SeqError) { @entry.quality_trim_right(20) }
+    assert_raise(SeqError) { @entry.quality_trim_right!(20) }
+    assert_raise(SeqError) { @entry.quality_trim_left(20) }
+    assert_raise(SeqError) { @entry.quality_trim_left!(20) }
+    assert_raise(SeqError) { @entry.quality_trim(20) }
+    assert_raise(SeqError) { @entry.quality_trim!(20) }
+  end
+
+  def test_Trim_quality_trim_with_bad_min_raises
+    @entry.seq  = "ATCG"
+    @entry.qual = "hhhh"
+
+    [-1, 41].each do |min|
+      assert_raise(SeqError) { @entry.quality_trim_right(min) }
+      assert_raise(SeqError) { @entry.quality_trim_right!(min) }
+      assert_raise(SeqError) { @entry.quality_trim_left(min) }
+      assert_raise(SeqError) { @entry.quality_trim_left!(min) }
+      assert_raise(SeqError) { @entry.quality_trim(min) }
+      assert_raise(SeqError) { @entry.quality_trim!(min) }
+    end
+  end
+
+  def test_Trim_quality_trim_with_ok_min_dont_raise
+    @entry.seq  = "ATCG"
+    @entry.qual = "hhhh"
+
+    [0, 40].each do |min|
+      assert_nothing_raised { @entry.quality_trim_right(min) }
+      assert_nothing_raised { @entry.quality_trim_right!(min) }
+      assert_nothing_raised { @entry.quality_trim_left(min) }
+      assert_nothing_raised { @entry.quality_trim_left!(min) }
+      assert_nothing_raised { @entry.quality_trim(min) }
+      assert_nothing_raised { @entry.quality_trim!(min) }
+    end
+  end
+
+  def test_Trim_quality_trim_right_returns_correctly
+    @entry.seq  = "AAAAATCG"
+    @entry.qual = "hhhhhgfe"
+    new_entry = @entry.quality_trim_right(38)
+    assert_equal("AAAAAT", new_entry.seq) 
+    assert_equal("hhhhhg", new_entry.qual) 
+    assert_equal("AAAAATCG", @entry.seq) 
+    assert_equal("hhhhhgfe", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_right_bang_returns_correctly
+    @entry.seq  = "AAAAATCG"
+    @entry.qual = "hhhhhgfe"
+    @entry.quality_trim_right!(38)
+    assert_equal("AAAAAT", @entry.seq) 
+    assert_equal("hhhhhg", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_right_with_all_low_qual_returns_correctly
+    @entry.seq  = "GCTAAAAA"
+    @entry.qual = "@@@@@@@@"
+    @entry.quality_trim_right!(38)
+    assert_equal("", @entry.seq) 
+    assert_equal("", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_left_returns_correctly
+    @entry.seq  = "GCTAAAAA"
+    @entry.qual = "efghhhhh"
+    new_entry = @entry.quality_trim_left(38)
+    assert_equal("TAAAAA", new_entry.seq) 
+    assert_equal("ghhhhh", new_entry.qual) 
+    assert_equal("GCTAAAAA", @entry.seq) 
+    assert_equal("efghhhhh", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_left_bang_returns_correctly
+    @entry.seq  = "GCTAAAAA"
+    @entry.qual = "efghhhhh"
+    @entry.quality_trim_left!(38)
+    assert_equal("TAAAAA", @entry.seq) 
+    assert_equal("ghhhhh", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_left_with_all_low_qual_returns_correctly
+    @entry.seq  = "GCTAAAAA"
+    @entry.qual = "@@@@@@@@"
+    @entry.quality_trim_left!(38)
+    assert_equal("", @entry.seq) 
+    assert_equal("", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_returns_correctly
+    @entry.seq  = "GCTAAAAAGTG"
+    @entry.qual = "efghhhhhgfe"
+    new_entry = @entry.quality_trim(38)
+    assert_equal("TAAAAAG", new_entry.seq) 
+    assert_equal("ghhhhhg", new_entry.qual) 
+    assert_equal("GCTAAAAAGTG", @entry.seq) 
+    assert_equal("efghhhhhgfe", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_bang_returns_correctly
+    @entry.seq  = "GCTAAAAAGTG"
+    @entry.qual = "efghhhhhgfe"
+    @entry.quality_trim!(38)
+    assert_equal("TAAAAAG", @entry.seq) 
+    assert_equal("ghhhhhg", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_with_min_len_bang_returns_correctly
+    @entry.seq  = "GCTCAAACGTG"
+    @entry.qual = "hdefghgfedh"
+    @entry.quality_trim!(37, 2)
+    assert_equal("CAAAC", @entry.seq) 
+    assert_equal("fghgf", @entry.qual) 
+  end
+
+  def test_Trim_quality_trim_with_all_low_qual_returns_correctly
+    @entry.seq  = "GCTCAAACGTG"
+    @entry.qual = "@@@@@@@@@@@"
+    @entry.quality_trim!(37, 2)
+    assert_equal("", @entry.seq) 
+    assert_equal("", @entry.qual) 
+  end
+end
+
+__END__