require 'test/unit'
require 'maasha/seq'
-require 'stringio'
-require 'pp'
class BackTrackTest < Test::Unit::TestCase
def setup
- @seq = Seq.new("test", "tacgatgctagcatgcacg")
+ # 0 1
+ # 01234567890123456789
+ @seq = Seq.new("test", "tacgatgctagcatgcacgg")
end
def test_BackTrack_patscan_with_bad_pattern_raises
end
def test_BackTrack_patscan_with_OK_pattern_dont_raise
- ["N"].each { |pattern|
+ ["N", "atcg"].each { |pattern|
assert_nothing_raised { @seq.patscan(pattern) }
}
end
def test_BackTrack_patscan_with_bad_pos_raises
+ [-1, 20].each { |pos|
+ assert_raise(BackTrackError) { @seq.patscan("N", pos) }
+ }
end
def test_BackTrack_patscan_with_OK_pos_dont_raise
+ [0, 19].each { |pos|
+ assert_nothing_raised { @seq.patscan("N", pos) }
+ }
end
def test_BackTrack_patscan_with_bad_mis_raises
+ [-1, 6].each { |mis|
+ assert_raise(BackTrackError) { @seq.patscan("N", 0, mis) }
+ }
end
def test_BackTrack_patscan_with_OK_mis_dont_raise
+ [0, 5].each { |mis|
+ assert_nothing_raised { @seq.patscan("N", 0, mis) }
+ }
end
def test_BackTrack_patscan_with_bad_ins_raises
+ [-1, 6].each { |ins|
+ assert_raise(BackTrackError) { @seq.patscan("N", 0, 0, ins) }
+ }
end
def test_BackTrack_patscan_with_OK_ins_dont_raise
+ [0, 5].each { |ins|
+ assert_nothing_raised { @seq.patscan("N", 0, 0, ins) }
+ }
end
def test_BackTrack_patscan_with_bad_del_raises
+ [-1, 6].each { |del|
+ assert_raise(BackTrackError) { @seq.patscan("N", 0, 0, 0, del) }
+ }
end
def test_BackTrack_patscan_with_OK_del_dont_raise
+ [0, 5].each { |del|
+ assert_nothing_raised { @seq.patscan("N", 0, 0, 0, del) }
+ }
+ end
+
+ def test_BackTrack_patscan_perfect_left_is_ok
+ assert_equal("0:7:tacgatg", @seq.patscan("TACGATG").first.to_s)
+ end
+
+ def test_BackTrack_patscan_perfect_right_is_ok
+ assert_equal("13:7:tgcacgg", @seq.patscan("TGCACGG").first.to_s)
+ end
+
+ def test_BackTrack_patscan_ambiguity_is_ok
+ assert_equal("13:7:tgcacgg", @seq.patscan("TGCACNN").first.to_s)
+ end
+
+ def test_BackTrack_patscan_pos_is_ok
+ assert_equal("10:1:g", @seq.patscan("N", 10).first.to_s)
+ assert_equal("19:1:g", @seq.patscan("N", 10).last.to_s)
+ end
+
+ def test_BackTrack_patscan_mis_left_is_ok
+ assert_equal("0:7:tacgatg", @seq.patscan("Aacgatg", 0, 1).first.to_s)
+ end
+
+ def test_BackTrack_patscan_mis_right_is_ok
+ assert_equal("13:7:tgcacgg", @seq.patscan("tgcacgA", 0, 1).first.to_s)
+ end
+
+ def test_BackTrack_patscan_ins_left_is_ok
+ assert_equal("0:7:tacgatg", @seq.patscan("Atacgatg", 0, 0, 1).first.to_s)
+ end
+
+ def test_BackTrack_patscan_ins_right_is_ok
+ assert_equal("13:7:tgcacgg", @seq.patscan("tgcacggA", 0, 0, 1).first.to_s)
+ end
+
+ def test_BackTrack_patscan_del_left_is_ok
+ assert_equal("0:7:tacgatg", @seq.patscan("acgatg", 0, 0, 0, 1).first.to_s)
+ end
+
+ def test_BackTrack_patscan_del_right_is_ok
+ assert_equal("12:8:atgcacgg", @seq.patscan("tgcacgg", 0, 0, 0, 1).first.to_s)
end
- def test_BackTrack_patscan
-# assert_equal("0:4:tacg", @seq.patscan("TACG").first.to_s)
+ def test_BackTrack_patscan_ambiguity_mis_ins_del_all_ok
+ assert_equal("0:20:tacgatgctagcatgcacgg", @seq.patscan("tacatgcNagGatgcCacgg", 0, 1, 1, 1).first.to_s)
end
end