From cd42ff6de25b58c553b37f7b4bff9cb4afc3db07 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Wed, 24 Aug 2011 20:54:33 +0000 Subject: [PATCH] worked on unit tests for sam.rb git-svn-id: http://biopieces.googlecode.com/svn/trunk@1497 74ccb610-7750-0410-82ae-013aeee3265d --- code_ruby/lib/maasha/sam.rb | 5 +++++ code_ruby/test/maasha/test_sam.rb | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/code_ruby/lib/maasha/sam.rb b/code_ruby/lib/maasha/sam.rb index 2a3e586..92b8d95 100644 --- a/code_ruby/lib/maasha/sam.rb +++ b/code_ruby/lib/maasha/sam.rb @@ -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 diff --git a/code_ruby/test/maasha/test_sam.rb b/code_ruby/test/maasha/test_sam.rb index cb24b46..c189585 100755 --- a/code_ruby/test/maasha/test_sam.rb +++ b/code_ruby/test/maasha/test_sam.rb @@ -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 } -- 2.39.2