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)
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