/specs/data/queue.ds

http://github.com/wilkie/djehuty · Unknown · 245 lines · 185 code · 60 blank · 0 comment · 0 complexity · 40ba3ad56e63547236a01798ed33910f MD5 · raw file

  1. module specs.data.queue;
  2. import data.queue;
  3. describe queue() {
  4. describe creation() {
  5. it should_work_as_expected() {
  6. Queue!(int) list = new Queue!(int)();
  7. shouldNot(list is null);
  8. should(list.length == 0);
  9. }
  10. }
  11. describe add() {
  12. it should_add_item_to_the_head() {
  13. Queue!(int) list = new Queue!(int)();
  14. int item = 42;
  15. list.add(item);
  16. should(list.length == 1);
  17. should(list.peek() == item);
  18. }
  19. it should_an_a_list_to_list() {
  20. Queue!(int) list1 = new Queue!(int)();
  21. Queue!(int) list2 = new Queue!(int)();
  22. int item = 33;
  23. list2.add(item);
  24. list1.add(list2);
  25. should(list1.length == 1);
  26. should(list1.peek() == item);
  27. }
  28. it should_add_an_array_to_list() {
  29. int[3] arr = 1;
  30. Queue!(int) list = new Queue!(int)();
  31. list.add(arr);
  32. should(list.length == 3);
  33. should(list.peek() == arr[2]);
  34. }
  35. }
  36. describe peek() {
  37. it should_return_the_head() {
  38. Queue!(int) list = new Queue!(int)();
  39. int item1 = 1;
  40. int item2 = 2;
  41. int item3 = 3;
  42. list.add(item1);
  43. list.add(item2);
  44. list.add(item3);
  45. should(list.peek() == item3);
  46. }
  47. it should_return_the_item_at_index() {
  48. Queue!(int) list = new Queue!(int)();
  49. int item1 = 1;
  50. int item2 = 2;
  51. int item3 = 3;
  52. list.add(item1);
  53. list.add(item2);
  54. list.add(item3);
  55. should(list.peekAt(0) == item3);
  56. should(list.peekAt(1) == item2);
  57. should(list.peekAt(2) == item1);
  58. }
  59. }
  60. describe remove() {
  61. it should_remove_the_tail() {
  62. Queue!(int) list = new Queue!(int)();
  63. int item = 1;
  64. list.add(item);
  65. should(list.remove() == item);
  66. should(list.length == 0);
  67. }
  68. it should_remove_by_data() {
  69. Queue!(int) list = new Queue!(int)();
  70. int item = 1;
  71. list.add(item);
  72. should(list.remove(item) == item);
  73. should(list.length == 0);
  74. }
  75. it should_remove_at_index(){
  76. Queue!(int) list = new Queue!(int)();
  77. int item1 = 1;
  78. int item2 = 2;
  79. int item3 = 3;
  80. list.add(item1);
  81. list.add(item2);
  82. list.add(item3);
  83. should(list.removeAt(2) == item1);
  84. should(list.length == 2);
  85. should(list.removeAt(1) == item2);
  86. should(list.length == 1);
  87. should(list.removeAt(0) == item3);
  88. should(list.length == 0);
  89. }
  90. }
  91. describe clear() {
  92. it should_work_as_expected() {
  93. Queue!(int) list = new Queue!(int)();
  94. list.add(1);
  95. list.add(2);
  96. list.add(3);
  97. list.clear();
  98. should(list.length == 0);
  99. }
  100. }
  101. describe empty() {
  102. it should_work_as_expected() {
  103. Queue!(int) list = new Queue!(int)();
  104. should(list.empty());
  105. list.add(1);
  106. shouldNot(list.empty());
  107. }
  108. }
  109. describe operations() {
  110. it should_peek_at_the_index() {
  111. Queue!(int) list = new Queue!(int)();
  112. int entry = 1;
  113. list.add(entry);
  114. should(list[0] == entry);
  115. }
  116. }
  117. describe array() {
  118. it should_return_an_array_of_the_list() {
  119. Queue!(int) list = new Queue!(int)();
  120. int entry1 = 1;
  121. int entry2 = 2;
  122. int entry3 = 3;
  123. list.add(entry1);
  124. list.add(entry2);
  125. list.add(entry3);
  126. int[] listArr = list.array();
  127. shouldNot(listArr is null);
  128. should(listArr[0] == entry1);
  129. should(listArr[1] == entry2);
  130. should(listArr[2] == entry3);
  131. }
  132. }
  133. describe duplication() {
  134. it should_work_as_expected() {
  135. Queue!(int) list = new Queue!(int)();
  136. int entry = 1;
  137. list.add(entry);
  138. Queue!(int) dupList = list.dup();
  139. shouldNot(dupList is null);
  140. should(dupList.peek() == entry);
  141. }
  142. }
  143. describe slicing() {
  144. it should_work_as_expected() {
  145. Queue!(int) list = new Queue!(int)();
  146. int entry1 = 1;
  147. int entry2 = 2;
  148. int entry3 = 3;
  149. list.add(entry3);
  150. list.add(entry2);
  151. list.add(entry1);
  152. Queue!(int) sliceList = list.slice(0,2);
  153. shouldNot(sliceList is null);
  154. should(sliceList.length == 2);
  155. should(sliceList.remove() == entry3);
  156. should(sliceList.remove() == entry2);
  157. }
  158. }
  159. describe reverse() {
  160. it should_work_as_expected {
  161. Queue!(int) list = new Queue!(int)();
  162. int entry1 = 1;
  163. int entry2 = 2;
  164. int entry3 = 3;
  165. list.add(entry1);
  166. list.add(entry2);
  167. list.add(entry3);
  168. Queue!(int) revList = list.reverse();
  169. shouldNot(revList is null);
  170. should(revList.length == 3);
  171. should(revList.remove() == entry1);
  172. should(revList.remove() == entry2);
  173. should(revList.remove() == entry3);
  174. }
  175. }
  176. describe string() {
  177. it should_work_as_expected {
  178. Queue!(int) list = new Queue!(int)();
  179. list.add(1);
  180. list.add(2);
  181. list.add(3);
  182. should(list.toString() == "[1, 2, 3]");
  183. }
  184. }
  185. }