PageRenderTime 27ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/Tests/Bio.TestAutomation/SparseSequenceBvtTestCases.cs

#
C# | 489 lines | 333 code | 75 blank | 81 comment | 5 complexity | b542b69380271346aece8bc1dcb703d2 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, CPL-1.0
  1. // *****************************************************************
  2. // Copyright (c) Microsoft. All rights reserved.
  3. // This code is licensed under the Apache License, Version 2.0.
  4. // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
  5. // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
  6. // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
  7. // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
  8. // *****************************************************************
  9. /****************************************************************************
  10. * SparseSequenceBVTTestCases.cs
  11. *
  12. * This file contains the Sparse Sequence BVT test case validation.
  13. *
  14. ******************************************************************************/
  15. using System;
  16. using System.Text;
  17. using System.Linq;
  18. using System.Collections.Generic;
  19. using Bio;
  20. using Bio.TestAutomation.Util;
  21. using Bio.Util.Logging;
  22. using Microsoft.VisualStudio.TestTools.UnitTesting;
  23. using System.Runtime.Serialization.Formatters.Binary;
  24. using System.IO;
  25. using System.Runtime.Serialization;
  26. namespace Bio.TestAutomation
  27. {
  28. /// <summary>
  29. /// Test Automation code for MBF Sparse Sequence BVT level validations
  30. /// </summary>
  31. [TestClass]
  32. public class SparseSequenceBvtTestCases
  33. {
  34. #region Global Variables
  35. ASCIIEncoding encodingObj = new ASCIIEncoding();
  36. #endregion Global Variables
  37. #region Constructor
  38. /// <summary>
  39. /// Static constructor to open log and make other settings needed for test
  40. /// </summary>
  41. static SparseSequenceBvtTestCases()
  42. {
  43. Trace.Set(Trace.SeqWarnings);
  44. if (!ApplicationLog.Ready)
  45. {
  46. ApplicationLog.Open("bio.automation.log");
  47. }
  48. }
  49. #endregion Constructor
  50. #region Sparse Sequence BVT Test Cases
  51. /// <summary>
  52. /// Creates sparse sequence object and validates the constructor.
  53. /// Validates if all items are present in sparse sequence instance.
  54. /// </summary>
  55. [TestMethod]
  56. [Priority(0)]
  57. [TestCategory("Priority0")]
  58. public void ValidateDnaSparseSequenceConstAlp()
  59. {
  60. SparseSequence sparseSeq = new SparseSequence(Alphabets.DNA);
  61. Assert.IsNotNull(sparseSeq);
  62. Assert.AreEqual(0, sparseSeq.Count);
  63. Assert.IsNotNull(sparseSeq.Statistics);
  64. Console.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp) constructor is completed");
  65. ApplicationLog.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp) constructor is completed");
  66. }
  67. /// <summary>
  68. /// Creates sparse sequence object and validates the constructor with Index.
  69. /// Validates if all items are present in sparse sequence instance.
  70. /// </summary>
  71. [TestMethod]
  72. [Priority(0)]
  73. [TestCategory("Priority0")]
  74. public void ValidateDnaSparseSequenceConstAlpIndex()
  75. {
  76. SparseSequence sparseSeq = new SparseSequence(Alphabets.DNA, 0);
  77. Assert.IsNotNull(sparseSeq);
  78. Assert.AreEqual(0, sparseSeq.Count);
  79. Assert.IsNotNull(sparseSeq.Statistics);
  80. Console.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp, index) constructor is completed");
  81. ApplicationLog.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp, index) constructor is completed");
  82. }
  83. /// <summary>
  84. /// Creates sparse sequence object and validates the constructor with Index, byte.
  85. /// Validates if all items are present in sparse sequence instance.
  86. /// </summary>
  87. [TestMethod]
  88. [Priority(0)]
  89. [TestCategory("Priority0")]
  90. public void ValidateDnaSparseSequenceConstAlpIndexByte()
  91. {
  92. byte[] byteArrayObj = encodingObj.GetBytes("AGCT");
  93. SparseSequence sparseSeq = new SparseSequence(Alphabets.DNA, 1, byteArrayObj[0]);
  94. Assert.IsNotNull(sparseSeq);
  95. Assert.IsNotNull(sparseSeq.Statistics);
  96. SequenceStatistics seqStatObj = sparseSeq.Statistics;
  97. Assert.AreEqual(1, seqStatObj.GetCount('A'));
  98. Console.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp, index, byte) constructor is completed");
  99. ApplicationLog.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp, index, byte) constructor is completed");
  100. }
  101. /// <summary>
  102. /// Creates sparse sequence object and validates the constructor with Index, byte.
  103. /// Validates if all items are present in sparse sequence instance.
  104. /// </summary>
  105. [TestMethod]
  106. [Priority(0)]
  107. [TestCategory("Priority0")]
  108. public void ValidateDnaSparseSequenceConstAlpIndexByteList()
  109. {
  110. byte[] byteArrayObj = encodingObj.GetBytes("AGCT");
  111. IEnumerable<byte> seqItems =
  112. new List<Byte>() { byteArrayObj[0], byteArrayObj[1], byteArrayObj[2], byteArrayObj[3] };
  113. SparseSequence sparseSeq = new SparseSequence(Alphabets.DNA, 4, seqItems);
  114. Assert.IsNotNull(sparseSeq);
  115. Assert.IsNotNull(sparseSeq.Statistics);
  116. Assert.AreEqual(8, sparseSeq.Count);
  117. SequenceStatistics seqStatObj = sparseSeq.Statistics;
  118. Assert.AreEqual(1, seqStatObj.GetCount('A'));
  119. Assert.AreEqual(1, seqStatObj.GetCount('G'));
  120. Assert.AreEqual(1, seqStatObj.GetCount('C'));
  121. Assert.AreEqual(1, seqStatObj.GetCount('T'));
  122. Console.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp, index, seq items) constructor is completed");
  123. ApplicationLog.WriteLine("SparseSequence BVT: Validation of SparseSequence(alp, index, seq items) constructor is completed");
  124. }
  125. /// <summary>
  126. /// Creates a sparse a sequence and inserts all sequence items of alphabet.
  127. /// Validates various properties present in the sparse class.
  128. /// </summary>
  129. [TestMethod]
  130. [Priority(0)]
  131. [TestCategory("Priority0")]
  132. public void ValidateDnaSparseSequenceProperties()
  133. {
  134. IAlphabet alphabet = Alphabets.DNA;
  135. // Create sparse sequence object
  136. int insertPosition = 0;
  137. // Create sequence item list
  138. IList<byte> sequenceList = new List<byte>();
  139. foreach (byte item in alphabet)
  140. {
  141. sequenceList.Add(item);
  142. }
  143. // Store sequence item in sparse sequence object using list of sequence items
  144. SparseSequence sparseSequence =
  145. new SparseSequence(alphabet, insertPosition, sequenceList);
  146. //Validate all properties
  147. Assert.AreEqual(alphabet.Count + insertPosition, sparseSequence.Count);
  148. Assert.AreEqual(alphabet, sparseSequence.Alphabet);
  149. Assert.IsTrue(string.IsNullOrEmpty(sparseSequence.ID));
  150. Assert.IsNotNull(sparseSequence.Metadata);
  151. Assert.IsNotNull(sparseSequence.Statistics);
  152. Assert.IsNotNull(sparseSequence.GetKnownSequenceItems());
  153. Console.WriteLine(
  154. "SparseSequence BVT: Validation of all properties of sparse sequence instance is completed");
  155. ApplicationLog.WriteLine(
  156. "SparseSequence BVT: Validation of all properties of sparse sequence instance is completed");
  157. }
  158. /// <summary>
  159. /// Creates a sparse sequence and validates IndexOfNonGap method
  160. /// </summary>
  161. [TestMethod]
  162. [Priority(0)]
  163. [TestCategory("Priority0")]
  164. public void ValidateSparseSequenceIndexOfNonGap()
  165. {
  166. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 10);
  167. sparseSeqObj[8] = Alphabets.DNA.Gap;
  168. sparseSeqObj[9] = Alphabets.DNA.A;
  169. Assert.AreEqual(9, sparseSeqObj.IndexOfNonGap(8));
  170. Assert.AreEqual(9, sparseSeqObj.IndexOfNonGap(9));
  171. Console.WriteLine(
  172. "SparseSequenceBVT: Validation of IndexOfNonGap(startPos) method successfully completed");
  173. ApplicationLog.WriteLine(
  174. "SparseSequenceBVT: Validation of IndexOfNonGap(startPos) method successfully completed");
  175. }
  176. /// <summary>
  177. /// Creates a sparse sequence and validates LastIndexOfNonGap method
  178. /// </summary>
  179. [TestMethod]
  180. [Priority(0)]
  181. [TestCategory("Priority0")]
  182. public void ValidateSparseSequenceLastIndexOfNonGap()
  183. {
  184. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 10);
  185. sparseSeqObj[2] = Alphabets.DNA.Gap;
  186. sparseSeqObj[1] = Alphabets.DNA.A;
  187. Assert.AreEqual(1, sparseSeqObj.LastIndexOfNonGap(2));
  188. Assert.AreEqual(1, sparseSeqObj.LastIndexOfNonGap(1));
  189. Console.WriteLine(
  190. "SparseSequenceBVT: Validation of LastIndexOfNonGap() method successfully completed");
  191. ApplicationLog.WriteLine(
  192. "SparseSequenceBVT: Validation of LastIndexOfNonGap() method successfully completed");
  193. }
  194. /// <summary>
  195. /// Creates a sparse sequence and validates IndexOfNonGap method
  196. /// </summary>
  197. [TestMethod]
  198. [Priority(0)]
  199. [TestCategory("Priority0")]
  200. public void ValidateSparseSequenceIndexOfNonGapNull()
  201. {
  202. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 2);
  203. sparseSeqObj[0] = Alphabets.DNA.Gap;
  204. sparseSeqObj[1] = Alphabets.DNA.A;
  205. Assert.AreEqual(1, sparseSeqObj.IndexOfNonGap());
  206. Console.WriteLine(
  207. "SparseSequenceBVT: Validation of IndexOfNonGap() method successfully completed");
  208. ApplicationLog.WriteLine(
  209. "SparseSequenceBVT: Validation of IndexOfNonGap() method successfully completed");
  210. }
  211. /// <summary>
  212. /// Creates a sparse sequence and validates LastIndexOfNonGap method
  213. /// </summary>
  214. [TestMethod]
  215. [Priority(0)]
  216. [TestCategory("Priority0")]
  217. public void ValidateSparseSequenceLastIndexOfNonGapNull()
  218. {
  219. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 2);
  220. sparseSeqObj[1] = Alphabets.DNA.Gap;
  221. sparseSeqObj[0] = Alphabets.DNA.A;
  222. Assert.AreEqual(0, sparseSeqObj.LastIndexOfNonGap());
  223. Console.WriteLine(
  224. "SparseSequenceBVT: Validation of LastIndexOfNonGap() method successfully completed");
  225. ApplicationLog.WriteLine(
  226. "SparseSequenceBVT: Validation of LastIndexOfNonGap() method successfully completed");
  227. }
  228. /// <summary>
  229. /// Creates a sparse sequence and validates LastIndexOfNonGap method
  230. /// </summary>
  231. [TestMethod]
  232. [Priority(0)]
  233. [TestCategory("Priority0")]
  234. public void ValidateSparseSequenceGetReversedSequence()
  235. {
  236. byte[] byteArrayObj = encodingObj.GetBytes("ACGT");
  237. IEnumerable<byte> seqItems =
  238. new List<Byte>() { byteArrayObj[0], byteArrayObj[1], byteArrayObj[2], byteArrayObj[3] };
  239. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 0, seqItems);
  240. ISequence revSeqObj = sparseSeqObj.GetReversedSequence();
  241. byteArrayObj = encodingObj.GetBytes("TGCA");
  242. for (int i = 0; i < byteArrayObj.Length; i++)
  243. {
  244. Assert.AreEqual(byteArrayObj[i], revSeqObj[i]);
  245. }
  246. Console.WriteLine(
  247. "SparseSequenceBVT: Validation of GetReversedSequence() method successfully completed");
  248. ApplicationLog.WriteLine(
  249. "SparseSequenceBVT: Validation of GetReversedSequence() method successfully completed");
  250. }
  251. /// <summary>
  252. /// Creates a sparse sequence and validates GetReverseComplementedSequence method
  253. /// </summary>
  254. [TestMethod]
  255. [Priority(0)]
  256. [TestCategory("Priority0")]
  257. public void ValidateSparseSequenceGetReversedComplementedSequence()
  258. {
  259. byte[] byteArrayObj = encodingObj.GetBytes("ACGT");
  260. IEnumerable<byte> seqItems =
  261. new List<Byte>() { byteArrayObj[0], byteArrayObj[1], byteArrayObj[2], byteArrayObj[3] };
  262. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 0, seqItems);
  263. ISequence revSeqObj = sparseSeqObj.GetReverseComplementedSequence();
  264. for (int i = 0; i < byteArrayObj.Length; i++)
  265. {
  266. Assert.AreEqual(byteArrayObj[i], revSeqObj[i]);
  267. }
  268. Console.WriteLine(
  269. "SparseSequenceBVT: Validation of GetReverseComplementedSequence() method successfully completed");
  270. ApplicationLog.WriteLine(
  271. "SparseSequenceBVT: Validation of GetReverseComplementedSequence() method successfully completed");
  272. }
  273. /// <summary>
  274. /// Creates a sparse sequence and validates GetKnownSequenceItems method
  275. /// </summary>
  276. [TestMethod]
  277. [Priority(0)]
  278. [TestCategory("Priority0")]
  279. public void ValidateSparseSequenceGetKnownSequenceItems()
  280. {
  281. byte[] byteArrayObj = encodingObj.GetBytes("ACGT");
  282. IEnumerable<byte> seqItems =
  283. new List<Byte>() { byteArrayObj[0], byteArrayObj[1], byteArrayObj[2], byteArrayObj[3] };
  284. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 0, seqItems);
  285. IList<IndexedItem<byte>> revSeqObj = sparseSeqObj.GetKnownSequenceItems();
  286. long i = 0;
  287. foreach (IndexedItem<byte> by in revSeqObj)
  288. {
  289. Assert.AreEqual(i, by.Index);
  290. Assert.AreEqual(byteArrayObj[i], by.Item);
  291. i++;
  292. }
  293. Console.WriteLine(
  294. "SparseSequenceBVT: Validation of GetKnownSequenceItems() method successfully completed");
  295. ApplicationLog.WriteLine(
  296. "SparseSequenceBVT: Validation of GetKnownSequenceItems() method successfully completed");
  297. }
  298. /// <summary>
  299. /// Creates a sparse sequence and validates GetComplementedSequence method
  300. /// </summary>
  301. [TestMethod]
  302. [Priority(0)]
  303. [TestCategory("Priority0")]
  304. public void ValidateSparseSequenceGetComplementedSequence()
  305. {
  306. byte[] byteArrayObj = encodingObj.GetBytes("ACGT");
  307. IEnumerable<byte> seqItems =
  308. new List<Byte>() { byteArrayObj[0], byteArrayObj[1], byteArrayObj[2], byteArrayObj[3] };
  309. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 0, seqItems);
  310. ISequence revSeqObj = sparseSeqObj.GetComplementedSequence();
  311. byteArrayObj = encodingObj.GetBytes("TGCA");
  312. for (int i = 0; i < byteArrayObj.Length; i++)
  313. {
  314. Assert.AreEqual(byteArrayObj[i], revSeqObj[i]);
  315. }
  316. Console.WriteLine(
  317. "SparseSequenceBVT: Validation of GetComplementedSequence() method successfully completed");
  318. ApplicationLog.WriteLine(
  319. "SparseSequenceBVT: Validation of GetComplementedSequence() method successfully completed");
  320. }
  321. /// <summary>
  322. /// Creates a sparse sequence and validates GetSubSequence method
  323. /// </summary>
  324. [TestMethod]
  325. [Priority(0)]
  326. [TestCategory("Priority0")]
  327. public void ValidateSparseSequenceGetSubSequence()
  328. {
  329. List<byte> byteList = new List<byte>();
  330. byteList.Add(Alphabets.DNA.Gap);
  331. byteList.Add(Alphabets.DNA.G);
  332. byteList.Add(Alphabets.DNA.A);
  333. byteList.Add(Alphabets.DNA.Gap);
  334. byteList.Add(Alphabets.DNA.T);
  335. byteList.Add(Alphabets.DNA.C);
  336. byteList.Add(Alphabets.DNA.Gap);
  337. byteList.Add(Alphabets.DNA.Gap);
  338. SparseSequence sparseSeq = new SparseSequence(Alphabets.DNA, 0, byteList);
  339. ISequence result = sparseSeq.GetSubSequence(0, 3);
  340. Assert.AreEqual(3, result.Count);
  341. Assert.AreEqual(Alphabets.DNA.Gap, result[0]);
  342. Assert.AreEqual(Alphabets.DNA.G, result[1]);
  343. Assert.AreEqual(Alphabets.DNA.A, result[2]);
  344. result = sparseSeq.GetSubSequence(0, 0);
  345. Assert.AreEqual(0, result.Count);
  346. result = sparseSeq.GetSubSequence(3, 2);
  347. Assert.AreEqual(2, result.Count);
  348. Assert.AreEqual(Alphabets.DNA.Gap, result[0]);
  349. Assert.AreEqual(Alphabets.DNA.T, result[1]);
  350. Console.WriteLine(
  351. "SparseSequenceBVT: Validation of GetSubSequence() method successfully completed");
  352. ApplicationLog.WriteLine(
  353. "SparseSequenceBVT: Validation of GetSubSequence() method successfully completed");
  354. }
  355. /// <summary>
  356. /// Creates a sparse sequence and validates GetEnumerator method
  357. /// </summary>
  358. [TestMethod]
  359. [Priority(0)]
  360. [TestCategory("Priority0")]
  361. public void ValidateSparseSequenceGetEnumerator()
  362. {
  363. byte[] byteArrayObj = encodingObj.GetBytes("ACGT");
  364. IEnumerable<byte> seqItems =
  365. new List<Byte>() { byteArrayObj[0], byteArrayObj[1], byteArrayObj[2], byteArrayObj[3] };
  366. SparseSequence sparseSeqObj = new SparseSequence(Alphabets.DNA, 0, seqItems);
  367. IEnumerator<byte> seqObj = sparseSeqObj.GetEnumerator();
  368. int i = 0;
  369. while (seqObj.MoveNext())
  370. {
  371. Assert.AreEqual(byteArrayObj[i], seqObj.Current);
  372. i++;
  373. }
  374. i = 0;
  375. foreach (byte alp in sparseSeqObj)
  376. {
  377. Assert.AreEqual(byteArrayObj[i], alp);
  378. i++;
  379. }
  380. Console.WriteLine(
  381. "SparseSequenceBVT: Validation of GetEnumerator() method successfully completed");
  382. ApplicationLog.WriteLine(
  383. "SparseSequenceBVT: Validation of GetEnumerator() method successfully completed");
  384. }
  385. /// <summary>
  386. /// Validate by passing indexer value for read only indexer.
  387. /// Input Data : Valid Alphabet
  388. /// Output Data : Successfully set
  389. /// </summary>
  390. [TestMethod]
  391. [Priority(0)]
  392. [TestCategory("Priority0")]
  393. public void ValidateSparseSequenceSetIndexer()
  394. {
  395. IAlphabet alphabet = Alphabets.DNA;
  396. // Create sequence item list
  397. List<byte> sequenceList = new List<byte>();
  398. foreach (byte item in alphabet)
  399. {
  400. sequenceList.Add(item);
  401. }
  402. // Store sequence item in sparse sequence object using list of sequence items
  403. SparseSequence sparseSeq = new SparseSequence(alphabet, 0, sequenceList);
  404. byte seqItem = new Sequence(Alphabets.DNA, "AGCT")[0];
  405. sparseSeq[0] = seqItem;
  406. Assert.AreEqual(65, sparseSeq[0]);
  407. Console.WriteLine(
  408. "SparseSequence BVT: Validation of Indexer successfully completed");
  409. ApplicationLog.WriteLine(
  410. "SparseSequence BVT: Validation of Indexer successfully completed");
  411. }
  412. #endregion
  413. }
  414. }