示例#1
0
        /// <summary>
        /// Creates a dna derived sequence after adding and removing few items from original sequence.
        /// Validates its updated items against expected updated items.
        /// </summary>
        /// <param name="nodeName">alphabet xml node.</param>
        private void ValidateDerivedSequenceGetUpdatedItems(string nodeName)
        {
            // Get input and expected values from xml
            string expectedSequence = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.ExpectedSequence);
            string alphabetName = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.AlphabetNameNode);
            string removeRange = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.RemoveRange);
            string addSequence = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.AddSequence);
            string derivedSequence = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.DerivedSequence);
            string updatedItems = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.UpdatedItemList);
            string updatedIndices = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.UpdatedItemsIndex);
            string updatedTypes = _utilityObj._xmlUtil.GetTextValue(
                nodeName, Constants.UpdatedTypeList);
            IAlphabet alphabet = Utility.GetAlphabet(alphabetName);

            // Create derived Sequence
            DerivedSequence derSequence = CreateDerivedSequence(
                alphabet, expectedSequence, addSequence, removeRange);

            string[] updatedIndexList = updatedIndices.Split(',');
            string[] updatedTypesList = updatedTypes.Split(',');
            Assert.AreEqual(updatedTypesList.Length, updatedIndexList.Length);

            // Validate derived Sequence.
            Assert.AreEqual(derivedSequence, derSequence.ToString());

            // Validate GetUpdatedItems
            IList <IndexedItem <UpdatedSequenceItem> > actualUpdatedItemList =
                derSequence.GetUpdatedItems();

            Assert.AreEqual(updatedIndexList.Length, actualUpdatedItemList.Count);
            for (int index = 0; index < actualUpdatedItemList.Count; index++)
            {
                Assert.AreEqual(updatedIndexList[index],
                                actualUpdatedItemList[index].Index.ToString((IFormatProvider)null));
                Assert.AreEqual(updatedItems[index].ToString(),
                                actualUpdatedItemList[index].Item.SequenceItem.Symbol.ToString((IFormatProvider)null));
                Assert.AreEqual(updatedTypesList[index],
                                actualUpdatedItemList[index].Item.Type.ToString());
            }

            Console.WriteLine(
                "DerivedSequenceBvtTestCases:Validation of GetUpdatedItems() of derived sequence completed successfully");
            ApplicationLog.WriteLine(
                "DerivedSequenceBvtTestCases:Validation of GetUpdatedItems() of derived sequence completed successfully");
        }
示例#2
0
        public void ValidateDerivedValidSequenceRemoveGetUpdatedItems()
        {
            // Create sequence item and add the same to the derived sequence and validate on removing
            ISequence       seqObj     = new Sequence(Alphabets.DNA, "ACTCT");
            ISequence       tempObj    = new Sequence(Alphabets.DNA, "GGG");
            ISequenceItem   seqItemObj = tempObj[0];
            DerivedSequence deriSeqObj = new DerivedSequence(seqObj);

            deriSeqObj.Add(seqItemObj);
            deriSeqObj.Remove(seqItemObj);
            IList <IndexedItem <UpdatedSequenceItem> > updateItems = deriSeqObj.GetUpdatedItems();

            Assert.AreEqual(0, updateItems.Count);
            ApplicationLog.WriteLine(
                "DerivedSequenceP2TestCases : Successfully validated the GetUpdatedItems() method to be zero after removal");
            Console.WriteLine(
                "DerivedSequenceP2TestCases : Successfully validated the GetUpdatedItems() method to be zero after removal");
        }
