You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

401 lines
12 KiB

6 years ago
  1. // BST class test driver
  2. // Xiwei Wang
  3. import java.util.Scanner;
  4. public class TestBST
  5. {
  6. public static void main(String[] args)
  7. {
  8. BST mytree = new BST();
  9. int numPassedTests = 0;
  10. int numTotalTests = 0;
  11. String testResult;
  12. // Test 1
  13. numTotalTests++;
  14. String sReturn = "";
  15. testResult = "[Failed]";
  16. String eMsg = "N/A";
  17. try
  18. {
  19. // insert values
  20. mytree.add("5");
  21. mytree.add("1");
  22. mytree.add("3");
  23. mytree.add("9");
  24. mytree.add("6");
  25. mytree.add("7");
  26. mytree.add("2");
  27. mytree.add("0");
  28. sReturn = mytree.inOrder().trim();
  29. if (sReturn.equals("0 1 2 3 5 6 7 9"))
  30. {
  31. numPassedTests++;
  32. testResult = "[Passed]";
  33. }
  34. }
  35. catch (RuntimeException e)
  36. {
  37. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  38. }
  39. System.out.println("Test " + numTotalTests + ": inOrder() ==> " + testResult + "\n Expected: 0 1 2 3 5 6 7 9");
  40. if (eMsg.equals("N/A"))
  41. System.out.println(" Yours: " + sReturn + "\n");
  42. else
  43. System.out.println(" Yours: " + eMsg + "\n");
  44. // Test 2
  45. numTotalTests++;
  46. int iReturn = -1;
  47. testResult = "[Failed]";
  48. eMsg = "N/A";
  49. try
  50. {
  51. iReturn = mytree.size();
  52. if (iReturn == 8)
  53. {
  54. numPassedTests++;
  55. testResult = "[Passed]";
  56. }
  57. }
  58. catch (RuntimeException e)
  59. {
  60. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  61. }
  62. System.out.println("Test " + numTotalTests + ": size() ==> " + testResult + "\n Expected: 8");
  63. if (eMsg.equals("N/A"))
  64. System.out.println(" Yours: " + iReturn + "\n");
  65. else
  66. System.out.println(" Yours: " + eMsg + "\n");
  67. // Test 3
  68. numTotalTests++;
  69. iReturn = -1;
  70. testResult = "[Failed]";
  71. eMsg = "N/A";
  72. try
  73. {
  74. sReturn = mytree.min();
  75. if (sReturn.equals("0"))
  76. {
  77. numPassedTests++;
  78. testResult = "[Passed]";
  79. }
  80. }
  81. catch (RuntimeException e)
  82. {
  83. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  84. }
  85. System.out.println("Test " + numTotalTests + ": min() ==> " + testResult + "\n Expected: 0");
  86. if (eMsg.equals("N/A"))
  87. System.out.println(" Yours: " + sReturn + "\n");
  88. else
  89. System.out.println(" Yours: " + eMsg + "\n");
  90. // Test 4
  91. numTotalTests++;
  92. sReturn = "";
  93. testResult = "[Failed]";
  94. eMsg = "N/A";
  95. try
  96. {
  97. mytree.clear();
  98. // insert values
  99. mytree.add("ab");
  100. mytree.add("bc");
  101. mytree.add("ac");
  102. mytree.add("de");
  103. mytree.add("ae");
  104. mytree.add("ck");
  105. mytree.add("dg");
  106. mytree.add("bp");
  107. mytree.add("eh");
  108. mytree.add("ck");
  109. sReturn = mytree.inOrder().trim();
  110. if (sReturn.equals("ab ac ae bc bp ck de dg eh"))
  111. {
  112. numPassedTests++;
  113. testResult = "[Passed]";
  114. }
  115. }
  116. catch (RuntimeException e)
  117. {
  118. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  119. }
  120. System.out.println("Test " + numTotalTests + ": inOrder() ==> " + testResult + "\n Expected: ab ac ae bc bp ck de dg eh");
  121. if (eMsg.equals("N/A"))
  122. System.out.println(" Yours: " + sReturn + "\n");
  123. else
  124. System.out.println(" Yours: " + eMsg + "\n");
  125. // Test 5
  126. numTotalTests++;
  127. iReturn = -1;
  128. testResult = "[Failed]";
  129. eMsg = "N/A";
  130. try
  131. {
  132. iReturn = mytree.size();
  133. if (iReturn == 9)
  134. {
  135. numPassedTests++;
  136. testResult = "[Passed]";
  137. }
  138. }
  139. catch (RuntimeException e)
  140. {
  141. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  142. }
  143. System.out.println("Test " + numTotalTests + ": size() ==> " + testResult + "\n Expected: 9");
  144. if (eMsg.equals("N/A"))
  145. System.out.println(" Yours: " + iReturn + "\n");
  146. else
  147. System.out.println(" Yours: " + eMsg + "\n");
  148. // Test 6
  149. numTotalTests++;
  150. iReturn = -1;
  151. testResult = "[Failed]";
  152. eMsg = "N/A";
  153. try
  154. {
  155. sReturn = mytree.min();
  156. if (sReturn.equals("ab"))
  157. {
  158. numPassedTests++;
  159. testResult = "[Passed]";
  160. }
  161. }
  162. catch (RuntimeException e)
  163. {
  164. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  165. }
  166. System.out.println("Test " + numTotalTests + ": min() ==> " + testResult + "\n Expected: ab");
  167. if (eMsg.equals("N/A"))
  168. System.out.println(" Yours: " + sReturn + "\n");
  169. else
  170. System.out.println(" Yours: " + eMsg + "\n");
  171. // Test 7
  172. numTotalTests++;
  173. sReturn = "";
  174. testResult = "[Failed]";
  175. eMsg = "N/A";
  176. try
  177. {
  178. mytree.clear();
  179. // insert values
  180. mytree.add("@");
  181. mytree.add("?");
  182. mytree.add("=");
  183. mytree.add("/");
  184. mytree.add("-");
  185. mytree.add("+");
  186. mytree.add("*");
  187. mytree.add("%");
  188. sReturn = mytree.inOrder().trim();
  189. if (sReturn.equals("% * + - / = ? @"))
  190. {
  191. numPassedTests++;
  192. testResult = "[Passed]";
  193. }
  194. }
  195. catch (RuntimeException e)
  196. {
  197. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  198. }
  199. System.out.println("Test " + numTotalTests + ": inOrder() ==> " + testResult + "\n Expected: % * + - / = ? @");
  200. if (eMsg.equals("N/A"))
  201. System.out.println(" Yours: " + sReturn + "\n");
  202. else
  203. System.out.println(" Yours: " + eMsg + "\n");
  204. // Test 8
  205. numTotalTests++;
  206. iReturn = -1;
  207. testResult = "[Failed]";
  208. eMsg = "N/A";
  209. try
  210. {
  211. iReturn = mytree.size();
  212. if (iReturn == 8)
  213. {
  214. numPassedTests++;
  215. testResult = "[Passed]";
  216. }
  217. }
  218. catch (RuntimeException e)
  219. {
  220. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  221. }
  222. System.out.println("Test " + numTotalTests + ": size() ==> " + testResult + "\n Expected: 8");
  223. if (eMsg.equals("N/A"))
  224. System.out.println(" Yours: " + iReturn + "\n");
  225. else
  226. System.out.println(" Yours: " + eMsg + "\n");
  227. // Test 9
  228. numTotalTests++;
  229. iReturn = -1;
  230. testResult = "[Failed]";
  231. eMsg = "N/A";
  232. try
  233. {
  234. sReturn = mytree.min();
  235. if (sReturn.equals("%"))
  236. {
  237. numPassedTests++;
  238. testResult = "[Passed]";
  239. }
  240. }
  241. catch (RuntimeException e)
  242. {
  243. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  244. }
  245. System.out.println("Test " + numTotalTests + ": min() ==> " + testResult + "\n Expected: %");
  246. if (eMsg.equals("N/A"))
  247. System.out.println(" Yours: " + sReturn + "\n");
  248. else
  249. System.out.println(" Yours: " + eMsg + "\n");
  250. // Test 10
  251. numTotalTests++;
  252. iReturn = -1;
  253. testResult = "[Failed]";
  254. eMsg = "N/A";
  255. try
  256. {
  257. // build a binary expression tree
  258. BSTNode root = new BSTNode("*");
  259. root.setRight(new BSTNode("3"));
  260. root.setLeft(new BSTNode("+"));
  261. root.getLeft().setLeft(new BSTNode("15"));
  262. root.getLeft().setRight(new BSTNode("21"));
  263. iReturn = mytree.evaluate(root.getLeft());
  264. if (iReturn == 36)
  265. {
  266. numPassedTests++;
  267. testResult = "[Passed]";
  268. }
  269. }
  270. catch (RuntimeException e)
  271. {
  272. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  273. }
  274. System.out.println("Test " + numTotalTests + ": evaluate(root), where root points to \"+\" in the following tree ==> " + testResult + "\n");
  275. System.out.println(String.format("%8s\n%9s\n%10s\n%7s\n%9s\n", "*", "/ \\", "+ 3", "/ \\", "15 21") + "\n Expected: 36");
  276. if (eMsg.equals("N/A"))
  277. System.out.println(" Yours: " + iReturn + "\n");
  278. else
  279. System.out.println(" Yours: " + eMsg + "\n");
  280. // Test 11
  281. numTotalTests++;
  282. iReturn = -1;
  283. testResult = "[Failed]";
  284. eMsg = "N/A";
  285. try
  286. {
  287. // build a binary expression tree
  288. BSTNode root = new BSTNode("*");
  289. root.setRight(new BSTNode("3"));
  290. root.setLeft(new BSTNode("+"));
  291. root.getLeft().setLeft(new BSTNode("15"));
  292. root.getLeft().setRight(new BSTNode("21"));
  293. iReturn = mytree.evaluate(root);
  294. if (iReturn == 108)
  295. {
  296. numPassedTests++;
  297. testResult = "[Passed]";
  298. }
  299. }
  300. catch (RuntimeException e)
  301. {
  302. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  303. }
  304. System.out.println("Test " + numTotalTests + ": evaluate(root), where root points to \"*\" in the following tree ==> " + testResult + "\n");
  305. System.out.println(String.format("%8s\n%9s\n%10s\n%7s\n%9s\n", "*", "/ \\", "+ 3", "/ \\", "15 21") + "\n Expected: 108");
  306. if (eMsg.equals("N/A"))
  307. System.out.println(" Yours: " + iReturn + "\n");
  308. else
  309. System.out.println(" Yours: " + eMsg + "\n");
  310. // Test 12
  311. numTotalTests++;
  312. iReturn = -1;
  313. testResult = "[Failed]";
  314. eMsg = "N/A";
  315. try
  316. {
  317. // build a binary expression tree
  318. BSTNode root = new BSTNode("/");
  319. root.setRight(new BSTNode("+"));
  320. root.setLeft(new BSTNode("*"));
  321. BSTNode left = root.getLeft();
  322. BSTNode right = root.getRight();
  323. left.setLeft(new BSTNode("-"));
  324. left.setRight(new BSTNode("+"));
  325. right.setLeft(new BSTNode("8"));
  326. right.setRight(new BSTNode("15"));
  327. left.getLeft().setLeft(new BSTNode("33"));
  328. left.getLeft().setRight(new BSTNode("44"));
  329. left.getRight().setLeft(new BSTNode("27"));
  330. left.getRight().setRight(new BSTNode("19"));
  331. iReturn = mytree.evaluate(root);
  332. if (iReturn == -22)
  333. {
  334. numPassedTests++;
  335. testResult = "[Passed]";
  336. }
  337. }
  338. catch (RuntimeException e)
  339. {
  340. eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
  341. }
  342. System.out.println("Test " + numTotalTests + ": evaluate(root), where root points to \"/\" in the following tree ==> " + testResult + "\n");
  343. System.out.println(String.format("%14s\n%17s\n%18s\n%19s\n%20s\n%13s\n%14s\n", "/", "/ \\", "* +", "/ \\ / \\", "- + 8 15", "/ \\ / \\", "33 44 27 19") + "\n Expected: -22");
  344. if (eMsg.equals("N/A"))
  345. System.out.println(" Yours: " + iReturn + "\n");
  346. else
  347. System.out.println(" Yours: " + eMsg + "\n");
  348. System.out.println("Total test cases: " + numTotalTests + "\nCorrect: " + numPassedTests + "\nWrong: " + (numTotalTests - numPassedTests));
  349. }
  350. }