X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=code_ruby%2Ftest%2Fmaasha%2Ftest_seq.rb;h=e50271d647e1b253798f06a1aa8864d4cc0dcbe5;hb=a30677c14f1738f6a76e8c12f2e732cdef9958d6;hp=b3bdd790baa16546e74d655e79dd1ec06f3d57eb;hpb=128ec42589b930642cf8863baa8a844dc5fd2c3f;p=biopieces.git diff --git a/code_ruby/test/maasha/test_seq.rb b/code_ruby/test/maasha/test_seq.rb index b3bdd79..e50271d 100755 --- a/code_ruby/test/maasha/test_seq.rb +++ b/code_ruby/test/maasha/test_seq.rb @@ -34,6 +34,10 @@ class TestSeq < Test::Unit::TestCase @entry = Seq.new end + test "Seq.new with differnet length SEQ and SCORES raises" do + assert_raise(SeqError) { Seq.new(seq_name: "test", seq: "ATCG", type: :dna, qual: "hhh") } + end + test "Seq.new_bp returns correctly" do record = {:SEQ_NAME => "test", :SEQ => "ATCG", :SEQ_TYPE => :dna, :SCORES => "hhhh"} seq = Seq.new_bp(record) @@ -214,7 +218,7 @@ class TestSeq < Test::Unit::TestCase end test "#to_fasta wraps correctly" do - entry = Seq.new("test", "ATCG") + entry = Seq.new(seq_name: "test", seq: "ATCG") assert_equal(">test\nAT\nCG\n", entry.to_fasta(2)) end @@ -226,12 +230,12 @@ class TestSeq < Test::Unit::TestCase end test "#to_key with bad residue raises" do - entry = Seq.new("test", "AUCG") + entry = Seq.new(seq_name: "test", seq: "AUCG") assert_raise(SeqError) { entry.to_key } end test "#to_key returns correctly" do - entry = Seq.new("test", "ATCG") + entry = Seq.new(seq_name: "test", seq: "ATCG") assert_equal(54, entry.to_key) end @@ -298,11 +302,24 @@ class TestSeq < Test::Unit::TestCase assert_equal("UAGCuagc", @entry.complement!.seq) end + test "#hamming_distance returns correctly" do + seq1 = Seq.new(seq: "ATCG") + seq2 = Seq.new(seq: "atgg") + assert_equal(1, seq1.hamming_distance(seq2)) + end + + test "#hamming_distance with ambiguity codes return correctly" do + seq1 = Seq.new(seq: "ATCG") + seq2 = Seq.new(seq: "atng") - test "#hamming distance returns correctly" do - seq1 = Seq.new("test1", "ATCG") - seq2 = Seq.new("test2", "atgg") assert_equal(1, seq1.hamming_distance(seq2)) + assert_equal(0, seq1.hamming_distance(seq2, ambiguity: true)) + end + + test "#edit_distance returns correctly" do + seq1 = Seq.new(seq: "ATCG") + seq2 = Seq.new(seq: "tgncg") + assert_equal(2, seq1.edit_distance(seq2)) end test "#generate with length < 1 raises" do @@ -333,34 +350,50 @@ class TestSeq < Test::Unit::TestCase assert_not_equal(@entry.seq, @entry.shuffle!.seq) end + test "#+ without qual returns correctly" do + entry = Seq.new(seq_name: "test1", seq: "at") + Seq.new(seq_name: "test2", seq: "cg") + assert_nil(entry.seq_name) + assert_equal("atcg", entry.seq) + assert_nil(entry.type) + assert_nil(entry.qual) + end + + test "#+ with qual returns correctly" do + entry = Seq.new(seq_name: "test1", seq: "at", type: :dna, qual: "II") + Seq.new(seq_name: "test2", seq: "cg", type: :dna, qual: "JJ") + assert_nil(entry.seq_name) + assert_equal("atcg", entry.seq) + assert_equal(:dna, entry.type) + assert_equal("IIJJ", entry.qual) + end + test "#<< with different types raises" do @entry.seq = "atcg" - assert_raise(SeqError) { @entry << Seq.new("test", "atcg", :dna) } + assert_raise(SeqError) { @entry << Seq.new(seq_name: "test", seq: "atcg", type: :dna) } end test "#<< with missing qual in one entry raises" do @entry.seq = "atcg" @entry.type = :dna - assert_raise(SeqError) { @entry << Seq.new("test", "atcg", :dna, "IIII") } + assert_raise(SeqError) { @entry << Seq.new(seq_name: "test", seq: "atcg", type: :dna, qual: "IIII") } @entry.qual = "IIII" - assert_raise(SeqError) { @entry << Seq.new("test", "atcg", :dna) } + assert_raise(SeqError) { @entry << Seq.new(seq_name: "test", seq: "atcg", type: :dna) } end test "#<< with nil qual in both entries dont raise" do @entry.seq = "atcg" - assert_nothing_raised { @entry << Seq.new("test", "atcg") } + assert_nothing_raised { @entry << Seq.new(seq_name: "test", seq: "atcg") } end test "#<< with qual in both entries dont raise" do @entry.seq = "atcg" @entry.type = :dna @entry.qual = "IIII" - assert_nothing_raised { @entry << Seq.new("test", "atcg", :dna, "IIII") } + assert_nothing_raised { @entry << Seq.new(seq_name: "test", seq: "atcg", type: :dna, qual: "IIII") } end test "#<< without qual returns correctly" do @entry.seq = "atcg" - @entry << Seq.new("test", "ATCG") + @entry << Seq.new(seq_name: "test", seq: "ATCG") assert_equal("atcgATCG", @entry.seq) end @@ -368,21 +401,53 @@ class TestSeq < Test::Unit::TestCase @entry.seq = "atcg" @entry.type = :dna @entry.qual = "HHHH" - @entry << Seq.new("test", "ATCG", :dna, "IIII") + @entry << Seq.new(seq_name: "test", seq: "ATCG", type: :dna, qual: "IIII") assert_equal("atcgATCG", @entry.seq) assert_equal("HHHHIIII", @entry.qual) end - test "#[] returns correctly" do - @entry.seq = "atcg" - @entry.type = :dna - @entry.qual = "FGHI" + test "#[] with qual returns correctly" do + entry = Seq.new(seq_name: "test", seq: "atcg", type: :dna, qual: "FGHI") + + e = entry[2] + + assert_equal("test", e.seq_name) + assert_equal("c", e.seq) + assert_equal(:dna, e.type) + assert_equal("H", e.qual) + assert_equal("atcg", entry.seq) + assert_equal("FGHI", entry.qual) + end - fail + test "#[] without qual returns correctly" do + entry = Seq.new(seq_name: "test", seq: "atcg") + + e = entry[2] + + assert_equal("test", e.seq_name) + assert_equal("c", e.seq) + assert_nil(e.qual) + assert_equal("atcg", entry.seq) + end + + test "[]= with qual returns correctly" do + entry = Seq.new(seq_name: "test", seq: "atcg", type: :dna, qual: "FGHI") + + entry[0] = Seq.new(seq_name: "foo", seq: "T", type: :dna, qual: "I") + + assert_equal("test", entry.seq_name) + assert_equal("Ttcg", entry.seq) + assert_equal(:dna, entry.type) + assert_equal("IGHI", entry.qual) end - test "[]= returns correctly" do - fail + test "[]= without qual returns correctly" do + entry = Seq.new(seq_name: "test", seq: "atcg") + + entry[0] = Seq.new(seq_name: "foo", seq: "T") + + assert_equal("test", entry.seq_name) + assert_equal("Ttcg", entry.seq) end test "#subseq with start < 0 raises" do @@ -498,26 +563,6 @@ class TestSeq < Test::Unit::TestCase assert_equal(0, @entry.composition["X"]) end - test "#homopol_max returns 0 with empty sequence" do - @entry.seq = "" - assert_equal(0, @entry.homopol_max) - end - - test "#homopol_max returns 0 with nil sequence" do - @entry.seq = nil - assert_equal(0, @entry.homopol_max) - end - - test "#homopol_max returns 0 when not found" do - @entry.seq = "AtTcCcGggGnnNnn" - assert_equal(0, @entry.homopol_max(6)) - end - - test "#homopol_max returns correctly" do - @entry.seq = "AtTcCcGggGnnNnn" - assert_equal(5, @entry.homopol_max(3)) - end - test "#hard_mask returns correctly" do @entry.seq = "--AAAANn" assert_equal(33.33, @entry.hard_mask)