public void SparseSequenceClone() { SparseSequence sparseSeq = new SparseSequence(Alphabets.DNA); sparseSeq.Count = 50; sparseSeq[0] = Alphabets.DNA.C; sparseSeq[5] = Alphabets.DNA.G; sparseSeq[30] = Alphabets.DNA.C; sparseSeq[44] = Alphabets.DNA.A; sparseSeq[45] = new Nucleotide('A', "Nucleotide A"); CompoundNucleotide cn = new CompoundNucleotide('M', "Compound"); cn.Add(new Nucleotide('A', "Item A"), 30); cn.Add(new Nucleotide('C', "Item C"), 20); sparseSeq[46] = cn; Assert.AreEqual(sparseSeq.Count, 50); Assert.AreEqual(sparseSeq.Alphabet, Alphabets.DNA); Assert.AreSame(sparseSeq[0], Alphabets.DNA.C); Assert.AreSame(sparseSeq[5], Alphabets.DNA.G); Assert.AreSame(sparseSeq[30], Alphabets.DNA.C); Assert.AreSame(sparseSeq[44], Alphabets.DNA.A); Assert.AreEqual(sparseSeq[45].Symbol, 'A'); Assert.AreSame(sparseSeq[46], cn); Assert.AreNotSame(sparseSeq[46], Alphabets.DNA.AC); for (int i = 0; i < sparseSeq.Count; i++) { if (i != 0 && i != 5 && i != 30 && i != 44 && i != 45 && i != 46) { Assert.IsNull(sparseSeq[i]); } } SparseSequence sparseSeqClone = sparseSeq.Clone(); Assert.AreEqual(sparseSeqClone.Count, 50); Assert.AreEqual(sparseSeqClone.Alphabet, Alphabets.DNA); Assert.AreSame(sparseSeqClone[0], Alphabets.DNA.C); Assert.AreSame(sparseSeqClone[5], Alphabets.DNA.G); Assert.AreSame(sparseSeqClone[30], Alphabets.DNA.C); Assert.AreSame(sparseSeqClone[44], Alphabets.DNA.A); Assert.AreNotSame(sparseSeqClone[46], cn); Assert.AreNotSame(sparseSeqClone[46], Alphabets.DNA.AC); Assert.AreEqual(sparseSeqClone[46].Symbol, 'M'); cn = sparseSeqClone[46] as CompoundNucleotide; IList <ISequenceItem> sequenceItems = cn.SequenceItems; Assert.AreEqual(sequenceItems.Count, 2); Assert.IsTrue(sequenceItems.First(I => I.Symbol == 'A') != null); Assert.IsTrue(sequenceItems.First(I => I.Symbol == 'C') != null); for (int i = 0; i < sparseSeqClone.Count; i++) { if (i != 0 && i != 5 && i != 30 && i != 44 && i != 45 && i != 46) { Assert.IsNull(sparseSeqClone[i]); } } }
/// <summary> /// Creates a sparse sequence and inserts sequence items of alphabet. /// Creates copy of sparse sequence object using clone() method. /// and Validates if copy of sparse sequence is as expected. /// </summary> /// <param name="alphabet">alphabet instance.</param> private void ValidateSparseSequenceCopy(IAlphabet alphabet) { SparseSequence sparseSequence = CreateSparseSequence(alphabet, 15); SparseSequence sparseSeqCopy = sparseSequence.Clone(); // Retrieve all stored sequence items and validate Sparse Sequence int retrieveIndex = 15; foreach (ISequenceItem item in alphabet) { // Validate new added items Assert.IsTrue(sparseSeqCopy.Contains(item)); Assert.AreEqual(sparseSeqCopy.IndexOf(item), retrieveIndex); Assert.AreEqual(item, sparseSeqCopy[retrieveIndex]); Assert.AreEqual(item.Symbol, sparseSeqCopy[retrieveIndex].Symbol); retrieveIndex++; } Console.WriteLine( "SparseSequenceBVT: Validation of copy of sparse sequence object is completed"); ApplicationLog.WriteLine( "SparseSequenceBVT: Validation of copy of sparse sequence object is completed"); }