Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.08 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.HashSet;
  3. import java.util.Set;
  4.  
  5. /**
  6. * Symbol table testing ground.
  7. *
  8. * @author Spencer Brown, Acuna
  9. * @version 1.0.0
  10. */
  11. public class Main {
  12.  
  13. /**
  14. * entry point for testing
  15. *
  16. * @param args the command line arguments
  17. */
  18. public static void main(String[] args) {
  19.  
  20. System.out.println("TwoProbeChainHT: ");
  21. testIntegers(new TwoProbeChainHT<Integer, Integer>());
  22. testStrings(new TwoProbeChainHT<String, Integer>());
  23.  
  24. System.out.println("GeneralProbingHT: ");
  25. testIntegers(new LinearProbingHT<Integer, Integer>());
  26. testStrings(new LinearProbingHT<String, Integer>());
  27.  
  28. System.out.println("QuadProbingHT: ");
  29. testIntegers(new QuadProbingHT<Integer, Integer>());
  30. testStrings(new QuadProbingHT<String, Integer>());
  31. }
  32.  
  33. /**
  34. * Test integer operations on symbol table implementation. No JUnit; ugly.
  35. *
  36. * @param st An object implementing a symbol table.
  37. */
  38. public static void testIntegers(SymbolTable<Integer, Integer> st) {
  39. System.out.println("*INTEGER TESTING*");
  40.  
  41. System.out.println(" Testing creation and basic methods... ");
  42.  
  43. //populate initial symbol table.
  44. Set<Integer> keys = new HashSet<>(Arrays.asList(-42341145, -72, -91, -45, -43, 0, 997, 997*2, 997*3, 34, 2, 71, 48, 38334343));
  45. st.put(-42341145, 58);
  46. st.put(-72, 2);
  47. st.put(-91, 36);
  48. st.put(-45, 90);
  49. st.put(-43, 51);
  50. st.put(0, 4);
  51. st.put(997, 43);
  52. st.put(997, 0);
  53. st.put(997*2, 8);
  54. st.put(997*3, 10);
  55. st.put(34, 3);
  56. st.put(2, 96);
  57. st.put(71, 19);
  58. st.put(48, 42);
  59. st.put(38334343, 92);
  60.  
  61. assert(!st.isEmpty()) : "symbol table is empty after inserting elemetns";
  62. assert(st.size() == 11 + 3) : "does not contain correct number of elements";
  63. assert(st.contains(-42341145)) : "added key -42341145 does not exist";
  64. assert(st.contains(0)) : "added key 0 does not exist" ;
  65. assert(st.contains(38334343)) : "added key 38334343 does not exist";
  66. assert(!st.contains(-62341145)) : "contains unknown key -62341145";
  67. assert(!st.contains(-1)) : "contains unknown key -1";
  68. assert(!st.contains(58334343)) : "contains unknown key -58334343";
  69.  
  70. Set<Integer> stKeys = new HashSet<>();
  71. for(Integer i : st.keys())
  72. stKeys.add(i);
  73. assert(stKeys.equals(keys)) : "keys do not match expected";
  74.  
  75. //note: the following code does not check if keys is maintained properl- it should.
  76.  
  77. System.out.println(" Testing put()... ");
  78.  
  79. //add new key
  80. int size = st.size();
  81. st.put(99, 42);
  82. assert(st.size() == size + 1) : "size did not update.";
  83. assert(st.contains(99)) : "does not contain new key";
  84. assert(st.get(99) == 42) : "does not return correct value";
  85.  
  86. //update existing key
  87. size = st.size();
  88. st.put(-72, 2);
  89. assert(st.size() == size) : "size changed";
  90. assert(st.contains(-72)) : "does not contain updated key";
  91. assert(st.get(-72) == 2) : "does not return updated value";
  92.  
  93.  
  94. System.out.println(" Testing get... ");
  95.  
  96. //get key not there
  97. size = st.size();
  98. Integer ret = st.get(10);
  99. assert(ret == null) : "returned non-null for key that doesn't exist";
  100. assert(st.size() == size) : "size changed";
  101. assert(!st.contains(10)) : "a key that doesn't exist appeared after get'ing it";
  102.  
  103. //get key there (2, 96)
  104. size = st.size();
  105. ret = st.get(2);
  106. assert(ret == 96) : "returned incorrect value for key";
  107. assert(st.size() == size) : "size changed";
  108. assert(st.contains(2)) : "key vanished after get'ing it";
  109.  
  110.  
  111. System.out.println(" Testing delete... ");
  112.  
  113. //delete key not there
  114. size = st.size();
  115. st.delete(49);
  116. assert(st.get(49) == null) : "returned non-null for key that was deleted";
  117. assert(st.size() == size) : "size changed";
  118. assert(!st.contains(49)) : "a missing key is contained after it was deleted";
  119.  
  120. //delete key there (0, 4)
  121. size = st.size();
  122. st.delete(0);
  123. assert(st.get(0) == null) : "returned non-null for key that was deleted";
  124. assert(st.size() == size - 1) : "size did not update";
  125. assert(!st.contains(0)) : "a deleted key is still contained";
  126.  
  127. System.out.println(" Testing get... again...");
  128.  
  129. //get key there (997, 0)
  130. size = st.size();
  131. ret = st.get(997);
  132. assert(ret == 0) : "returned incorrect value for key";
  133. assert(st.size() == size) : "size changed";
  134. assert(st.contains(997)) : "key vanished after get'ing it";
  135.  
  136. System.out.println(" DONE\n");
  137. }
  138.  
  139. /**
  140. * Test string operations on symbol table implementation. No JUnit; ugly.
  141. *
  142. * @param st An object implementing a symbol table.
  143. */
  144. public static void testStrings(SymbolTable<String, Integer> st) {
  145.  
  146. System.out.println("*STRING TESTING*");
  147. System.out.println(" Testing creation and basic methods... ");
  148.  
  149. //populate initial symbol table.
  150. Set<String> keys = new HashSet<>(Arrays.asList("DFKDJSFS", "DAFDW", "XZC", "adsfas", "a", "B", "112323", "<Object>", "AAAA", "A"));
  151. st.put("DFKDJSFS", 21);
  152. st.put("DAFDW", 52);
  153. st.put("XZC", 5);
  154. st.put("adsfas", 8);
  155. st.put("a", 58);
  156. st.put("B", 0);
  157. st.put("112323", 84);
  158. st.put("<Object>", 743564);
  159. st.put("AAAA", 7);
  160. st.put("A", 1);
  161.  
  162. assert(!st.isEmpty()) : "symbol table is empty after inserting elemetns";
  163. assert(st.size() == 10) : "does not contain correct number of elements";
  164. assert(st.contains("112323")) : "added key -42341145 does not exist";
  165. assert(st.contains("a")) : "added key 0 does not exist" ;
  166. assert(st.contains("DFKDJSFS")) : "added key 38334343 does not exist";
  167. assert(!st.contains("b")) : "contains unknown key -62341145";
  168. assert(!st.contains("AA")) : "contains unknown key -1";
  169. assert(!st.contains("FDFDSFSFDSFDS")) : "contains unknown key -58334343";
  170.  
  171. Set<String> stKeys = new HashSet<>();
  172. for(String i : st.keys())
  173. stKeys.add(i);
  174. assert(stKeys.equals(keys)) : "keys do not match expected";
  175.  
  176. //note: the following code does not check if keys is maintained properl- it should.
  177.  
  178. System.out.println(" Testing put()... ");
  179.  
  180. //add new key
  181. int size = st.size();
  182. st.put("TEST", 42);
  183. assert(st.size() == size + 1) : "size did not update.";
  184. assert(st.contains("TEST")) : "does not contain new key";
  185. assert(st.get("TEST") == 42) : "does not return correct value";
  186.  
  187. //update existing key
  188. size = st.size();
  189. st.put("AAAA", 2);
  190. assert(st.size() == size) : "size changed";
  191. assert(st.contains("AAAA")) : "does not contain updated key";
  192. assert(st.get("AAAA") == 2) : "does not return updated value";
  193.  
  194.  
  195. System.out.println(" Testing get... ");
  196.  
  197. //get key not there
  198. size = st.size();
  199. Integer ret = st.get("TEST2");
  200. assert(ret == null) : "returned non-null for key that doesn't exist";
  201. assert(st.size() == size) : "size changed";
  202. assert(!st.contains("TEST2")) : "a key that doesn't exist appeared after get'ing it";
  203.  
  204. //get key there ("DAFDW", 52)
  205. size = st.size();
  206. ret = st.get("DAFDW");
  207. assert(ret == 52) : "returned incorrect value for key";
  208. assert(st.size() == size) : "size changed";
  209. assert(st.contains("DAFDW")) : "key vanished after get'ing it";
  210.  
  211.  
  212. System.out.println(" Testing delete... ");
  213.  
  214. //delete key not there
  215. size = st.size();
  216. st.delete("<Object>ZZZ");
  217. assert(st.get("<Object>ZZZ") == null) : "returned non-null for key that was deleted";
  218. assert(st.size() == size) : "size changed";
  219. assert(!st.contains("<Object>ZZZ")) : "a missing key is contained after it was deleted";
  220.  
  221. //delete key there ("<Object>", 743564)
  222. size = st.size();
  223. st.delete("<Object>");
  224. assert(st.get("<Object>") == null) : "returned non-null for key that was deleted";
  225. assert(st.size() == size - 1) : "size did not update";
  226. assert(!st.contains("<Object>")) : "a deleted key is still contained";
  227.  
  228. System.out.println(" DONE\n");
  229. }
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement