hamster 1.0.0 → 1.0.1.pre.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hamster.rb +2 -3
  3. data/lib/hamster/core_ext.rb +1 -0
  4. data/lib/hamster/core_ext/enumerable.rb +17 -17
  5. data/lib/hamster/core_ext/enumerator.rb +16 -0
  6. data/lib/hamster/core_ext/io.rb +17 -15
  7. data/lib/hamster/enumerable.rb +107 -123
  8. data/lib/hamster/experimental/mutable_queue.rb +6 -2
  9. data/lib/hamster/experimental/mutable_set.rb +3 -1
  10. data/lib/hamster/experimental/mutable_stack.rb +30 -0
  11. data/lib/hamster/hash.rb +95 -713
  12. data/lib/hamster/immutable.rb +0 -4
  13. data/lib/hamster/list.rb +242 -1062
  14. data/lib/hamster/mutable_hash.rb +3 -1
  15. data/lib/hamster/queue.rb +87 -0
  16. data/lib/hamster/read_copy_update.rb +1 -2
  17. data/lib/hamster/set.rb +73 -478
  18. data/lib/hamster/sorter.rb +25 -0
  19. data/lib/hamster/stack.rb +75 -0
  20. data/lib/hamster/trie.rb +48 -199
  21. data/lib/hamster/tuple.rb +39 -0
  22. data/lib/hamster/undefined.rb +3 -1
  23. data/lib/hamster/vector.rb +72 -1326
  24. data/lib/hamster/version.rb +1 -1
  25. data/spec/hamster/core_ext/array_spec.rb +20 -0
  26. data/spec/{lib/hamster → hamster}/core_ext/enumerable_spec.rb +0 -5
  27. data/spec/hamster/core_ext/enumerator_spec.rb +19 -0
  28. data/spec/{lib/hamster → hamster}/core_ext/io_spec.rb +0 -0
  29. data/spec/hamster/experimental/mutable_set/add_qm_spec.rb +47 -0
  30. data/spec/hamster/experimental/mutable_set/add_spec.rb +51 -0
  31. data/spec/hamster/experimental/mutable_set/delete_qm_spec.rb +47 -0
  32. data/spec/hamster/experimental/mutable_set/delete_spec.rb +47 -0
  33. data/spec/hamster/experimental/mutable_stack/pop_spec.rb +41 -0
  34. data/spec/hamster/experimental/mutable_stack/push_spec.rb +41 -0
  35. data/spec/hamster/hash/all_spec.rb +59 -0
  36. data/spec/hamster/hash/any_spec.rb +67 -0
  37. data/spec/hamster/hash/clear_spec.rb +36 -0
  38. data/spec/hamster/hash/construction_spec.rb +35 -0
  39. data/spec/{lib/hamster → hamster}/hash/copying_spec.rb +12 -3
  40. data/spec/hamster/hash/delete_spec.rb +47 -0
  41. data/spec/hamster/hash/each_spec.rb +41 -0
  42. data/spec/hamster/hash/empty_spec.rb +27 -0
  43. data/spec/hamster/hash/eql_spec.rb +62 -0
  44. data/spec/hamster/hash/except_spec.rb +31 -0
  45. data/spec/hamster/hash/fetch_spec.rb +95 -0
  46. data/spec/hamster/hash/filter_spec.rb +63 -0
  47. data/spec/hamster/hash/find_spec.rb +58 -0
  48. data/spec/hamster/hash/get_spec.rb +55 -0
  49. data/spec/hamster/hash/has_key_spec.rb +35 -0
  50. data/spec/hamster/hash/hash_spec.rb +52 -0
  51. data/spec/{lib/hamster → hamster}/hash/immutable_spec.rb +3 -0
  52. data/spec/hamster/hash/inspect_spec.rb +32 -0
  53. data/spec/hamster/hash/keys_spec.rb +21 -0
  54. data/spec/hamster/hash/map_spec.rb +64 -0
  55. data/spec/{lib/hamster → hamster}/hash/marshal_spec.rb +3 -3
  56. data/spec/hamster/hash/merge_spec.rb +36 -0
  57. data/spec/{lib/hamster → hamster}/hash/none_spec.rb +14 -12
  58. data/spec/hamster/hash/put_spec.rb +65 -0
  59. data/spec/hamster/hash/reduce_spec.rb +60 -0
  60. data/spec/hamster/hash/remove_spec.rb +63 -0
  61. data/spec/{lib/hamster → hamster}/hash/size_spec.rb +2 -2
  62. data/spec/hamster/hash/slice_spec.rb +26 -0
  63. data/spec/hamster/hash/uniq_spec.rb +23 -0
  64. data/spec/hamster/hash/values_spec.rb +34 -0
  65. data/spec/{lib/hamster → hamster}/immutable/copying_spec.rb +8 -1
  66. data/spec/{lib/hamster → hamster}/immutable/immutable_spec.rb +14 -1
  67. data/spec/{lib/hamster → hamster}/immutable/memoize_spec.rb +3 -2
  68. data/spec/{lib/hamster → hamster}/immutable/new_spec.rb +0 -0
  69. data/spec/{lib/hamster → hamster}/immutable/transform_spec.rb +0 -0
  70. data/spec/{lib/hamster → hamster}/immutable/transform_unless_spec.rb +0 -0
  71. data/spec/hamster/list/add_spec.rb +16 -0
  72. data/spec/hamster/list/all_spec.rb +111 -0
  73. data/spec/hamster/list/any_spec.rb +79 -0
  74. data/spec/{lib/hamster → hamster}/list/append_spec.rb +22 -11
  75. data/spec/hamster/list/at_spec.rb +49 -0
  76. data/spec/hamster/list/break_spec.rb +85 -0
  77. data/spec/{lib/hamster → hamster}/list/cadr_spec.rb +17 -6
  78. data/spec/{lib/hamster → hamster}/list/chunk_spec.rb +17 -6
  79. data/spec/{lib/hamster → hamster}/list/clear_spec.rb +16 -5
  80. data/spec/hamster/list/combinations_spec.rb +51 -0
  81. data/spec/{lib/hamster → hamster}/list/compact_spec.rb +17 -6
  82. data/spec/hamster/list/cons_spec.rb +41 -0
  83. data/spec/hamster/list/construction_spec.rb +166 -0
  84. data/spec/{lib/hamster → hamster}/list/copying_spec.rb +16 -4
  85. data/spec/hamster/list/count_spec.rb +66 -0
  86. data/spec/hamster/list/cycle_spec.rb +45 -0
  87. data/spec/{lib/hamster → hamster}/list/drop_spec.rb +17 -6
  88. data/spec/hamster/list/drop_while_spec.rb +59 -0
  89. data/spec/hamster/list/each_slice_spec.rb +80 -0
  90. data/spec/hamster/list/each_spec.rb +72 -0
  91. data/spec/hamster/list/each_with_index_spec.rb +42 -0
  92. data/spec/hamster/list/elem_index_spec.rb +58 -0
  93. data/spec/hamster/list/elem_indices_spec.rb +45 -0
  94. data/spec/hamster/list/empty_spec.rb +47 -0
  95. data/spec/hamster/list/eql_spec.rb +78 -0
  96. data/spec/hamster/list/filter_spec.rb +70 -0
  97. data/spec/{lib/hamster → hamster}/list/find_all_spec.rb +2 -3
  98. data/spec/{lib/hamster → hamster}/list/find_index_spec.rb +27 -5
  99. data/spec/hamster/list/find_indices_spec.rb +45 -0
  100. data/spec/{lib/hamster → hamster}/list/find_spec.rb +33 -11
  101. data/spec/{lib/hamster → hamster}/list/flat_map_spec.rb +0 -0
  102. data/spec/{lib/hamster → hamster}/list/flatten_spec.rb +17 -6
  103. data/spec/{lib/hamster → hamster}/list/grep_spec.rb +33 -10
  104. data/spec/{lib/hamster → hamster}/list/group_by_spec.rb +44 -9
  105. data/spec/{lib/hamster → hamster}/list/hash_spec.rb +12 -4
  106. data/spec/{lib/hamster → hamster}/list/head_spec.rb +18 -3
  107. data/spec/{lib/hamster → hamster}/list/include_spec.rb +27 -6
  108. data/spec/{lib/hamster → hamster}/list/init_spec.rb +17 -6
  109. data/spec/hamster/list/inits_spec.rb +42 -0
  110. data/spec/hamster/list/inspect_spec.rb +43 -0
  111. data/spec/{lib/hamster → hamster}/list/intersperse_spec.rb +17 -6
  112. data/spec/hamster/list/join_spec.rb +81 -0
  113. data/spec/hamster/list/last_spec.rb +44 -0
  114. data/spec/{lib/hamster → hamster}/list/map_spec.rb +35 -12
  115. data/spec/hamster/list/maximum_spec.rb +77 -0
  116. data/spec/{lib/hamster → hamster}/list/merge_by_spec.rb +32 -5
  117. data/spec/{lib/hamster → hamster}/list/merge_spec.rb +20 -1
  118. data/spec/hamster/list/minimum_spec.rb +77 -0
  119. data/spec/{lib/hamster → hamster}/list/none_spec.rb +39 -12
  120. data/spec/{lib/hamster → hamster}/list/one_spec.rb +38 -13
  121. data/spec/hamster/list/partition_spec.rb +75 -0
  122. data/spec/{lib/hamster → hamster}/list/pop_spec.rb +1 -1
  123. data/spec/hamster/list/product_spec.rb +44 -0
  124. data/spec/hamster/list/reduce_spec.rb +73 -0
  125. data/spec/{lib/hamster/list/reject_spec.rb → hamster/list/remove_spec.rb} +35 -11
  126. data/spec/{lib/hamster → hamster}/list/reverse_spec.rb +25 -8
  127. data/spec/{lib/hamster → hamster}/list/select_spec.rb +2 -3
  128. data/spec/{lib/hamster → hamster}/list/size_spec.rb +26 -5
  129. data/spec/hamster/list/slice_spec.rb +50 -0
  130. data/spec/{lib/hamster → hamster}/list/sorting_spec.rb +34 -11
  131. data/spec/hamster/list/span_spec.rb +86 -0
  132. data/spec/{lib/hamster → hamster}/list/split_at_spec.rb +23 -14
  133. data/spec/hamster/list/sum_spec.rb +44 -0
  134. data/spec/hamster/list/tail_spec.rb +48 -0
  135. data/spec/hamster/list/tails_spec.rb +42 -0
  136. data/spec/{lib/hamster → hamster}/list/take_spec.rb +17 -6
  137. data/spec/{lib/hamster → hamster}/list/take_while_spec.rb +18 -11
  138. data/spec/hamster/list/to_a_spec.rb +54 -0
  139. data/spec/{lib/hamster → hamster}/list/to_ary_spec.rb +4 -1
  140. data/spec/{lib/hamster → hamster}/list/to_list_spec.rb +16 -4
  141. data/spec/hamster/list/to_set_spec.rb +33 -0
  142. data/spec/{lib/hamster → hamster}/list/union_spec.rb +23 -6
  143. data/spec/hamster/list/uniq_spec.rb +45 -0
  144. data/spec/{lib/hamster → hamster}/list/zip_spec.rb +9 -2
  145. data/spec/hamster/queue/clear_spec.rb +36 -0
  146. data/spec/hamster/queue/construction_spec.rb +43 -0
  147. data/spec/hamster/queue/dequeue_spec.rb +40 -0
  148. data/spec/hamster/queue/empty_spec.rb +47 -0
  149. data/spec/{lib/hamster/deque → hamster/queue}/enqueue_spec.rb +21 -8
  150. data/spec/hamster/queue/head_spec.rb +35 -0
  151. data/spec/hamster/queue/inspect_spec.rb +31 -0
  152. data/spec/{lib/hamster/deque → hamster/queue}/size_spec.rb +20 -5
  153. data/spec/hamster/queue/to_a_spec.rb +42 -0
  154. data/spec/{lib/hamster/deque → hamster/queue}/to_ary_spec.rb +6 -6
  155. data/spec/hamster/queue/to_list_spec.rb +44 -0
  156. data/spec/hamster/set/add_spec.rb +51 -0
  157. data/spec/hamster/set/all_spec.rb +67 -0
  158. data/spec/hamster/set/any_spec.rb +67 -0
  159. data/spec/hamster/set/clear_spec.rb +36 -0
  160. data/spec/{lib/hamster → hamster}/set/compact_spec.rb +16 -5
  161. data/spec/{lib/hamster → hamster}/set/construction_spec.rb +17 -5
  162. data/spec/{lib/hamster → hamster}/set/copying_spec.rb +12 -3
  163. data/spec/{lib/hamster → hamster}/set/count_spec.rb +28 -11
  164. data/spec/hamster/set/delete_spec.rb +47 -0
  165. data/spec/{lib/hamster/sorted_set → hamster/set}/difference_spec.rb +21 -7
  166. data/spec/{lib/hamster/set/reverse_each_spec.rb → hamster/set/each_spec.rb} +7 -8
  167. data/spec/hamster/set/empty_spec.rb +35 -0
  168. data/spec/{lib/hamster → hamster}/set/eqeq_spec.rb +0 -0
  169. data/spec/{lib/hamster → hamster}/set/eql_spec.rb +1 -7
  170. data/spec/{lib/hamster/sorted_set → hamster/set}/exclusion_spec.rb +20 -5
  171. data/spec/hamster/set/filter_spec.rb +79 -0
  172. data/spec/{lib/hamster → hamster}/set/find_spec.rb +25 -8
  173. data/spec/hamster/set/flatten_spec.rb +49 -0
  174. data/spec/hamster/set/foreach_spec.rb +39 -0
  175. data/spec/{lib/hamster → hamster}/set/grep_spec.rb +1 -1
  176. data/spec/hamster/set/group_by_spec.rb +65 -0
  177. data/spec/hamster/set/hash_spec.rb +20 -0
  178. data/spec/hamster/set/head_spec.rb +39 -0
  179. data/spec/{lib/hamster → hamster}/set/immutable_spec.rb +4 -1
  180. data/spec/hamster/set/include_spec.rb +35 -0
  181. data/spec/hamster/set/inspect_spec.rb +32 -0
  182. data/spec/hamster/set/intersection_spec.rb +46 -0
  183. data/spec/{lib/hamster/vector → hamster/set}/join_spec.rb +33 -23
  184. data/spec/hamster/set/map_spec.rb +64 -0
  185. data/spec/{lib/hamster → hamster}/set/marshal_spec.rb +9 -4
  186. data/spec/hamster/set/maximum_spec.rb +65 -0
  187. data/spec/hamster/set/minimum_spec.rb +65 -0
  188. data/spec/{lib/hamster → hamster}/set/none_spec.rb +30 -15
  189. data/spec/{lib/hamster → hamster}/set/one_spec.rb +29 -14
  190. data/spec/hamster/set/partition_spec.rb +71 -0
  191. data/spec/{lib/hamster → hamster}/set/product_spec.rb +15 -7
  192. data/spec/hamster/set/reduce_spec.rb +87 -0
  193. data/spec/hamster/set/remove_spec.rb +63 -0
  194. data/spec/{lib/hamster → hamster}/set/size_spec.rb +10 -1
  195. data/spec/{lib/hamster → hamster}/set/sorting_spec.rb +16 -18
  196. data/spec/hamster/set/subset_spec.rb +39 -0
  197. data/spec/{lib/hamster/vector → hamster/set}/sum_spec.rb +18 -4
  198. data/spec/hamster/set/superset_spec.rb +39 -0
  199. data/spec/hamster/set/to_a_spec.rb +42 -0
  200. data/spec/{lib/hamster/vector → hamster/set}/to_list_spec.rb +23 -8
  201. data/spec/{lib/hamster → hamster}/set/to_set_spec.rb +15 -3
  202. data/spec/hamster/set/union_spec.rb +45 -0
  203. data/spec/hamster/set/uniq_spec.rb +23 -0
  204. data/spec/hamster/sorter/immutable_spec.rb +12 -0
  205. data/spec/hamster/stack/clear_spec.rb +36 -0
  206. data/spec/hamster/stack/construction_spec.rb +43 -0
  207. data/spec/hamster/stack/copying_spec.rb +31 -0
  208. data/spec/hamster/stack/empty_spec.rb +31 -0
  209. data/spec/hamster/stack/eql_spec.rb +60 -0
  210. data/spec/hamster/stack/immutable_spec.rb +12 -0
  211. data/spec/hamster/stack/inspect_spec.rb +31 -0
  212. data/spec/hamster/stack/peek_spec.rb +40 -0
  213. data/spec/hamster/stack/pop_spec.rb +41 -0
  214. data/spec/hamster/stack/push_spec.rb +41 -0
  215. data/spec/hamster/stack/size_spec.rb +35 -0
  216. data/spec/hamster/stack/to_a_spec.rb +42 -0
  217. data/spec/hamster/stack/to_ary.rb +37 -0
  218. data/spec/hamster/stack/to_list_spec.rb +33 -0
  219. data/spec/hamster/trie/remove_spec.rb +117 -0
  220. data/spec/hamster/tuple/copying_spec.rb +24 -0
  221. data/spec/hamster/tuple/eql_spec.rb +61 -0
  222. data/spec/hamster/tuple/first_spec.rb +19 -0
  223. data/spec/hamster/tuple/immutable_spec.rb +12 -0
  224. data/spec/hamster/tuple/inspect_spec.rb +19 -0
  225. data/spec/hamster/tuple/last_spec.rb +19 -0
  226. data/spec/hamster/tuple/to_a_spec.rb +38 -0
  227. data/spec/hamster/tuple/to_ary_spec.rb +38 -0
  228. data/spec/hamster/undefined/erase_spec.rb +47 -0
  229. data/spec/hamster/vector/add_spec.rb +48 -0
  230. data/spec/{lib/hamster → hamster}/vector/any_spec.rb +0 -0
  231. data/spec/hamster/vector/clear_spec.rb +35 -0
  232. data/spec/{lib/hamster → hamster}/vector/copying_spec.rb +14 -4
  233. data/spec/hamster/vector/each_spec.rb +45 -0
  234. data/spec/hamster/vector/each_with_index_spec.rb +41 -0
  235. data/spec/hamster/vector/empty_spec.rb +34 -0
  236. data/spec/hamster/vector/eql_spec.rb +64 -0
  237. data/spec/hamster/vector/filter_spec.rb +62 -0
  238. data/spec/hamster/vector/first_spec.rb +35 -0
  239. data/spec/hamster/vector/get_spec.rb +80 -0
  240. data/spec/{lib/hamster → hamster}/vector/include_spec.rb +17 -4
  241. data/spec/hamster/vector/inspect_spec.rb +33 -0
  242. data/spec/{lib/hamster → hamster}/vector/last_spec.rb +3 -12
  243. data/spec/{lib/hamster → hamster}/vector/length_spec.rb +3 -12
  244. data/spec/hamster/vector/map_spec.rb +63 -0
  245. data/spec/{lib/hamster → hamster}/vector/reduce_spec.rb +47 -16
  246. data/spec/hamster/vector/set_spec.rb +113 -0
  247. data/spec/{lib/hamster → hamster}/vector/to_a_spec.rb +12 -11
  248. data/spec/{lib/hamster → hamster}/vector/to_ary_spec.rb +0 -0
  249. data/spec/lib/hamster/vector/cons_spec.rb +48 -0
  250. data/spec/lib/hamster/vector/exist_spec.rb +70 -0
  251. data/spec/lib/hamster/vector/exists_spec.rb +70 -0
  252. data/spec/lib/hamster/vector/ltlt_spec.rb +2 -20
  253. data/spec/spec_helper.rb +5 -36
  254. metadata +510 -723
  255. data/lib/hamster/deque.rb +0 -252
  256. data/lib/hamster/nested.rb +0 -36
  257. data/lib/hamster/sorted_set.rb +0 -1397
  258. data/spec/lib/hamster/core_ext/array_spec.rb +0 -14
  259. data/spec/lib/hamster/deque/clear_spec.rb +0 -34
  260. data/spec/lib/hamster/deque/construction_spec.rb +0 -30
  261. data/spec/lib/hamster/deque/copying_spec.rb +0 -20
  262. data/spec/lib/hamster/deque/dequeue_spec.rb +0 -35
  263. data/spec/lib/hamster/deque/empty_spec.rb +0 -40
  264. data/spec/lib/hamster/deque/first_spec.rb +0 -18
  265. data/spec/lib/hamster/deque/inspect_spec.rb +0 -24
  266. data/spec/lib/hamster/deque/last_spec.rb +0 -18
  267. data/spec/lib/hamster/deque/marshal_spec.rb +0 -34
  268. data/spec/lib/hamster/deque/new_spec.rb +0 -44
  269. data/spec/lib/hamster/deque/pop_spec.rb +0 -33
  270. data/spec/lib/hamster/deque/pretty_print_spec.rb +0 -24
  271. data/spec/lib/hamster/deque/random_modification_spec.rb +0 -34
  272. data/spec/lib/hamster/deque/to_a_spec.rb +0 -27
  273. data/spec/lib/hamster/deque/to_list_spec.rb +0 -26
  274. data/spec/lib/hamster/deque/unshift_spec.rb +0 -26
  275. data/spec/lib/hamster/experimental/mutable_set/add_qm_spec.rb +0 -39
  276. data/spec/lib/hamster/experimental/mutable_set/add_spec.rb +0 -37
  277. data/spec/lib/hamster/experimental/mutable_set/delete_qm_spec.rb +0 -38
  278. data/spec/lib/hamster/experimental/mutable_set/delete_spec.rb +0 -37
  279. data/spec/lib/hamster/hash/all_spec.rb +0 -54
  280. data/spec/lib/hamster/hash/any_spec.rb +0 -54
  281. data/spec/lib/hamster/hash/assoc_spec.rb +0 -52
  282. data/spec/lib/hamster/hash/clear_spec.rb +0 -43
  283. data/spec/lib/hamster/hash/construction_spec.rb +0 -39
  284. data/spec/lib/hamster/hash/default_proc_spec.rb +0 -73
  285. data/spec/lib/hamster/hash/delete_spec.rb +0 -40
  286. data/spec/lib/hamster/hash/each_spec.rb +0 -78
  287. data/spec/lib/hamster/hash/each_with_index_spec.rb +0 -30
  288. data/spec/lib/hamster/hash/empty_spec.rb +0 -44
  289. data/spec/lib/hamster/hash/eql_spec.rb +0 -70
  290. data/spec/lib/hamster/hash/except_spec.rb +0 -43
  291. data/spec/lib/hamster/hash/fetch_spec.rb +0 -58
  292. data/spec/lib/hamster/hash/find_spec.rb +0 -44
  293. data/spec/lib/hamster/hash/flat_map_spec.rb +0 -36
  294. data/spec/lib/hamster/hash/flatten_spec.rb +0 -99
  295. data/spec/lib/hamster/hash/get_spec.rb +0 -80
  296. data/spec/lib/hamster/hash/has_key_spec.rb +0 -32
  297. data/spec/lib/hamster/hash/has_value_spec.rb +0 -28
  298. data/spec/lib/hamster/hash/hash_spec.rb +0 -30
  299. data/spec/lib/hamster/hash/inspect_spec.rb +0 -31
  300. data/spec/lib/hamster/hash/invert_spec.rb +0 -31
  301. data/spec/lib/hamster/hash/key_spec.rb +0 -28
  302. data/spec/lib/hamster/hash/keys_spec.rb +0 -17
  303. data/spec/lib/hamster/hash/map_spec.rb +0 -46
  304. data/spec/lib/hamster/hash/merge_spec.rb +0 -83
  305. data/spec/lib/hamster/hash/min_max_spec.rb +0 -46
  306. data/spec/lib/hamster/hash/new_spec.rb +0 -71
  307. data/spec/lib/hamster/hash/partition_spec.rb +0 -36
  308. data/spec/lib/hamster/hash/pretty_print_spec.rb +0 -35
  309. data/spec/lib/hamster/hash/put_spec.rb +0 -103
  310. data/spec/lib/hamster/hash/reduce_spec.rb +0 -36
  311. data/spec/lib/hamster/hash/reject_spec.rb +0 -62
  312. data/spec/lib/hamster/hash/reverse_each_spec.rb +0 -28
  313. data/spec/lib/hamster/hash/sample_spec.rb +0 -14
  314. data/spec/lib/hamster/hash/select_spec.rb +0 -58
  315. data/spec/lib/hamster/hash/slice_spec.rb +0 -45
  316. data/spec/lib/hamster/hash/sort_spec.rb +0 -27
  317. data/spec/lib/hamster/hash/store_spec.rb +0 -76
  318. data/spec/lib/hamster/hash/take_spec.rb +0 -36
  319. data/spec/lib/hamster/hash/to_a_spec.rb +0 -14
  320. data/spec/lib/hamster/hash/to_hash_spec.rb +0 -22
  321. data/spec/lib/hamster/hash/update_in_spec.rb +0 -80
  322. data/spec/lib/hamster/hash/values_at_spec.rb +0 -14
  323. data/spec/lib/hamster/hash/values_spec.rb +0 -25
  324. data/spec/lib/hamster/list/add_spec.rb +0 -26
  325. data/spec/lib/hamster/list/all_spec.rb +0 -58
  326. data/spec/lib/hamster/list/any_spec.rb +0 -50
  327. data/spec/lib/hamster/list/at_spec.rb +0 -30
  328. data/spec/lib/hamster/list/break_spec.rb +0 -70
  329. data/spec/lib/hamster/list/combination_spec.rb +0 -34
  330. data/spec/lib/hamster/list/compare_spec.rb +0 -31
  331. data/spec/lib/hamster/list/cons_spec.rb +0 -26
  332. data/spec/lib/hamster/list/construction_spec.rb +0 -111
  333. data/spec/lib/hamster/list/count_spec.rb +0 -37
  334. data/spec/lib/hamster/list/cycle_spec.rb +0 -29
  335. data/spec/lib/hamster/list/delete_at_spec.rb +0 -19
  336. data/spec/lib/hamster/list/delete_spec.rb +0 -17
  337. data/spec/lib/hamster/list/drop_while_spec.rb +0 -39
  338. data/spec/lib/hamster/list/each_slice_spec.rb +0 -52
  339. data/spec/lib/hamster/list/each_spec.rb +0 -41
  340. data/spec/lib/hamster/list/each_with_index_spec.rb +0 -29
  341. data/spec/lib/hamster/list/empty_spec.rb +0 -24
  342. data/spec/lib/hamster/list/eql_spec.rb +0 -62
  343. data/spec/lib/hamster/list/fill_spec.rb +0 -50
  344. data/spec/lib/hamster/list/index_spec.rb +0 -34
  345. data/spec/lib/hamster/list/indices_spec.rb +0 -62
  346. data/spec/lib/hamster/list/inits_spec.rb +0 -29
  347. data/spec/lib/hamster/list/insert_spec.rb +0 -47
  348. data/spec/lib/hamster/list/inspect_spec.rb +0 -30
  349. data/spec/lib/hamster/list/join_spec.rb +0 -64
  350. data/spec/lib/hamster/list/last_spec.rb +0 -24
  351. data/spec/lib/hamster/list/ltlt_spec.rb +0 -20
  352. data/spec/lib/hamster/list/maximum_spec.rb +0 -40
  353. data/spec/lib/hamster/list/minimum_spec.rb +0 -40
  354. data/spec/lib/hamster/list/multithreading_spec.rb +0 -48
  355. data/spec/lib/hamster/list/partition_spec.rb +0 -116
  356. data/spec/lib/hamster/list/permutation_spec.rb +0 -56
  357. data/spec/lib/hamster/list/product_spec.rb +0 -24
  358. data/spec/lib/hamster/list/reduce_spec.rb +0 -54
  359. data/spec/lib/hamster/list/rotate_spec.rb +0 -37
  360. data/spec/lib/hamster/list/sample_spec.rb +0 -14
  361. data/spec/lib/hamster/list/slice_spec.rb +0 -230
  362. data/spec/lib/hamster/list/span_spec.rb +0 -77
  363. data/spec/lib/hamster/list/subsequences_spec.rb +0 -24
  364. data/spec/lib/hamster/list/sum_spec.rb +0 -24
  365. data/spec/lib/hamster/list/tail_spec.rb +0 -31
  366. data/spec/lib/hamster/list/tails_spec.rb +0 -29
  367. data/spec/lib/hamster/list/to_a_spec.rb +0 -40
  368. data/spec/lib/hamster/list/to_set_spec.rb +0 -19
  369. data/spec/lib/hamster/list/transpose_spec.rb +0 -20
  370. data/spec/lib/hamster/list/uniq_spec.rb +0 -30
  371. data/spec/lib/hamster/nested/construction_spec.rb +0 -44
  372. data/spec/lib/hamster/set/add_spec.rb +0 -76
  373. data/spec/lib/hamster/set/all_spec.rb +0 -52
  374. data/spec/lib/hamster/set/any_spec.rb +0 -52
  375. data/spec/lib/hamster/set/clear_spec.rb +0 -34
  376. data/spec/lib/hamster/set/delete_spec.rb +0 -72
  377. data/spec/lib/hamster/set/difference_spec.rb +0 -50
  378. data/spec/lib/hamster/set/disjoint_spec.rb +0 -26
  379. data/spec/lib/hamster/set/each_spec.rb +0 -46
  380. data/spec/lib/hamster/set/empty_spec.rb +0 -45
  381. data/spec/lib/hamster/set/exclusion_spec.rb +0 -48
  382. data/spec/lib/hamster/set/first_spec.rb +0 -29
  383. data/spec/lib/hamster/set/flatten_spec.rb +0 -47
  384. data/spec/lib/hamster/set/group_by_spec.rb +0 -60
  385. data/spec/lib/hamster/set/hash_spec.rb +0 -23
  386. data/spec/lib/hamster/set/include_spec.rb +0 -61
  387. data/spec/lib/hamster/set/inspect_spec.rb +0 -48
  388. data/spec/lib/hamster/set/intersect_spec.rb +0 -26
  389. data/spec/lib/hamster/set/intersection_spec.rb +0 -53
  390. data/spec/lib/hamster/set/join_spec.rb +0 -65
  391. data/spec/lib/hamster/set/map_spec.rb +0 -60
  392. data/spec/lib/hamster/set/maximum_spec.rb +0 -37
  393. data/spec/lib/hamster/set/minimum_spec.rb +0 -37
  394. data/spec/lib/hamster/set/new_spec.rb +0 -54
  395. data/spec/lib/hamster/set/partition_spec.rb +0 -53
  396. data/spec/lib/hamster/set/reduce_spec.rb +0 -56
  397. data/spec/lib/hamster/set/reject_spec.rb +0 -51
  398. data/spec/lib/hamster/set/sample_spec.rb +0 -14
  399. data/spec/lib/hamster/set/select_spec.rb +0 -74
  400. data/spec/lib/hamster/set/subset_spec.rb +0 -52
  401. data/spec/lib/hamster/set/sum_spec.rb +0 -24
  402. data/spec/lib/hamster/set/superset_spec.rb +0 -52
  403. data/spec/lib/hamster/set/to_a_spec.rb +0 -31
  404. data/spec/lib/hamster/set/to_list_spec.rb +0 -37
  405. data/spec/lib/hamster/set/union_spec.rb +0 -64
  406. data/spec/lib/hamster/sorted_set/above_spec.rb +0 -52
  407. data/spec/lib/hamster/sorted_set/add_spec.rb +0 -63
  408. data/spec/lib/hamster/sorted_set/at_spec.rb +0 -25
  409. data/spec/lib/hamster/sorted_set/below_spec.rb +0 -52
  410. data/spec/lib/hamster/sorted_set/between_spec.rb +0 -52
  411. data/spec/lib/hamster/sorted_set/clear_spec.rb +0 -44
  412. data/spec/lib/hamster/sorted_set/construction_spec.rb +0 -29
  413. data/spec/lib/hamster/sorted_set/delete_at_spec.rb +0 -19
  414. data/spec/lib/hamster/sorted_set/delete_spec.rb +0 -90
  415. data/spec/lib/hamster/sorted_set/disjoint_spec.rb +0 -26
  416. data/spec/lib/hamster/sorted_set/drop_spec.rb +0 -56
  417. data/spec/lib/hamster/sorted_set/drop_while_spec.rb +0 -35
  418. data/spec/lib/hamster/sorted_set/each_spec.rb +0 -29
  419. data/spec/lib/hamster/sorted_set/empty_spec.rb +0 -35
  420. data/spec/lib/hamster/sorted_set/eql_spec.rb +0 -121
  421. data/spec/lib/hamster/sorted_set/fetch_spec.rb +0 -65
  422. data/spec/lib/hamster/sorted_set/find_index_spec.rb +0 -41
  423. data/spec/lib/hamster/sorted_set/first_spec.rb +0 -19
  424. data/spec/lib/hamster/sorted_set/from_spec.rb +0 -52
  425. data/spec/lib/hamster/sorted_set/group_by_spec.rb +0 -58
  426. data/spec/lib/hamster/sorted_set/include_spec.rb +0 -24
  427. data/spec/lib/hamster/sorted_set/inspect_spec.rb +0 -38
  428. data/spec/lib/hamster/sorted_set/intersect_spec.rb +0 -26
  429. data/spec/lib/hamster/sorted_set/intersection_spec.rb +0 -29
  430. data/spec/lib/hamster/sorted_set/last_spec.rb +0 -37
  431. data/spec/lib/hamster/sorted_set/map_spec.rb +0 -36
  432. data/spec/lib/hamster/sorted_set/marshal_spec.rb +0 -37
  433. data/spec/lib/hamster/sorted_set/maximum_spec.rb +0 -37
  434. data/spec/lib/hamster/sorted_set/minimum_spec.rb +0 -20
  435. data/spec/lib/hamster/sorted_set/new_spec.rb +0 -52
  436. data/spec/lib/hamster/sorted_set/reverse_each_spec.rb +0 -29
  437. data/spec/lib/hamster/sorted_set/sample_spec.rb +0 -14
  438. data/spec/lib/hamster/sorted_set/select_spec.rb +0 -62
  439. data/spec/lib/hamster/sorted_set/size_spec.rb +0 -18
  440. data/spec/lib/hamster/sorted_set/slice_spec.rb +0 -257
  441. data/spec/lib/hamster/sorted_set/sorting_spec.rb +0 -45
  442. data/spec/lib/hamster/sorted_set/subset_spec.rb +0 -48
  443. data/spec/lib/hamster/sorted_set/superset_spec.rb +0 -48
  444. data/spec/lib/hamster/sorted_set/take_spec.rb +0 -55
  445. data/spec/lib/hamster/sorted_set/take_while_spec.rb +0 -34
  446. data/spec/lib/hamster/sorted_set/to_set_spec.rb +0 -19
  447. data/spec/lib/hamster/sorted_set/union_spec.rb +0 -28
  448. data/spec/lib/hamster/sorted_set/up_to_spec.rb +0 -52
  449. data/spec/lib/hamster/sorted_set/values_at_spec.rb +0 -34
  450. data/spec/lib/hamster/vector/add_spec.rb +0 -68
  451. data/spec/lib/hamster/vector/assoc_spec.rb +0 -36
  452. data/spec/lib/hamster/vector/bsearch_spec.rb +0 -58
  453. data/spec/lib/hamster/vector/clear_spec.rb +0 -34
  454. data/spec/lib/hamster/vector/combination_spec.rb +0 -82
  455. data/spec/lib/hamster/vector/compact_spec.rb +0 -30
  456. data/spec/lib/hamster/vector/compare_spec.rb +0 -32
  457. data/spec/lib/hamster/vector/concat_spec.rb +0 -35
  458. data/spec/lib/hamster/vector/count_spec.rb +0 -18
  459. data/spec/lib/hamster/vector/delete_at_spec.rb +0 -54
  460. data/spec/lib/hamster/vector/delete_spec.rb +0 -31
  461. data/spec/lib/hamster/vector/drop_spec.rb +0 -42
  462. data/spec/lib/hamster/vector/drop_while_spec.rb +0 -55
  463. data/spec/lib/hamster/vector/each_index_spec.rb +0 -41
  464. data/spec/lib/hamster/vector/each_spec.rb +0 -45
  465. data/spec/lib/hamster/vector/each_with_index_spec.rb +0 -40
  466. data/spec/lib/hamster/vector/empty_spec.rb +0 -42
  467. data/spec/lib/hamster/vector/eql_spec.rb +0 -77
  468. data/spec/lib/hamster/vector/fetch_spec.rb +0 -65
  469. data/spec/lib/hamster/vector/fill_spec.rb +0 -89
  470. data/spec/lib/hamster/vector/first_spec.rb +0 -19
  471. data/spec/lib/hamster/vector/flat_map_spec.rb +0 -51
  472. data/spec/lib/hamster/vector/flatten_spec.rb +0 -44
  473. data/spec/lib/hamster/vector/get_spec.rb +0 -75
  474. data/spec/lib/hamster/vector/group_by_spec.rb +0 -58
  475. data/spec/lib/hamster/vector/insert_spec.rb +0 -69
  476. data/spec/lib/hamster/vector/inspect_spec.rb +0 -50
  477. data/spec/lib/hamster/vector/map_spec.rb +0 -52
  478. data/spec/lib/hamster/vector/marshal_spec.rb +0 -32
  479. data/spec/lib/hamster/vector/maximum_spec.rb +0 -34
  480. data/spec/lib/hamster/vector/minimum_spec.rb +0 -34
  481. data/spec/lib/hamster/vector/multiply_spec.rb +0 -48
  482. data/spec/lib/hamster/vector/new_spec.rb +0 -51
  483. data/spec/lib/hamster/vector/partition_spec.rb +0 -53
  484. data/spec/lib/hamster/vector/permutation_spec.rb +0 -92
  485. data/spec/lib/hamster/vector/pop_spec.rb +0 -27
  486. data/spec/lib/hamster/vector/product_spec.rb +0 -71
  487. data/spec/lib/hamster/vector/reject_spec.rb +0 -44
  488. data/spec/lib/hamster/vector/repeated_combination_spec.rb +0 -78
  489. data/spec/lib/hamster/vector/repeated_permutation_spec.rb +0 -94
  490. data/spec/lib/hamster/vector/reverse_each_spec.rb +0 -32
  491. data/spec/lib/hamster/vector/reverse_spec.rb +0 -22
  492. data/spec/lib/hamster/vector/rindex_spec.rb +0 -37
  493. data/spec/lib/hamster/vector/rotate_spec.rb +0 -74
  494. data/spec/lib/hamster/vector/sample_spec.rb +0 -14
  495. data/spec/lib/hamster/vector/select_spec.rb +0 -64
  496. data/spec/lib/hamster/vector/set_spec.rb +0 -175
  497. data/spec/lib/hamster/vector/shift_spec.rb +0 -28
  498. data/spec/lib/hamster/vector/shuffle_spec.rb +0 -44
  499. data/spec/lib/hamster/vector/slice_spec.rb +0 -241
  500. data/spec/lib/hamster/vector/sorting_spec.rb +0 -57
  501. data/spec/lib/hamster/vector/take_spec.rb +0 -43
  502. data/spec/lib/hamster/vector/take_while_spec.rb +0 -35
  503. data/spec/lib/hamster/vector/to_set_spec.rb +0 -23
  504. data/spec/lib/hamster/vector/transpose_spec.rb +0 -49
  505. data/spec/lib/hamster/vector/uniq_spec.rb +0 -56
  506. data/spec/lib/hamster/vector/unshift_spec.rb +0 -29
  507. data/spec/lib/hamster/vector/update_in_spec.rb +0 -83
  508. data/spec/lib/hamster/vector/values_at_spec.rb +0 -34
  509. data/spec/lib/hamster/vector/zip_spec.rb +0 -58
