]> git.donarmstrong.com Git - biopieces.git/commitdiff
worked on unit tests for sam.rb
authormartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Wed, 24 Aug 2011 20:54:33 +0000 (20:54 +0000)
committermartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Wed, 24 Aug 2011 20:54:33 +0000 (20:54 +0000)
git-svn-id: http://biopieces.googlecode.com/svn/trunk@1497 74ccb610-7750-0410-82ae-013aeee3265d

code_ruby/lib/maasha/sam.rb
code_ruby/test/maasha/test_sam.rb

index 2a3e5868d36aed6ee0c8fa85ef1b249f6dd0842d..92b8d95bf2d9cfccb14c1b290ed3b040c5b7347e 100644 (file)
@@ -313,6 +313,11 @@ class Sam < Filesys
   def check_cigar(cigar, seq)
     raise SamError, "Bad cigar: #{cigar}" unless cigar =~ /^(\*|([0-9]+[MIDNSHPX=])+)$/
 
+    # Check cigar hard clipping only at ends.
+    if cigar.gsub(/^[0-9]+H|[0-9]+H$/, "").match('H')
+      raise SamError, "Bad cigar with internal H: #{cigar}"
+    end
+
     # Check cigar length matches sequence length.
     unless cigar == '*' or seq == '*'
       cigar_len = 0
index cb24b467db6971d6fc3cbcd01e40d80a33590057..c18958522cb0be1b14342b317eff53dc3e9c3a26 100755 (executable)
@@ -359,6 +359,29 @@ class SamTest < Test::Unit::TestCase
     assert_nothing_raised { sam.each }
   end
 
+  def test_Sam_each_with_bad_cigar_hard_clip_raises
+    sam = Sam.new(StringIO.new("*\t*\t*\t*\t*\t1M1H1M\t*\t*\t\*\tAAA\t*\n"))
+    assert_raise(SamError) { sam.each }
+
+    sam = Sam.new(StringIO.new("*\t*\t*\t*\t*\t1H1M1H1M\t*\t*\t\*\tAAA\t*\n"))
+    assert_raise(SamError) { sam.each }
+
+    sam = Sam.new(StringIO.new("*\t*\t*\t*\t*\t1M1H1M1H\t*\t*\t\*\tAAA\t*\n"))
+    assert_raise(SamError) { sam.each }
+  end
+
+  def test_Sam_each_with_ok_cigar_hard_clip_dont_raise
+    sam = Sam.new(StringIO.new("*\t*\t*\t*\t*\t1H1M\t*\t*\t\*\tA\t*\n"))
+    assert_nothing_raised { sam.each }
+
+    sam = Sam.new(StringIO.new("*\t*\t*\t*\t*\t1M1H\t*\t*\t\*\tA\t*\n"))
+    assert_nothing_raised { sam.each }
+
+    sam = Sam.new(StringIO.new("*\t*\t*\t*\t*\t1H1M1H\t*\t*\t\*\tA\t*\n"))
+    assert_nothing_raised { sam.each }
+    #assert_raise(SamError) { sam.each }
+  end
+
   def test_Sam_each_with_bad_cigar_length_raise
     sam = Sam.new(StringIO.new("*\t*\t*\t*\t*\t6M\t*\t*\t\*\tAAAAA\t*\n"))
     assert_raise(SamError) { sam.each }