From c96d5bccecf2141a208af8f58df1bcb2d007edfa Mon Sep 17 00:00:00 2001 From: martinahansen Date: Mon, 11 Mar 2013 06:52:14 +0000 Subject: [PATCH] added [] og []= to seq.rb git-svn-id: http://biopieces.googlecode.com/svn/trunk@2124 74ccb610-7750-0410-82ae-013aeee3265d --- code_ruby/lib/maasha/seq.rb | 19 +++++++++++++ code_ruby/test/maasha/test_seq.rb | 46 ++++++++++++++++++++++++++----- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/code_ruby/lib/maasha/seq.rb b/code_ruby/lib/maasha/seq.rb index f76466f..91e7929 100644 --- a/code_ruby/lib/maasha/seq.rb +++ b/code_ruby/lib/maasha/seq.rb @@ -427,6 +427,25 @@ class Seq self end + # Index method for Seq objects. + def [](*args) + entry = Seq.new + entry.seq_name = self.seq_name + entry.seq = self.seq[*args] + entry.type = self.type + entry.qual = self.qual[*args] unless self.qual.nil? + + entry + end + + # Index assignment method for Seq objects. + def []=(*args, entry) + self.seq[*args] = entry.seq[*args] + self.qual[*args] = entry.qual[*args] unless self.qual.nil? + + self + end + # Method that returns a subsequence of from a given start position # and of a given length. def subseq(start, length = self.length - start) diff --git a/code_ruby/test/maasha/test_seq.rb b/code_ruby/test/maasha/test_seq.rb index b3bdd79..a6a5cd7 100755 --- a/code_ruby/test/maasha/test_seq.rb +++ b/code_ruby/test/maasha/test_seq.rb @@ -373,16 +373,48 @@ class TestSeq < Test::Unit::TestCase 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("test", "atcg", :dna, "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 + + test "#[] without qual returns correctly" do + entry = Seq.new("test", "atcg") + + e = entry[2] - fail + assert_equal("test", e.seq_name) + assert_equal("c", e.seq) + assert_nil(e.qual) + assert_equal("atcg", entry.seq) end - test "[]= returns correctly" do - fail + test "[]= with qual returns correctly" do + entry = Seq.new("test", "atcg", :dna, "FGHI") + + entry[0] = Seq.new("foo", "T", :dna, "I") + + assert_equal("test", entry.seq_name) + assert_equal("Ttcg", entry.seq) + assert_equal(:dna, entry.type) + assert_equal("IGHI", entry.qual) + end + + test "[]= without qual returns correctly" do + entry = Seq.new("test", "atcg") + + entry[0] = Seq.new("foo", "T") + + assert_equal("test", entry.seq_name) + assert_equal("Ttcg", entry.seq) end test "#subseq with start < 0 raises" do -- 2.39.2