PageRenderTime 51ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/Tests/Bio.TestAutomation/BioUtil/ArgumentParser/CmdLineArgumentParserP2TestCases.cs

#
C# | 345 lines | 246 code | 32 blank | 67 comment | 0 complexity | e90cb78c11899dec12a351e32e00da24 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. * CmdLineArgumentParserP2TestCases.cs
  11. *
  12. * This file contains the CmdLineArgumentParser P2 test cases.
  13. *
  14. ******************************************************************************/
  15. using System;
  16. using System.IO;
  17. using System.Text;
  18. using System.Collections.Generic;
  19. using System.Linq;
  20. using Microsoft.VisualStudio.TestTools.UnitTesting;
  21. using Bio.Util.ArgumentParser;
  22. using System.Threading;
  23. using System.Collections;
  24. using Bio.Util.Logging;
  25. namespace Bio.TestAutomation.Util.ArgumentParser
  26. {
  27. /// <summary>
  28. /// P2 Test Cases for CmdLineArgumentParser
  29. /// </summary>
  30. [TestClass]
  31. public class CmdLineArgumentParserP2TestCases
  32. {
  33. /// <summary>
  34. /// Invalidates Parameter()
  35. /// </summary>
  36. [TestMethod]
  37. [Priority(2)]
  38. [TestCategory("Priority2")]
  39. public void InvalidateParameter()
  40. {
  41. //AggregateNumbers aggregateNos = new AggregateNumbers();
  42. CommandLineArguments parser = new CommandLineArguments();
  43. try
  44. {
  45. //add parameters
  46. parser.Parameter(ArgumentType.Required, null, ArgumentValueType.String, "i", "File containing numbers to add");
  47. Assert.Fail();
  48. }
  49. catch (ArgumentNullException ex)
  50. {
  51. ApplicationLog.WriteLine("Successfully caught ArgumentNullException : " + ex.Message);
  52. }
  53. }
  54. /// <summary>
  55. /// Invalidates Parse()
  56. /// </summary>
  57. [TestMethod]
  58. [Priority(2)]
  59. [TestCategory("Priority2")]
  60. public void InvalidateParse()
  61. {
  62. AggregateNumbers aggregateNos = new AggregateNumbers();
  63. CommandLineArguments parser = new CommandLineArguments();
  64. //add parameters
  65. parser.Parameter(ArgumentType.Required, "InputFile", ArgumentValueType.String, "i", "File containing numbers to add");
  66. parser.Parameter(ArgumentType.Required, "ResultFile", ArgumentValueType.String, "r", "File to store output");
  67. string outputfileName = Path.GetTempFileName().Replace(Path.GetTempPath(), "");
  68. //pass parameter without value
  69. try
  70. {
  71. string[] args = { "/InputFile:", "/ResultFile:" + outputfileName };
  72. parser.Parse(args, aggregateNos);
  73. Assert.Fail();
  74. }
  75. catch (InvalidArgumentValueException ex)
  76. {
  77. ApplicationLog.WriteLine("CommandLineArguments P2: Successfully caught InvalidArgumentValueException : " + ex.Message);
  78. }
  79. //pass invalid starting character
  80. try
  81. {
  82. string[] args = { "*/ResultFile:" + outputfileName };
  83. parser.Parse(args, aggregateNos);
  84. Assert.Fail();
  85. }
  86. catch (ArgumentSyntaxException ex)
  87. {
  88. ApplicationLog.WriteLine("CommandLineArguments P2: Successfully caught ArgumentNullException : " + ex.Message);
  89. }
  90. }
  91. /// <summary>
  92. /// Invalidate Parameter for null parameter name and bool
  93. /// Input Data : Null Parameter name and Argument type is bool.
  94. /// Output Data : Validation of Exception by parameter type and Argument type.
  95. /// </summary>
  96. [TestMethod]
  97. [Priority(2)]
  98. [TestCategory("Priority2")]
  99. public void InvalidateParameterForNullParameterName()
  100. {
  101. CommandLineArguments commandLineArguments = new CommandLineArguments();
  102. try
  103. {
  104. commandLineArguments.Parameter(ArgumentType.Optional, null, ArgumentValueType.OptionalInt, "ParameterForNullParameterName", "");
  105. Assert.Fail("CommandLineArguments P2: Not validated parameter Method for null value");
  106. }
  107. catch (Exception ex)
  108. {
  109. ApplicationLog.WriteLine("CommandLineArguments P2: Successfully validated Parameter Method for null value:", ex.Message);
  110. }
  111. try
  112. {
  113. commandLineArguments.Parameter(ArgumentType.Optional, null, ArgumentValueType.Bool, "ParameterForNullParameterName", "");
  114. Assert.Fail("CommandLineArguments P2: Not validated parameter Method for bool value");
  115. }
  116. catch (Exception ex)
  117. {
  118. ApplicationLog.WriteLine("CommandLineArguments P2: Successfully validated Parameter Method for bool value:", ex.Message);
  119. }
  120. }
  121. /// <summary>
  122. /// Invalidate Parameter for null arguments.
  123. /// Input Data : Null arguments type.
  124. /// Output Data : Validation of ArgumentNullException Exception.
  125. /// </summary>
  126. [TestMethod]
  127. [Priority(2)]
  128. [TestCategory("Priority2")]
  129. public void InvalidateParseForNullArguments()
  130. {
  131. AggregateNumbers aggregateNos = new AggregateNumbers();
  132. CommandLineArguments parser = new CommandLineArguments();
  133. try
  134. {
  135. parser.Parse(null, aggregateNos);
  136. Assert.Fail("CommandLineArguments P2: Not validated parameter Method for null value");
  137. }
  138. catch (ArgumentNullException ex)
  139. {
  140. ApplicationLog.WriteLine("CommandLineArguments P2: Successfully validated Parameter Method for null value:", ex.Message);
  141. }
  142. }
  143. /// <summary>
  144. /// Invalidate Parameter for null arguments.
  145. /// Input Data : Null arguments type.
  146. /// Output Data : Validation of ArgumentNullException Exception.
  147. /// </summary>
  148. [TestMethod]
  149. [Priority(2)]
  150. [TestCategory("Priority2")]
  151. public void InvalidateParseForNullArgumentsNo()
  152. {
  153. CommandLineArguments parser = new CommandLineArguments();
  154. //add parameters
  155. parser.Parameter(ArgumentType.Required, "InputFile", ArgumentValueType.String, "i", "File containing numbers to add");
  156. parser.Parameter(ArgumentType.Required, "ResultFile", ArgumentValueType.String, "r", "File to store output");
  157. string inputfileName = Path.GetTempFileName().Replace(Path.GetTempPath(), "");
  158. string outputfileName = Path.GetTempFileName().Replace(Path.GetTempPath(), "");
  159. string[] args = { "/InputFile:" + inputfileName, "/ResultFile:" + outputfileName };
  160. try
  161. {
  162. parser.Parse(args, null);
  163. Assert.Fail("CommandLineArguments P2: Not validated parameter Method for null value");
  164. }
  165. catch (ArgumentNullException ex)
  166. {
  167. ApplicationLog.WriteLine("CommandLineArguments P2: Successfully validated Parameter Method for null value:", ex.Message);
  168. }
  169. }
  170. /// <summary>
  171. /// Invalidates parse with empty parameter name
  172. /// </summary>
  173. [TestMethod]
  174. [Priority(2)]
  175. [TestCategory("Priority2")]
  176. public void InvalidateParseWithEmptyParam()
  177. {
  178. try
  179. {
  180. AggregateNumbers aggregateNos = new AggregateNumbers();
  181. CommandLineArguments parser = new CommandLineArguments();
  182. //add parameters
  183. parser.Parameter(ArgumentType.Required, "bValue", ArgumentValueType.Bool, "bv", "bool");
  184. parser.Parameter(ArgumentType.Required, "iValue", ArgumentValueType.Int, "iv", "int");
  185. parser.Parameter(ArgumentType.Required, "iArrValues", ArgumentValueType.MultipleInts, "imv", "intArrValues");
  186. parser.Parameter(ArgumentType.Required, "bArrValues", ArgumentValueType.Bool, "bmv", "boolArrValues");
  187. string[] args = { "/:true", "/iValue:5", "/iArrValues:1", "2", "3", "4", "/bArrValues:true", "false" };
  188. parser.Parse(args, aggregateNos);
  189. Assert.Fail();
  190. }
  191. catch (ArgumentSyntaxException ex)
  192. {
  193. ApplicationLog.Write("Successfully caught ArgumentSyntaxException : " + ex.Message);
  194. }
  195. }
  196. /// <summary>
  197. /// Invalidates parse with invalid values
  198. /// </summary>
  199. [TestMethod]
  200. [Priority(2)]
  201. [TestCategory("Priority2")]
  202. public void InvalidateParseWithInvalidValue()
  203. {
  204. try
  205. {
  206. AggregateNumbers aggregateNos = new AggregateNumbers();
  207. CommandLineArguments parser = new CommandLineArguments();
  208. //add parameters
  209. parser.Parameter(ArgumentType.Required, "bValue", ArgumentValueType.Bool, "bv", "bool");
  210. parser.Parameter(ArgumentType.Required, "iValue", ArgumentValueType.Int, "iv", "int");
  211. parser.Parameter(ArgumentType.Required, "iArrValues", ArgumentValueType.MultipleInts, "imv", "intArrValues");
  212. parser.Parameter(ArgumentType.Required, "bArrValues", ArgumentValueType.Bool, "bmv", "boolArrValues");
  213. //pass char in integer array
  214. string[] args = { "/bValue:true", "/iValue:5", "/iArrValues:1", "x", "3", "4", "/bArrValues:true", "false" };
  215. parser.Parse(args, aggregateNos);
  216. Assert.Fail();
  217. }
  218. catch (InvalidArgumentValueException ex)
  219. {
  220. ApplicationLog.Write("Successfully caught InvalidArgumentValueException : " + ex.Message);
  221. }
  222. }
  223. /// <summary>
  224. /// Invalidates parse with wrong param name
  225. /// </summary>
  226. [TestMethod]
  227. [Priority(2)]
  228. [TestCategory("Priority2")]
  229. public void InvalidateParseWithWrongParamName()
  230. {
  231. try
  232. {
  233. AggregateNumbers aggregateNos = new AggregateNumbers();
  234. CommandLineArguments parser = new CommandLineArguments();
  235. //add parameters
  236. parser.Parameter(ArgumentType.Required, "bValue", ArgumentValueType.Bool, "bv", "bool");
  237. parser.Parameter(ArgumentType.Required, "iValue", ArgumentValueType.Int, "iv", "int");
  238. parser.Parameter(ArgumentType.Required, "iArrValues", ArgumentValueType.MultipleInts, "imv", "intArrValues");
  239. parser.Parameter(ArgumentType.Required, "bArrValues", ArgumentValueType.Bool, "bmv", "boolArrValues");
  240. //pass char in integer array
  241. string[] args = { "/wrongname:true", "/iValue:5", "/iArrValues:1", "2", "3", "4", "/bArrValues:true", "false" };
  242. parser.Parse(args, aggregateNos);
  243. Assert.Fail();
  244. }
  245. catch (ArgumentNotFoundException ex)
  246. {
  247. ApplicationLog.Write("Successfully caught ArgumentNotFoundException : " + ex.Message);
  248. }
  249. }
  250. /// <summary>
  251. /// Invalidates parse with duplicate string values
  252. /// </summary>
  253. [TestMethod]
  254. [Priority(2)]
  255. [TestCategory("Priority2")]
  256. public void InvalidateParseWithDuplicateString()
  257. {
  258. try
  259. {
  260. AggregateNumbers aggregateNos = new AggregateNumbers();
  261. CommandLineArguments parser = new CommandLineArguments();
  262. //add parameters
  263. parser.Parameter(ArgumentType.Required, "bValue", ArgumentValueType.Bool, "bv", "bool");
  264. parser.Parameter(ArgumentType.Required, "iValue", ArgumentValueType.Int, "iv", "int");
  265. parser.Parameter(ArgumentType.Required, "iArrValues", ArgumentValueType.MultipleInts, "imv", "intArrValues");
  266. parser.Parameter(ArgumentType.Required, "bArrValues", ArgumentValueType.Bool, "bmv", "boolArrValues");
  267. parser.Parameter(ArgumentType.Required, "fValue", ArgumentValueType.Int, "fv", "float");
  268. parser.Parameter(ArgumentType.Required, "dValue", ArgumentValueType.Int, "dv", "double");
  269. parser.Parameter(ArgumentType.Required, "ubValues", ArgumentValueType.MultipleUniqueBool, "ubv", "Unique bool");
  270. parser.Parameter(ArgumentType.Optional, "usValues", ArgumentValueType.MultipleUniqueStrings, "usv", "Unique strings");
  271. string[] args = { "/bValue:true", "/iValue:5", "/iArrValues:1", "2", "3", "4", "/bArrValues:true" ,"false",
  272. "/fValue:3.45", "/dValue:78.9876","/ubValues:true", "false", "/usValues:Str1", "Str2","Str1"};
  273. parser.Parse(args, aggregateNos);
  274. }
  275. catch (DuplicateArgumentValueException ex)
  276. {
  277. ApplicationLog.WriteLine("Successfully caught DuplicateArgumentValueException : " + ex.Message);
  278. }
  279. }
  280. /// <summary>
  281. /// Invalidates parse with missing required param
  282. /// </summary>
  283. [TestMethod]
  284. [Priority(2)]
  285. [TestCategory("Priority2")]
  286. public void InvalidateParseWithMissingRequiredParam()
  287. {
  288. try
  289. {
  290. AggregateNumbers aggregateNos = new AggregateNumbers();
  291. CommandLineArguments parser = new CommandLineArguments();
  292. //add parameters
  293. parser.Parameter(ArgumentType.Required, "bValue", ArgumentValueType.Bool, "bv", "bool");
  294. parser.Parameter(ArgumentType.Required, "iValue", ArgumentValueType.Int, "iv", "int");
  295. parser.Parameter(ArgumentType.Required, "iArrValues", ArgumentValueType.MultipleInts, "imv", "intArrValues");
  296. parser.Parameter(ArgumentType.Required, "bArrValues", ArgumentValueType.Bool, "bmv", "boolArrValues");
  297. parser.Parameter(ArgumentType.Required, "fValue", ArgumentValueType.Int, "fv", "float");
  298. parser.Parameter(ArgumentType.Required, "dValue", ArgumentValueType.Int, "dv", "double");
  299. parser.Parameter(ArgumentType.Required, "ubValues", ArgumentValueType.MultipleUniqueBool, "ubv", "Unique bool");
  300. parser.Parameter(ArgumentType.Optional, "usValues", ArgumentValueType.MultipleUniqueStrings, "usv", "Unique strings");
  301. //not including the first required param
  302. string[] args = { "/iValue:5", "/iArrValues:1", "2", "3", "4", "/bArrValues:true" ,"false",
  303. "/fValue:3.45", "/dValue:78.9876","/ubValues:true", "true", "/usValues:Str1", "Str2","Str3"};
  304. parser.Parse(args, aggregateNos);
  305. Assert.Fail();
  306. }
  307. catch (RequiredArgumentMissingException ex)
  308. {
  309. ApplicationLog.WriteLine("Successfully caught RequiredArgumentMissingException : " + ex.Message);
  310. }
  311. }
  312. }
  313. }