/// <summary> /// Gets the expected error message for invalid sequence type. /// </summary> /// <param name="nodeName">xml node</param> /// <param name="sequenceType">invalid sequence type.</param> /// <returns>Returns expected error message</returns> private string GetExpectedErrorMeesageWithInvalidSequenceType(string nodeName, InvalidSequenceType sequenceType) { string expectedErrorMessage = string.Empty; switch (sequenceType) { case InvalidSequenceType.SequenceWithInvalidChars: expectedErrorMessage = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.EmptySequenceErrorMessage); break; case InvalidSequenceType.InvalidSequence: expectedErrorMessage = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.InvalidSequenceErrorMessage); break; case InvalidSequenceType.SequenceWithUnicodeChars: expectedErrorMessage = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.UnicodeSequenceErrorMessage); break; case InvalidSequenceType.SequenceWithSpaces: expectedErrorMessage = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.SequenceWithSpaceErrorMessage); break; case InvalidSequenceType.AlphabetMap: expectedErrorMessage = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.InvalidAlphabetErrorMessage); break; default: expectedErrorMessage = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedErrorMessage); break; } return expectedErrorMessage; }
/// <summary> /// Gets the input file name for a given invalid sequence type. /// </summary> /// <param name="nodeName">xml node.</param> /// <param name="invalidSequenceType"></param> /// <returns>Returns input file name.</returns> private string GetInputFileNameWithInvalidType(string nodeName, InvalidSequenceType invalidSequenceType) { string invalidFilePath = string.Empty; switch (invalidSequenceType) { case InvalidSequenceType.SequenceWithSpecialChars: invalidFilePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.InvalidFilePathNode1); break; case InvalidSequenceType.EmptySequence: invalidFilePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.EmptyFilePath1); break; case InvalidSequenceType.SequenceWithSpaces: invalidFilePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.SpacesFilePath1); break; case InvalidSequenceType.SequenceWithGap: invalidFilePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.GapFilePath1); break; case InvalidSequenceType.SequenceWithUnicodeChars: invalidFilePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.UnicodeFilePath1); break; default: break; } return invalidFilePath; }
private void InValidateSmithWatermanAlignmentWithInvalidSequence(string nodeName, bool isTextFile, InvalidSequenceType invalidSequenceType, AlignParameters additionalParameter, AlignmentType alignType, InvalidSequenceType sequenceType) { IAlphabet alphabet = Utility.GetAlphabet(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.AlphabetNameNode)); Exception actualException = null; Sequence aInput = null; Sequence bInput = null; if (isTextFile) { // Read the xml file for getting both the files for aligning. string filepath = this.GetInputFileNameWithInvalidType(nodeName, invalidSequenceType); // Create input sequence for sequence string in different cases. try { // Parse the files and get the sequence. IEnumerable<ISequence> seqs = null; var parser = new FastAParser(); seqs = parser.Parse(filepath); aInput = new Sequence(alphabet, new string(seqs.ElementAt(0).Select(a => (char) a).ToArray())); } catch (Exception ex) { actualException = ex; } } else { string originalSequence = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.InvalidSequence1); // Create input sequence for sequence string in different cases. try { aInput = new Sequence(alphabet, originalSequence); } catch (ArgumentException ex) { actualException = ex; } } if (actualException == null) { bInput = aInput; // Create similarity matrix object for a given file. string blosumFilePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.BlosumFilePathNode); var sm = new SimilarityMatrix(new StreamReader(blosumFilePath)); int gapOpenCost = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.GapOpenCostNode), null); int gapExtensionCost = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.GapExtensionCostNode), null); // Create SmithWatermanAligner instance and set its values. var smithWatermanObj = new SmithWatermanAligner(); if (additionalParameter != AlignParameters.AllParam) { smithWatermanObj.SimilarityMatrix = sm; smithWatermanObj.GapOpenCost = gapOpenCost; smithWatermanObj.GapExtensionCost = gapExtensionCost; } // Align the input sequences and catch the exception. switch (additionalParameter) { case AlignParameters.AlignList: switch (alignType) { case AlignmentType.Align: try { smithWatermanObj.Align(new List<ISequence> {aInput, bInput}); } catch (ArgumentException ex) { actualException = ex; } break; default: try { smithWatermanObj.AlignSimple(new List<ISequence> {aInput, bInput}); } catch (ArgumentException ex) { actualException = ex; } break; } break; case AlignParameters.AlignTwo: switch (alignType) { case AlignmentType.Align: try { smithWatermanObj.Align(aInput, bInput); } catch (ArgumentException ex) { actualException = ex; } break; default: try { smithWatermanObj.AlignSimple(aInput, bInput); } catch (ArgumentException ex) { actualException = ex; } break; } break; case AlignParameters.AllParam: switch (alignType) { case AlignmentType.Align: try { smithWatermanObj.Align(sm, gapOpenCost, gapExtensionCost, aInput, bInput); } catch (ArgumentException ex) { actualException = ex; } break; default: try { smithWatermanObj.AlignSimple(sm, gapOpenCost, aInput, bInput); } catch (ArgumentException ex) { actualException = ex; } break; } break; default: break; } } // Validate Error messages for Invalid Sequence types. string expectedErrorMessage = this.GetExpectedErrorMeesageWithInvalidSequenceType(nodeName, sequenceType); Assert.AreEqual(expectedErrorMessage, actualException.Message); ApplicationLog.WriteLine(string.Concat( "SmithWatermanAligner P2 : Expected Error message is thrown ", expectedErrorMessage)); }