@@ -1,64 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/set"
3
-
4
- describe Hamster::Set do
5
- [:union, :|, :+, :merge].each do |method|
6
- describe "##{method}" do
7
- [
8
- [[], [], []],
9
- [["A"], [], ["A"]],
10
- [["A"], ["A"], ["A"]],
11
- [[], ["A"], ["A"]],
12
- [%w[A B C], [], %w[A B C]],
13
- [%w[A B C], %w[A B C], %w[A B C]],
14
- [%w[A B C], %w[X Y Z], %w[A B C X Y Z]]
15
- ].each do |a, b, expected|
16
- context "for #{a.inspect} and #{b.inspect}" do
17
- let(:set_a) { Hamster.set(*a) }
18
- let(:set_b) { Hamster.set(*b) }
19
-
20
- it "returns #{expected.inspect}, without changing the original Sets" do
21
- set_a.send(method, set_b).should eql(Hamster.set(*expected))
22
- set_a.should eql(Hamster::Set.new(a))
23
- set_b.should eql(Hamster::Set.new(b))
24
- end
25
- end
26
-
27
- context "for #{b.inspect} and #{a.inspect}" do
28
- let(:set_a) { Hamster.set(*a) }
29
- let(:set_b) { Hamster.set(*b) }
30
-
31
- it "returns #{expected.inspect}, without changing the original Sets" do
32
- set_b.send(method, set_a).should eql(Hamster.set(*expected))
33
- set_a.should eql(Hamster::Set.new(a))
34
- set_b.should eql(Hamster::Set.new(b))
35
- end
36
- end
37
-
38
- context "when passed a Ruby Array" do
39
- it "returns the expected Set" do
40
- Hamster.set(*a).send(method, b.freeze).should eql(Hamster.set(*expected))
41
- Hamster.set(*b).send(method, a.freeze).should eql(Hamster.set(*expected))
42
- end
43
- end
44
-
45
- context "from a subclass" do
46
- it "returns an instance of the subclass" do
47
- subclass = Class.new(Hamster::Set)
48
- subclass.new(a).send(method, Hamster::Set.new(b)).class.should be(subclass)
49
- subclass.new(b).send(method, Hamster::Set.new(a)).class.should be(subclass)
50
- end
51
- end
52
- end
53
-
54
- context "when receiving a subset" do
55
- let(:set_a) { Hamster.set(*(1..300).to_a) }
56
- let(:set_b) { Hamster.set(*(1..200).to_a) }
57
-
58
- it "returns self" do
59
- set_a.send(method, set_b).should be(set_a)
60
- end
61
- end
62
- end
63
- end
64
- end
@@ -1,52 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- describe "#above" do
6
- context "when called without a block" do
7
- it "returns a sorted set of all items higher than the argument" do
8
- 100.times do
9
- items = rand(100).times.collect { rand(1000) }
10
- set = Hamster::SortedSet.new(items)
11
- threshold = rand(1000)
12
- result = set.above(threshold)
13
- array = items.select { |x| x > threshold }.sort
14
- result.class.should be(Hamster::SortedSet)
15
- result.size.should == array.size
16
- result.to_a.should == array
17
- end
18
- end
19
- end
20
-
21
- context "when called with a block" do
22
- it "yields all the items higher than the argument" do
23
- 100.times do
24
- items = rand(100).times.collect { rand(1000) }
25
- set = Hamster::SortedSet.new(items)
26
- threshold = rand(1000)
27
- result = []
28
- set.above(threshold) { |x| result << x }
29
- array = items.select { |x| x > threshold }.sort
30
- result.size.should == array.size
31
- result.should == array
32
- end
33
- end
34
- end
35
-
36
- context "on an empty set" do
37
- it "returns an empty set" do
38
- Hamster::SortedSet.empty.above(1).should be_empty
39
- Hamster::SortedSet.empty.above('abc').should be_empty
40
- Hamster::SortedSet.empty.above(:symbol).should be_empty
41
- end
42
- end
43
-
44
- context "with an argument higher than all the values in the set" do
45
- it "returns an empty set" do
46
- result = Hamster.sorted_set(*(1..100)).above(100)
47
- result.class.should be(Hamster::SortedSet)
48
- result.should be_empty
49
- end
50
- end
51
- end
52
- end
@@ -1,63 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- let(:sorted_set) { Hamster.sorted_set("B", "C", "D") }
6
-
7
- [:add, :<<].each do |method|
8
- describe "##{method}" do
9
- context "with a unique value" do
10
- it "preserves the original" do
11
- sorted_set.send(method, "A")
12
- sorted_set.should eql(Hamster.sorted_set("B", "C", "D"))
13
- end
14
-
15
- it "returns a copy with the superset of values (in order)" do
16
- sorted_set.send(method, "A").should eql(Hamster.sorted_set("A", "B", "C", "D"))
17
- end
18
- end
19
-
20
- context "with a duplicate value" do
21
- it "preserves the original values" do
22
- sorted_set.send(method, "C")
23
- sorted_set.should eql(Hamster.sorted_set("B", "C", "D"))
24
- end
25
-
26
- it "returns self" do
27
- sorted_set.send(method, "C").should equal(sorted_set)
28
- end
29
- end
30
-
31
- context "on a set ordered by a comparator" do
32
- it "inserts the new item in the correct place" do
33
- s = Hamster.sorted_set('tick', 'pig', 'hippopotamus') { |str| str.length }
34
- s.add('giraffe').to_a.should == ['pig', 'tick', 'giraffe', 'hippopotamus']
35
- end
36
- end
37
- end
38
- end
39
-
40
- describe "#add?" do
41
- context "with a unique value" do
42
- it "preserves the original" do
43
- sorted_set.add?("A")
44
- sorted_set.should eql(Hamster.sorted_set("B", "C", "D"))
45
- end
46
-
47
- it "returns a copy with the superset of values" do
48
- sorted_set.add?("A").should eql(Hamster.sorted_set("A", "B", "C", "D"))
49
- end
50
- end
51
-
52
- context "with a duplicate value" do
53
- it "preserves the original values" do
54
- sorted_set.add?("C")
55
- sorted_set.should eql(Hamster.sorted_set("B", "C", "D"))
56
- end
57
-
58
- it "returns false" do
59
- sorted_set.add?("C").should equal(false)
60
- end
61
- end
62
- end
63
- end
@@ -1,25 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- describe "#at" do
6
- [
7
- [[], 10, nil],
8
- [["A"], 10, nil],
9
- [%w[A B C], 0, "A"],
10
- [%w[A B C], 1, "B"],
11
- [%w[A B C], 2, "C"],
12
- [%w[A B C], 3, nil],
13
- [%w[A B C], -1, "C"],
14
- [%w[A B C], -2, "B"],
15
- [%w[A B C], -3, "A"],
16
- [%w[A B C], -4, nil]
17
- ].each do |values, number, expected|
18
- describe "#{values.inspect} with #{number}" do
19
- it "returns #{expected.inspect}" do
20
- Hamster.sorted_set(*values).at(number).should == expected
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,52 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- describe "#below" do
6
- context "when called without a block" do
7
- it "returns a sorted set of all items lower than the argument" do
8
- 100.times do
9
- items = rand(100).times.collect { rand(1000) }
10
- set = Hamster::SortedSet.new(items)
11
- threshold = rand(1000)
12
- result = set.below(threshold)
13
- array = items.select { |x| x < threshold }.sort
14
- result.class.should be(Hamster::SortedSet)
15
- result.size.should == array.size
16
- result.to_a.should == array
17
- end
18
- end
19
- end
20
-
21
- context "when called with a block" do
22
- it "yields all the items lower than the argument" do
23
- 100.times do
24
- items = rand(100).times.collect { rand(1000) }
25
- set = Hamster::SortedSet.new(items)
26
- threshold = rand(1000)
27
- result = []
28
- set.below(threshold) { |x| result << x }
29
- array = items.select { |x| x < threshold }.sort
30
- result.size.should == array.size
31
- result.should == array
32
- end
33
- end
34
- end
35
-
36
- context "on an empty set" do
37
- it "returns an empty set" do
38
- Hamster::SortedSet.empty.below(1).should be_empty
39
- Hamster::SortedSet.empty.below('abc').should be_empty
40
- Hamster::SortedSet.empty.below(:symbol).should be_empty
41
- end
42
- end
43
-
44
- context "with an argument lower than all the values in the set" do
45
- it "returns an empty set" do
46
- result = Hamster.sorted_set(*(1..100)).below(1)
47
- result.class.should be(Hamster::SortedSet)
48
- result.should be_empty
49
- end
50
- end
51
- end
52
- end
@@ -1,52 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- describe "#between" do
6
- context "when called without a block" do
7
- it "returns a sorted set of all items from the first argument to the second" do
8
- 100.times do
9
- items = rand(100).times.collect { rand(1000) }
10
- set = Hamster::SortedSet.new(items)
11
- from,to = [rand(1000),rand(1000)].sort
12
- result = set.between(from, to)
13
- array = items.select { |x| x >= from && x <= to }.sort
14
- result.class.should be(Hamster::SortedSet)
15
- result.size.should == array.size
16
- result.to_a.should == array
17
- end
18
- end
19
- end
20
-
21
- context "when called with a block" do
22
- it "yields all the items lower than the argument" do
23
- 100.times do
24
- items = rand(100).times.collect { rand(1000) }
25
- set = Hamster::SortedSet.new(items)
26
- from,to = [rand(1000),rand(1000)].sort
27
- result = []
28
- set.between(from, to) { |x| result << x }
29
- array = items.select { |x| x >= from && x <= to }.sort
30
- result.size.should == array.size
31
- result.should == array
32
- end
33
- end
34
- end
35
-
36
- context "on an empty set" do
37
- it "returns an empty set" do
38
- Hamster::SortedSet.empty.between(1, 2).should be_empty
39
- Hamster::SortedSet.empty.between('abc', 'def').should be_empty
40
- Hamster::SortedSet.empty.between(:symbol, :another).should be_empty
41
- end
42
- end
43
-
44
- context "with a 'to' argument lower than the 'from' argument" do
45
- it "returns an empty set" do
46
- result = Hamster.sorted_set(*(1..100)).between(6, 5)
47
- result.class.should be(Hamster::SortedSet)
48
- result.should be_empty
49
- end
50
- end
51
- end
52
- end
@@ -1,44 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- describe "#clear" do
6
- [
7
- [],
8
- ["A"],
9
- %w[A B C],
10
- ].each do |values|
11
- context "on #{values}" do
12
- let(:sorted_set) { Hamster.sorted_set(*values) }
13
-
14
- it "preserves the original" do
15
- sorted_set.clear
16
- sorted_set.should eql(Hamster.sorted_set(*values))
17
- end
18
-
19
- it "returns an empty set" do
20
- sorted_set.clear.should equal(Hamster::EmptySortedSet)
21
- sorted_set.clear.should be_empty
22
- end
23
- end
24
- end
25
-
26
- context "from a subclass" do
27
- it "returns an empty instance of the subclass" do
28
- subclass = Class.new(Hamster::SortedSet)
29
- instance = subclass.new([:a, :b, :c, :d])
30
- instance.clear.class.should be(subclass)
31
- instance.clear.should be_empty
32
- end
33
- end
34
-
35
- context "with a comparator" do
36
- let(:sorted_set) { Hamster::SortedSet.new([1, 2, 3]) { |x| -x } }
37
- it "returns an empty instance with same comparator" do
38
- e = sorted_set.clear
39
- e.should be_empty
40
- e.add(4).add(5).add(6).to_a.should == [6, 5, 4]
41
- end
42
- end
43
- end
44
- end
@@ -1,29 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- describe ".sorted_set" do
6
- context "with no values" do
7
- it "returns the empty set" do
8
- Hamster.sorted_set.should equal(Hamster::EmptySortedSet)
9
- Hamster.sorted_set.should be_empty
10
- end
11
- end
12
-
13
- context "with a list of values" do
14
- let(:sorted_set) { Hamster.sorted_set("A", "B", "C") }
15
-
16
- it "is equivalent to repeatedly using #add" do
17
- sorted_set.size.should be(3)
18
- sorted_set.should eql(Hamster.sorted_set.add("A").add("B").add("C"))
19
- end
20
- end
21
-
22
- context "with a block" do
23
- it "returns a set sorted using the given block" do
24
- set = Hamster.sorted_set('fling', 'chalk', 'whip', 'papaya') { |str| str.reverse }
25
- set.to_a.should == ['papaya', 'fling', 'chalk', 'whip']
26
- end
27
- end
28
- end
29
- end
@@ -1,19 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- describe "#delete_at" do
6
- let(:sorted_set) { Hamster.sorted_set(1,2,3,4,5) }
7
-
8
- it "removes the element at the specified index" do
9
- sorted_set.delete_at(0).should eql(Hamster.sorted_set(2,3,4,5))
10
- sorted_set.delete_at(2).should eql(Hamster.sorted_set(1,2,4,5))
11
- sorted_set.delete_at(-1).should eql(Hamster.sorted_set(1,2,3,4))
12
- end
13
-
14
- it "makes no modification if the index is out of range" do
15
- sorted_set.delete_at(5).should eql(sorted_set)
16
- sorted_set.delete_at(-6).should eql(sorted_set)
17
- end
18
- end
19
- end
@@ -1,90 +0,0 @@
1
- require "spec_helper"
2
- require "hamster/sorted_set"
3
-
4
- describe Hamster::SortedSet do
5
- let(:sorted_set) { Hamster.sorted_set("A", "B", "C") }
6
-
7
- describe "#delete" do
8
- context "on an empty set" do
9
- it "returns an empty set" do
10
- Hamster::EmptySortedSet.delete(0).should be(Hamster::EmptySortedSet)
11
- end
12
- end
13
-
14
- context "with an existing value" do
15
- it "preserves the original" do
16
- sorted_set.delete("B")
17
- sorted_set.should eql(Hamster.sorted_set("A", "B", "C"))
18
- end
19
-
20
- it "returns a copy with the remaining of values" do
21
- sorted_set.delete("B").should eql(Hamster.sorted_set("A", "C"))
22
- end
23
- end
24
-
25
- context "with a non-existing value" do
26
- it "preserves the original values" do
27
- sorted_set.delete("D")
28
- sorted_set.should eql(Hamster.sorted_set("A", "B", "C"))
29
- end
30
-
31
- it "returns self" do
32
- sorted_set.delete("D").should equal(sorted_set)
33
- end
34
- end
35
-
36
- context "when removing the last value in a sorted set" do
37
- it "maintains the set order" do
38
- ss = Hamster.sorted_set("peanuts", "jam", "milk") { |word| word.length }
39
- ss = ss.delete("jam").delete("peanuts").delete("milk")
40
- ss = ss.add("banana").add("sugar").add("spam")
41
- ss.to_a.should == ['spam', 'sugar', 'banana']
42
- end
43
-
44
- context "when the set is in natural order" do
45
- it "returns the canonical empty set" do
46
- sorted_set.delete("B").delete("C").delete("A").should be(Hamster::EmptySortedSet)
47
- end
48
- end
49
- end
50
-
51
- 1.upto(10) do |n|
52
- values = (1..n).to_a
53
- values.combination(3) do |to_delete|
54
- expected = to_delete.reduce(values.dup) { |ary,val| ary.delete(val); ary }
55
- describe "on #{values.inspect}, when deleting #{to_delete.inspect}" do
56
- it "returns #{expected.inspect}" do
57
- set = Hamster::SortedSet.new(values)
58
- result = to_delete.reduce(set) { |s,val| s.delete(val) }
59
- result.should eql(Hamster::SortedSet.new(expected))
60
- result.to_a.should eql(expected)
61
- end
62
- end
63
- end
64
- end
65
- end
66
-
67
- describe "#delete?" do
68
- context "with an existing value" do
69
- it "preserves the original" do
70
- sorted_set.delete?("B")
71
- sorted_set.should eql(Hamster.sorted_set("A", "B", "C"))
72
- end
73
-
74
- it "returns a copy with the remaining values" do
75
- sorted_set.delete?("B").should eql(Hamster.sorted_set("A", "C"))
76
- end
77
- end
78
-
79
- context "with a non-existing value" do
80
- it "preserves the original values" do
81
- sorted_set.delete?("D")
82
- sorted_set.should eql(Hamster.sorted_set("A", "B", "C"))
83
- end
84
-
85
- it "returns false" do
86
- sorted_set.delete?("D").should be(false)
87
- end
88
- end
89
- end
90
- end