示例#3
0
        public void TestDerivedSequence()
        {
            Sequence        seq    = new Sequence(Alphabets.RNA, "ACUGUA");
            DerivedSequence derSeq = new DerivedSequence(seq);

            derSeq.Insert(3, Alphabets.DNA.A);
            derSeq.RemoveAt(2);
            Assert.AreEqual(derSeq.ToString(), "ACAGUA");

            derSeq.Insert(3, Alphabets.DNA.A);
            Assert.AreEqual(derSeq.ToString(), "ACAAGUA");
            derSeq.RemoveAt(2);
            derSeq.RemoveAt(1);
            Assert.AreEqual(derSeq.ToString(), "AAGUA");
            derSeq.Insert(1, 'C');
            Assert.AreEqual(derSeq.ToString(), "ACAGUA");
            derSeq.Replace(0, 'C');
            Assert.AreEqual(derSeq.ToString(), "CCAGUA");
            derSeq.ReplaceRange(1, "UA");
            Assert.AreEqual(derSeq.ToString(), "CUAGUA");
            derSeq.InsertRange(derSeq.Count, "UUAA");
            Assert.AreEqual(derSeq.ToString(), "CUAGUAUUAA");
            derSeq.InsertRange(0, "UUAA");
            Assert.AreEqual(derSeq.ToString(), "UUAACUAGUAUUAA");

            seq    = new Sequence(Alphabets.DNA, "ACTGTA");
            derSeq = new DerivedSequence(seq);
            derSeq.RemoveAt(3);
            derSeq.Insert(3, Alphabets.DNA.A);
            Assert.AreEqual(derSeq.ToString(), "ACTATA");
            derSeq.InsertRange(derSeq.Count, "TTTT");
            derSeq.RemoveRange(6, 4);
            Assert.AreEqual(derSeq.ToString(), "ACTATA");
            derSeq.Insert(derSeq.Count, 'T');
            Assert.AreEqual(derSeq.ToString(), "ACTATAT");
            derSeq.Add(Alphabets.DNA.G);
            Assert.AreEqual(derSeq.ToString(), "ACTATATG");
            Assert.AreEqual(0, derSeq.IndexOf(Alphabets.DNA.A));
            Assert.IsTrue(derSeq.Contains(Alphabets.DNA.G));
            Assert.IsTrue(derSeq.Remove(Alphabets.DNA.C));
            Assert.AreEqual(derSeq.ToString(), "ATATATG");
            Assert.IsFalse(derSeq.Contains(Alphabets.DNA.C));
            Assert.IsFalse(derSeq.Remove(Alphabets.DNA.C));
            Assert.AreEqual(derSeq.Source.ToString(), "ACTGTA");
            derSeq.Clear();
            Assert.AreEqual(derSeq.Source.ToString(), derSeq.ToString());
            Assert.AreEqual(derSeq.Source.ToString(), "ACTGTA");

            seq    = new Sequence(Alphabets.DNA, "ACTGTA");
            derSeq = new DerivedSequence(seq);
            derSeq.RemoveAt(3);
            derSeq.Insert(3, Alphabets.DNA.A);
            IList <IndexedItem <UpdatedSequenceItem> > updatedItems = derSeq.GetUpdatedItems();

            Assert.AreEqual(updatedItems.Count, 2);
            Assert.AreEqual(updatedItems[0].Index, 3);
            Assert.AreEqual(updatedItems[0].Item.Type, UpdateType.Removed);
            Assert.AreEqual(updatedItems[1].Index, 4);
            Assert.AreEqual(updatedItems[1].Item.Type, UpdateType.Inserted);

            seq    = new Sequence(Alphabets.DNA, "ACGTATAT");
            derSeq = new DerivedSequence(seq);
            derSeq.RemoveAt(5);
            derSeq.RemoveAt(4);
            derSeq.RemoveAt(3);
            derSeq.RemoveAt(1);
            Assert.AreEqual(derSeq.ToString(), "AGAT");
            updatedItems = derSeq.GetUpdatedItems();
            Assert.AreEqual(updatedItems.Count, 4);
            Assert.AreEqual(updatedItems[0].Index, 1);
            Assert.AreEqual(updatedItems[0].Item.Type, UpdateType.Removed);
            Assert.AreSame(updatedItems[0].Item.SequenceItem, seq[1]);
            Assert.AreEqual(updatedItems[1].Index, 3);
            Assert.AreEqual(updatedItems[1].Item.Type, UpdateType.Removed);
            Assert.AreSame(updatedItems[1].Item.SequenceItem, seq[3]);
            Assert.AreEqual(updatedItems[2].Index, 4);
            Assert.AreEqual(updatedItems[2].Item.Type, UpdateType.Removed);
            Assert.AreSame(updatedItems[2].Item.SequenceItem, seq[4]);
            Assert.AreEqual(updatedItems[3].Index, 5);
            Assert.AreEqual(updatedItems[3].Item.Type, UpdateType.Removed);
            Assert.AreSame(updatedItems[3].Item.SequenceItem, seq[5]);

            seq    = new Sequence(Alphabets.DNA, "ACGTATAT");
            derSeq = new DerivedSequence(seq);
            derSeq.RemoveRange(1, 4);
            Assert.AreEqual(derSeq.ToString(), "ATAT");

            seq    = new Sequence(Alphabets.DNA, "ACGTATAT");
            derSeq = new DerivedSequence(seq);
            derSeq.RemoveAt(1);
            derSeq.RemoveAt(2);
            derSeq.RemoveAt(5);
            derSeq.Insert(3, 'A');
            updatedItems = derSeq.GetUpdatedItems();
            Assert.AreEqual(updatedItems.Count, 4);
            Assert.AreEqual(updatedItems.Where(R => R.Item.Type == UpdateType.Removed).Count(), 3);
            Assert.AreEqual(updatedItems.Where(R => R.Item.Type == UpdateType.Inserted).Count(), 1);

            #region Test - IndexOfNonGap and LastIndexOfNonGap
            seq    = new Sequence(Alphabets.RNA, "--ACUGUA-");
            derSeq = new DerivedSequence(seq);
            Assert.AreEqual(seq.IndexOfNonGap(), 2);
            Assert.AreEqual(seq.IndexOfNonGap(1), 2);
            Assert.AreEqual(seq.IndexOfNonGap(4), 4);
            Assert.AreEqual(seq.IndexOfNonGap(8), -1);
            Assert.AreEqual(seq.LastIndexOfNonGap(), 7);
            Assert.AreEqual(seq.LastIndexOfNonGap(seq.Count - 1), 7);
            Assert.AreEqual(seq.LastIndexOfNonGap(7), 7);
            Assert.AreEqual(seq.LastIndexOfNonGap(5), 5);

            Assert.AreEqual(seq.IndexOfNonGap(), derSeq.IndexOfNonGap());
            Assert.AreEqual(seq.IndexOfNonGap(1), derSeq.IndexOfNonGap(1));
            Assert.AreEqual(seq.IndexOfNonGap(4), derSeq.IndexOfNonGap(4));
            Assert.AreEqual(seq.IndexOfNonGap(8), derSeq.IndexOfNonGap(8));
            Assert.AreEqual(seq.LastIndexOfNonGap(), derSeq.LastIndexOfNonGap());
            Assert.AreEqual(seq.LastIndexOfNonGap(seq.Count - 1), derSeq.LastIndexOfNonGap(derSeq.Count - 1));
            Assert.AreEqual(seq.LastIndexOfNonGap(7), derSeq.LastIndexOfNonGap(7));
            Assert.AreEqual(seq.LastIndexOfNonGap(5), derSeq.LastIndexOfNonGap(5));
            #endregion Test - IndexOfNonGap and LastIndexOfNonGap

            seq    = new Sequence(Alphabets.RNA, "ACUGUA");
            derSeq = new DerivedSequence(seq);
            derSeq.Insert(3, new Nucleotide('A', "RNACHAR"));
            derSeq.RemoveAt(2);
            Assert.AreEqual(derSeq.ToString(), "ACAGUA");
            CompoundNucleotide cn = new CompoundNucleotide('M', "Compound");
            cn.Add(new Nucleotide('A', "Item A"), 30);
            cn.Add(new Nucleotide('C', "Item C"), 20);
            derSeq.Insert(3, cn);
            Assert.AreEqual(derSeq[2].Symbol, 'A');
            Assert.AreEqual(derSeq[2].Name, "RNACHAR");
            Assert.AreEqual(derSeq[3].Symbol, 'M');
        }