UITest.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519
  1. using System;
  2. using System.IO;
  3. using System.Reflection;
  4. using Microsoft.VisualStudio.TestTools.UnitTesting;
  5. using TestStack.White;
  6. using TestStack.White.UIItems;
  7. using TestStack.White.UIItems.WindowItems;
  8. using TestStack.White.UIItems.Finders;
  9. using System.Threading;
  10. using SketchAssistantWPF;
  11. using System.Windows;
  12. using System.Diagnostics;
  13. using TestStack.White.UIItems.WindowStripControls;
  14. using TestStack.White.UIItems.MenuItems;
  15. using System.Collections.Generic;
  16. namespace WhiteTests
  17. {
  18. [TestClass]
  19. public class UITest
  20. {
  21. private TestStack.White.Application application;
  22. public Window setupapp()
  23. {
  24. string outputDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
  25. string editedDir = outputDir.Replace("WhiteTests", "SketchAssistantWPF");
  26. string app_path = editedDir + @"\SketchAssistantWPF.exe";
  27. ProcessStartInfo processStart = new ProcessStartInfo(app_path, "-debug");
  28. application = Application.Launch(processStart);
  29. return application.GetWindow("Sketch Assistant");
  30. }
  31. [TestMethod]
  32. public void CreateCanvasTest()
  33. {
  34. Window mainWindow = setupapp();
  35. Thread.Sleep(20);
  36. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  37. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  38. Thread.Sleep(20);
  39. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  40. mainWindow.Close();
  41. }
  42. [TestMethod]
  43. public void DrawLineTest()
  44. {
  45. Window mainWindow = setupapp();
  46. Thread.Sleep(20);
  47. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  48. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  49. Thread.Sleep(20);
  50. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  51. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  52. Thread.Sleep(20);
  53. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  54. Thread.Sleep(20);
  55. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  56. Thread.Sleep(7000);
  57. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  58. mainWindow.Close();
  59. }
  60. [TestMethod]
  61. public void DeleteLineTest()
  62. {
  63. Window mainWindow = setupapp();
  64. Thread.Sleep(20);
  65. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  66. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  67. Thread.Sleep(20);
  68. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  69. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("DrawButton")).Click();
  70. Thread.Sleep(20);
  71. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  72. Thread.Sleep(20);
  73. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  74. Thread.Sleep(20);
  75. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  76. Thread.Sleep(7000);
  77. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  78. Thread.Sleep(20);
  79. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("DeleteButton")).Click();
  80. Thread.Sleep(20);
  81. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  82. Thread.Sleep(20);
  83. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  84. Thread.Sleep(20);
  85. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  86. Thread.Sleep(7000);
  87. Assert.AreEqual("Last Action: Line number 0 was deleted.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  88. mainWindow.Close();
  89. }
  90. [TestMethod]
  91. public void UndoTest()
  92. {
  93. Window mainWindow = setupapp();
  94. Thread.Sleep(20);
  95. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  96. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  97. Thread.Sleep(20);
  98. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  99. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  100. Thread.Sleep(20);
  101. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  102. Thread.Sleep(20);
  103. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  104. Thread.Sleep(7000);
  105. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  106. Thread.Sleep(20);
  107. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  108. Thread.Sleep(20);
  109. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  110. mainWindow.Close();
  111. }
  112. [TestMethod]
  113. public void RedoTest()
  114. {
  115. Window mainWindow = setupapp();
  116. Thread.Sleep(20);
  117. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  118. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  119. Thread.Sleep(20);
  120. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  121. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  122. Thread.Sleep(20);
  123. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  124. Thread.Sleep(20);
  125. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  126. Thread.Sleep(7000);
  127. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  128. Thread.Sleep(20);
  129. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  130. Thread.Sleep(20);
  131. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  132. Thread.Sleep(20);
  133. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("RedoButton")).Click();
  134. Thread.Sleep(20);
  135. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  136. mainWindow.Close();
  137. }
  138. [TestMethod]
  139. public void DarwSeveralLines()
  140. {
  141. Window mainWindow = setupapp();
  142. Thread.Sleep(20);
  143. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  144. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  145. Thread.Sleep(20);
  146. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  147. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  148. Thread.Sleep(20);
  149. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  150. Thread.Sleep(20);
  151. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  152. Thread.Sleep(7000);
  153. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  154. Thread.Sleep(20);
  155. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  156. Thread.Sleep(20);
  157. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  158. Thread.Sleep(20);
  159. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugTwo")).Click();
  160. Thread.Sleep(30000);
  161. Assert.AreEqual("Last Action: Line number 1 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  162. Thread.Sleep(20);
  163. mainWindow.Close();
  164. }
  165. [TestMethod]
  166. public void DeleteSeveralLines()
  167. {
  168. Window mainWindow = setupapp();
  169. Thread.Sleep(20);
  170. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  171. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  172. Thread.Sleep(20);
  173. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  174. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  175. Thread.Sleep(20);
  176. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  177. Thread.Sleep(20);
  178. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  179. Thread.Sleep(7000);
  180. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  181. Thread.Sleep(20);
  182. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  183. Thread.Sleep(20);
  184. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  185. Thread.Sleep(20);
  186. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugTwo")).Click();
  187. Thread.Sleep(24000);
  188. Assert.AreEqual("Last Action: Line number 1 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  189. Thread.Sleep(20);
  190. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("DeleteButton")).Click();
  191. Thread.Sleep(20);
  192. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  193. Thread.Sleep(20);
  194. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  195. Thread.Sleep(20);
  196. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugThree")).Click();
  197. Thread.Sleep(20);
  198. Assert.AreEqual("Last Action: Line number 1 was deleted.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  199. Thread.Sleep(10000);
  200. Assert.AreEqual("Last Action: Line number 0 was deleted.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  201. mainWindow.Close();
  202. }
  203. [TestMethod]
  204. public void UndoSeveralLines()
  205. {
  206. Window mainWindow = setupapp();
  207. Thread.Sleep(20);
  208. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  209. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  210. Thread.Sleep(20);
  211. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  212. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  213. Thread.Sleep(20);
  214. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  215. Thread.Sleep(20);
  216. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  217. Thread.Sleep(7000);
  218. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  219. Thread.Sleep(20);
  220. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  221. Thread.Sleep(20);
  222. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  223. Thread.Sleep(20);
  224. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugTwo")).Click();
  225. Thread.Sleep(30000);
  226. Assert.AreEqual("Last Action: Line number 1 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  227. Thread.Sleep(20);
  228. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  229. Thread.Sleep(20);
  230. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  231. Thread.Sleep(20);
  232. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  233. Thread.Sleep(20);
  234. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  235. Thread.Sleep(20);
  236. mainWindow.Close();
  237. }
  238. [TestMethod]
  239. public void RedoSeveralLines()
  240. {
  241. Window mainWindow = setupapp();
  242. Thread.Sleep(20);
  243. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  244. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  245. Thread.Sleep(20);
  246. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  247. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  248. Thread.Sleep(20);
  249. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  250. Thread.Sleep(20);
  251. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  252. Thread.Sleep(7000);
  253. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  254. Thread.Sleep(20);
  255. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  256. Thread.Sleep(20);
  257. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  258. Thread.Sleep(20);
  259. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugTwo")).Click();
  260. Thread.Sleep(24000);
  261. Assert.AreEqual("Last Action: Line number 1 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  262. Thread.Sleep(20);
  263. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  264. Thread.Sleep(20);
  265. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  266. Thread.Sleep(20);
  267. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  268. Thread.Sleep(20);
  269. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  270. Thread.Sleep(20);
  271. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("RedoButton")).Click();
  272. Thread.Sleep(20);
  273. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  274. Thread.Sleep(20);
  275. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("RedoButton")).Click();
  276. Thread.Sleep(20);
  277. Assert.AreEqual("Last Action: Line number 1 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  278. Thread.Sleep(20);
  279. mainWindow.Close();
  280. }
  281. [TestMethod]
  282. public void UndoAndRedoTests()
  283. {
  284. Window mainWindow = setupapp();
  285. Thread.Sleep(20);
  286. Assert.AreEqual("none", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  287. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("CanvasButton")).Click();
  288. Thread.Sleep(20);
  289. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  290. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  291. Thread.Sleep(20);
  292. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  293. Thread.Sleep(20);
  294. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugOne")).Click();
  295. Thread.Sleep(7000);
  296. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  297. Thread.Sleep(20);
  298. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  299. Thread.Sleep(20);
  300. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  301. Thread.Sleep(20);
  302. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugTwo")).Click();
  303. Thread.Sleep(24000);
  304. Assert.AreEqual("Last Action: Line number 1 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  305. Thread.Sleep(20);
  306. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  307. Thread.Sleep(20);
  308. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  309. Thread.Sleep(20);
  310. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  311. Thread.Sleep(20);
  312. Assert.AreEqual("Last Action: A new canvas was created.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  313. Thread.Sleep(20);
  314. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("RedoButton")).Click();
  315. Thread.Sleep(20);
  316. Assert.AreEqual("Last Action: Line number 0 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  317. Thread.Sleep(20);
  318. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("RedoButton")).Click();
  319. Thread.Sleep(20);
  320. Assert.AreEqual("Last Action: Line number 1 was drawn.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  321. Thread.Sleep(20);
  322. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("DeleteButton")).Click();
  323. Thread.Sleep(20);
  324. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("EditMenuButton")).Click();
  325. Thread.Sleep(20);
  326. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugMode")).Click();
  327. Thread.Sleep(20);
  328. mainWindow.Get<Menu>(SearchCriteria.ByAutomationId("DebugThree")).Click();
  329. Thread.Sleep(7000);
  330. Assert.AreEqual("Last Action: Line number 0 was deleted.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  331. Thread.Sleep(20);
  332. mainWindow.Get<Button>(SearchCriteria.ByAutomationId("UndoButton")).Click();
  333. Thread.Sleep(20);
  334. Assert.AreEqual("Last Action: Line number 1 was deleted.", mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId("LastActionBox")).Text.ToString());
  335. Thread.Sleep(20);
  336. mainWindow.Close();
  337. }
  338. }
  339. [TestClass]
  340. [DeploymentItem(@"WhiteTests\test_input_files\")]
  341. public class FileImporterTests
  342. {
  343. /// <summary>
  344. /// instance of TestContext to be able to access deployed files
  345. /// </summary>
  346. private TestContext testContextInstance;
  347. /// <summary>
  348. ///Gets or sets the test context which provides
  349. ///information about and functionality for the current test run.
  350. ///</summary>
  351. public TestContext TestContext
  352. {
  353. get
  354. {
  355. return testContextInstance;
  356. }
  357. set
  358. {
  359. testContextInstance = value;
  360. }
  361. }
  362. /// <summary>
  363. /// creates a valid .isad file from the given sets of coordinates (number divisible by 3) by creating a line for every three consecutive points, parses the file and verifies that all lines and their points have been parsed correctly
  364. /// </summary>
  365. /// <param name="xCoordinates">an array containing the x coordinates of the points that will be created (length divisible by 3)</param>
  366. /// <param name="yCoordinates">an array containing the y coordinates of the points that will be created (length divisible by 3)</param>
  367. [DataTestMethod]
  368. [DataRow(new int[] { 54, 43, 57, 11, 145, 34, 113, 299, 0 }, new int[] { 33, 42, 140, 30, 30, 30, 32, 145, 2 })]
  369. [DataRow(new int[] { 33, 42, 140, 30, 30, 30, 32, 145, 2 }, new int[] { 33, 42, 140, 30, 30, 30, 32, 145, 2 })]
  370. [DataRow(new int[] { 33, 42, 140, 30, 30, 30, 32, 145, 2 }, new int[] { 54, 43, 57, 11, 145, 34, 113, 199, 0 })]
  371. public void ParseISADInputSuccessfulTest(int[] xCoordinates, int[] yCoordinates)
  372. {
  373. FileImporter uut = new FileImporter();
  374. List<String> file = new List<string>();
  375. file.Add("drawing");
  376. file.Add("300x200");
  377. for (int i = 0; i < xCoordinates.Length - 2; i += 3)
  378. {
  379. file.Add("line");
  380. file.Add(xCoordinates[i] + ";" + yCoordinates[i]);
  381. file.Add(xCoordinates[i + 1] + ";" + yCoordinates[i + 1]);
  382. file.Add(xCoordinates[i + 2] + ";" + yCoordinates[i + 2]);
  383. file.Add("endline");
  384. }
  385. file.Add("enddrawing");
  386. Tuple<int, int, List<InternalLine>> values = uut.ParseISADInputForTesting(file.ToArray());
  387. Assert.AreEqual(xCoordinates.Length / 3, values.Item3.Count);
  388. InternalLine[] lines = values.Item3.ToArray();
  389. for (int i = 0; i < xCoordinates.Length - 2; i += 3)
  390. {
  391. Point[] currentLine = lines[i / 3].GetPoints().ToArray();
  392. Assert.AreEqual(3, currentLine.Length);
  393. for (int j = 0; j < 3; j++)
  394. {
  395. Assert.IsTrue(currentLine[j].X == xCoordinates[i + j] && currentLine[j].Y == yCoordinates[i + j]);
  396. }
  397. }
  398. }
  399. /// <summary>
  400. /// parses teh given invalid .isad files and verifies that a FileImporterException is thrown, but no other exception
  401. /// </summary>
  402. /// <param name="file">the input file represented as an array of lines</param>
  403. [DataTestMethod]
  404. [DataRow(new String[] {})]
  405. [DataRow(new String[] { "begindrawing", "300x300", "line", "50;50", "100;50", "endline", "enddrawing" })]
  406. [DataRow(new String[] { "drawing", "300;300", "line", "50;50", "100;50", "endline", "enddrawing" })]
  407. [DataRow(new String[] { "drawing", "30.5x300", "line", "50;50", "100;50", "endline", "enddrawing" })]
  408. [DataRow(new String[] { "drawing", "line", "50;50", "100;50", "endline", "enddrawing" })]
  409. [DataRow(new String[] { "drawing", "300x300", "beginline", "50;50", "100;50", "endline", "enddrawing" })]
  410. [DataRow(new String[] { "drawing", "300x300", "line", "500;50", "100;50", "endline", "enddrawing" })]
  411. [DataRow(new String[] { "drawing", "300x300", "line", "50x50", "100;50", "endline", "enddrawing" })]
  412. [DataRow(new String[] { "drawing", "300x300", "line", "50", "100", "endline", "enddrawing" })]
  413. [DataRow(new String[] { "drawing", "300x300", "line", "50;50", "line", "endline", "enddrawing" })]
  414. [DataRow(new String[] { "drawing", "300x300", "line", "50;50", "100;50", "stopline", "enddrawing" })]
  415. [DataRow(new String[] { "drawing", "300x300", "line", "50;50", "100;50", "enddrawing" })]
  416. [DataRow(new String[] { "drawing", "300x300", "line", "50;50", "100;50", "endline", "endrawing" })]
  417. [DataRow(new String[] { "drawing", "300x300", "line", "50;50", "100;50", "endline" })]
  418. public void ParseISADInputExceptionTest(String[] file)
  419. {
  420. bool correctExceptionThrown = false;
  421. FileImporter uut = new FileImporter();
  422. try
  423. {
  424. //try to initialize the left image with an invalid isad drawing
  425. Tuple<int, int, List<InternalLine>> values1 = uut.ParseISADInputForTesting(file);
  426. }
  427. catch (FileImporterException)
  428. {
  429. //save the occurence of an exception
  430. correctExceptionThrown = true;
  431. }
  432. catch (Exception e)
  433. {
  434. //don't set success flag
  435. }
  436. //check that an exception has been thrown
  437. Assert.IsTrue(correctExceptionThrown);
  438. }
  439. /// <summary>
  440. /// parses all whitelisted files and ensures no exceptions are thrown (parsing abortion, e.g. due to corrupted input files, are realized by throwing a FileImporterException)
  441. /// </summary>
  442. [TestMethod]
  443. [TestCategory("FileIO")]
  444. public void ParseSVGInputNoErrorForWhitelistedFilesTest()
  445. {
  446. FileImporter uut = new FileImporter();
  447. string[] files = Directory.GetFiles(TestContext.DeploymentDirectory + @"\test_input_files\whitelisted", "*.svg", SearchOption.AllDirectories);
  448. Assert.IsTrue(files.Length > 0);
  449. foreach (string s in files) //parse each of the whitelisted files
  450. {
  451. Console.WriteLine(s);
  452. bool noExceptionThrown = true;
  453. try
  454. {
  455. uut.ParseSVGInputFile(s, 10000, 10000);
  456. }
  457. catch (Exception e)
  458. {
  459. noExceptionThrown = false;
  460. }
  461. Assert.IsTrue(noExceptionThrown);
  462. }
  463. }
  464. /// <summary>
  465. /// parses all blacklisted files and ensures an instance of FileIporterException is thrown for each file, but no other exceptions occur
  466. /// </summary>
  467. [TestMethod]
  468. [TestCategory("FileIO")]
  469. public void ParseSVGInputNoErrorForBlacklistedFilesTest()
  470. {
  471. FileImporter uut = new FileImporter();
  472. string[] files = Directory.GetFiles(TestContext.DeploymentDirectory + @"\test_input_files\blacklisted", "*.svg", SearchOption.AllDirectories);
  473. Assert.IsTrue(files.Length > 0);
  474. foreach (string s in files) //parse each of the blacklisted files
  475. {
  476. bool correctExceptionThrown = false;
  477. try
  478. {
  479. uut.ParseSVGInputFile(s, 10000, 10000);
  480. }
  481. catch (FileImporterException e)
  482. {
  483. correctExceptionThrown = true;
  484. }
  485. catch (Exception e)
  486. {
  487. }
  488. Assert.IsTrue(correctExceptionThrown);
  489. }
  490. }
  491. }
  492. }