]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_ruby/test/maasha/test_backtrack.rb
added requirement of RubyInline
[biopieces.git] / code_ruby / test / maasha / test_backtrack.rb
index 2c271aaf9394aa53ff7a47621c2a6fd8bd63431e..b2bc7f7067cac626fa499c0a35bb9fd1b08130e7 100644 (file)
@@ -27,12 +27,12 @@ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
 
 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
@@ -42,37 +42,102 @@ class BackTrackTest < Test::Unit::TestCase
   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