--- /dev/null
+#!/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__