hamster 1.0.1.pre.rc3 → 2.0.0

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 (358) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hamster.rb +2 -0
  3. data/lib/hamster/associable.rb +49 -0
  4. data/lib/hamster/core_ext/enumerable.rb +3 -13
  5. data/lib/hamster/core_ext/io.rb +1 -1
  6. data/lib/hamster/core_ext/struct.rb +9 -0
  7. data/lib/hamster/deque.rb +57 -38
  8. data/lib/hamster/enumerable.rb +14 -41
  9. data/lib/hamster/experimental/mutable_queue.rb +5 -8
  10. data/lib/hamster/experimental/mutable_set.rb +6 -7
  11. data/lib/hamster/hash.rb +301 -110
  12. data/lib/hamster/immutable.rb +1 -1
  13. data/lib/hamster/list.rb +479 -194
  14. data/lib/hamster/mutable_hash.rb +6 -7
  15. data/lib/hamster/nested.rb +78 -0
  16. data/lib/hamster/read_copy_update.rb +1 -1
  17. data/lib/hamster/set.rb +198 -88
  18. data/lib/hamster/sorted_set.rb +706 -261
  19. data/lib/hamster/trie.rb +134 -15
  20. data/lib/hamster/vector.rb +571 -140
  21. data/lib/hamster/version.rb +3 -1
  22. data/spec/lib/hamster/associable/associable_spec.rb +150 -0
  23. data/spec/lib/hamster/core_ext/array_spec.rb +1 -1
  24. data/spec/lib/hamster/core_ext/enumerable_spec.rb +2 -2
  25. data/spec/lib/hamster/core_ext/io_spec.rb +1 -1
  26. data/spec/lib/hamster/deque/clear_spec.rb +3 -3
  27. data/spec/lib/hamster/deque/construction_spec.rb +8 -8
  28. data/spec/lib/hamster/deque/copying_spec.rb +1 -1
  29. data/spec/lib/hamster/deque/dequeue_spec.rb +12 -4
  30. data/spec/lib/hamster/deque/empty_spec.rb +14 -16
  31. data/spec/lib/hamster/deque/enqueue_spec.rb +4 -4
  32. data/spec/lib/hamster/deque/first_spec.rb +18 -0
  33. data/spec/lib/hamster/deque/inspect_spec.rb +1 -1
  34. data/spec/lib/hamster/deque/last_spec.rb +9 -11
  35. data/spec/lib/hamster/deque/marshal_spec.rb +6 -6
  36. data/spec/lib/hamster/deque/new_spec.rb +5 -5
  37. data/spec/lib/hamster/deque/pop_spec.rb +15 -3
  38. data/spec/lib/hamster/deque/pretty_print_spec.rb +24 -0
  39. data/spec/lib/hamster/deque/push_spec.rb +37 -0
  40. data/spec/lib/hamster/deque/shift_spec.rb +30 -0
  41. data/spec/lib/hamster/deque/size_spec.rb +1 -1
  42. data/spec/lib/hamster/deque/to_a_spec.rb +2 -2
  43. data/spec/lib/hamster/deque/to_ary_spec.rb +1 -1
  44. data/spec/lib/hamster/deque/to_list_spec.rb +3 -3
  45. data/spec/lib/hamster/deque/unshift_spec.rb +8 -3
  46. data/spec/lib/hamster/experimental/mutable_set/add_qm_spec.rb +3 -3
  47. data/spec/lib/hamster/experimental/mutable_set/add_spec.rb +3 -3
  48. data/spec/lib/hamster/experimental/mutable_set/delete_qm_spec.rb +3 -3
  49. data/spec/lib/hamster/experimental/mutable_set/delete_spec.rb +3 -3
  50. data/spec/lib/hamster/hash/all_spec.rb +32 -34
  51. data/spec/lib/hamster/hash/any_spec.rb +34 -36
  52. data/spec/lib/hamster/hash/assoc_spec.rb +3 -3
  53. data/spec/lib/hamster/hash/clear_spec.rb +4 -4
  54. data/spec/lib/hamster/hash/construction_spec.rb +8 -8
  55. data/spec/lib/hamster/hash/copying_spec.rb +1 -1
  56. data/spec/lib/hamster/hash/default_proc_spec.rb +3 -3
  57. data/spec/lib/hamster/hash/delete_spec.rb +4 -4
  58. data/spec/lib/hamster/hash/each_spec.rb +3 -3
  59. data/spec/lib/hamster/hash/each_with_index_spec.rb +1 -1
  60. data/spec/lib/hamster/hash/empty_spec.rb +13 -15
  61. data/spec/lib/hamster/hash/eql_spec.rb +4 -4
  62. data/spec/lib/hamster/hash/except_spec.rb +7 -7
  63. data/spec/lib/hamster/hash/fetch_spec.rb +10 -10
  64. data/spec/lib/hamster/hash/find_spec.rb +2 -2
  65. data/spec/lib/hamster/hash/flat_map_spec.rb +4 -4
  66. data/spec/lib/hamster/hash/flatten_spec.rb +13 -13
  67. data/spec/lib/hamster/hash/get_spec.rb +7 -7
  68. data/spec/lib/hamster/hash/has_key_spec.rb +3 -3
  69. data/spec/lib/hamster/hash/has_value_spec.rb +4 -4
  70. data/spec/lib/hamster/hash/hash_spec.rb +5 -5
  71. data/spec/lib/hamster/hash/inspect_spec.rb +2 -2
  72. data/spec/lib/hamster/hash/invert_spec.rb +6 -6
  73. data/spec/lib/hamster/hash/key_spec.rb +2 -2
  74. data/spec/lib/hamster/hash/keys_spec.rb +2 -2
  75. data/spec/lib/hamster/hash/map_spec.rb +4 -4
  76. data/spec/lib/hamster/hash/marshal_spec.rb +2 -2
  77. data/spec/lib/hamster/hash/merge_spec.rb +62 -56
  78. data/spec/lib/hamster/hash/min_max_spec.rb +9 -13
  79. data/spec/lib/hamster/hash/new_spec.rb +6 -6
  80. data/spec/lib/hamster/hash/none_spec.rb +3 -3
  81. data/spec/lib/hamster/hash/partition_spec.rb +2 -2
  82. data/spec/lib/hamster/hash/put_spec.rb +29 -7
  83. data/spec/lib/hamster/hash/reduce_spec.rb +4 -4
  84. data/spec/lib/hamster/hash/{remove_spec.rb → reject_spec.rb} +7 -7
  85. data/spec/lib/hamster/hash/reverse_each_spec.rb +1 -1
  86. data/spec/lib/hamster/hash/{filter_spec.rb → select_spec.rb} +6 -6
  87. data/spec/lib/hamster/hash/size_spec.rb +3 -3
  88. data/spec/lib/hamster/hash/slice_spec.rb +4 -4
  89. data/spec/lib/hamster/hash/sort_spec.rb +2 -2
  90. data/spec/lib/hamster/hash/store_spec.rb +29 -7
  91. data/spec/lib/hamster/hash/take_spec.rb +2 -2
  92. data/spec/lib/hamster/hash/to_a_spec.rb +1 -1
  93. data/spec/lib/hamster/hash/to_hash_spec.rb +4 -4
  94. data/spec/lib/hamster/hash/values_at_spec.rb +3 -3
  95. data/spec/lib/hamster/hash/values_spec.rb +2 -2
  96. data/spec/lib/hamster/immutable/new_spec.rb +14 -0
  97. data/spec/lib/hamster/list/add_spec.rb +16 -10
  98. data/spec/lib/hamster/list/all_spec.rb +33 -35
  99. data/spec/lib/hamster/list/any_spec.rb +29 -31
  100. data/spec/lib/hamster/list/append_spec.rb +6 -6
  101. data/spec/lib/hamster/list/at_spec.rb +1 -1
  102. data/spec/lib/hamster/list/break_spec.rb +4 -4
  103. data/spec/lib/hamster/list/cadr_spec.rb +9 -9
  104. data/spec/lib/hamster/list/chunk_spec.rb +5 -5
  105. data/spec/lib/hamster/list/clear_spec.rb +3 -3
  106. data/spec/lib/hamster/list/combination_spec.rb +3 -3
  107. data/spec/lib/hamster/list/compact_spec.rb +3 -3
  108. data/spec/lib/hamster/list/compare_spec.rb +3 -3
  109. data/spec/lib/hamster/list/cons_spec.rb +15 -17
  110. data/spec/lib/hamster/list/construction_spec.rb +20 -27
  111. data/spec/lib/hamster/list/copying_spec.rb +1 -1
  112. data/spec/lib/hamster/list/count_spec.rb +1 -1
  113. data/spec/lib/hamster/list/cycle_spec.rb +4 -4
  114. data/spec/lib/hamster/list/delete_at_spec.rb +4 -4
  115. data/spec/lib/hamster/list/drop_spec.rb +3 -3
  116. data/spec/lib/hamster/list/drop_while_spec.rb +3 -3
  117. data/spec/lib/hamster/list/each_slice_spec.rb +5 -5
  118. data/spec/lib/hamster/list/each_spec.rb +26 -28
  119. data/spec/lib/hamster/list/each_with_index_spec.rb +1 -1
  120. data/spec/lib/hamster/list/empty_spec.rb +13 -15
  121. data/spec/lib/hamster/list/eql_spec.rb +21 -21
  122. data/spec/lib/hamster/list/fill_spec.rb +8 -8
  123. data/spec/lib/hamster/list/find_all_spec.rb +3 -3
  124. data/spec/lib/hamster/list/find_index_spec.rb +1 -1
  125. data/spec/lib/hamster/list/find_spec.rb +1 -1
  126. data/spec/lib/hamster/list/flat_map_spec.rb +2 -2
  127. data/spec/lib/hamster/list/flatten_spec.rb +5 -5
  128. data/spec/lib/hamster/list/grep_spec.rb +4 -4
  129. data/spec/lib/hamster/list/group_by_spec.rb +6 -6
  130. data/spec/lib/hamster/list/hash_spec.rb +2 -2
  131. data/spec/lib/hamster/list/head_spec.rb +1 -1
  132. data/spec/lib/hamster/list/include_spec.rb +2 -2
  133. data/spec/lib/hamster/list/index_spec.rb +38 -0
  134. data/spec/lib/hamster/list/indices_spec.rb +62 -0
  135. data/spec/lib/hamster/list/init_spec.rb +3 -3
  136. data/spec/lib/hamster/list/inits_spec.rb +3 -3
  137. data/spec/lib/hamster/list/insert_spec.rb +1 -1
  138. data/spec/lib/hamster/list/inspect_spec.rb +1 -1
  139. data/spec/lib/hamster/list/intersperse_spec.rb +3 -3
  140. data/spec/lib/hamster/list/join_spec.rb +5 -5
  141. data/spec/lib/hamster/list/last_spec.rb +1 -1
  142. data/spec/lib/hamster/list/ltlt_spec.rb +20 -0
  143. data/spec/lib/hamster/list/map_spec.rb +4 -4
  144. data/spec/lib/hamster/list/maximum_spec.rb +24 -26
  145. data/spec/lib/hamster/list/merge_by_spec.rb +10 -10
  146. data/spec/lib/hamster/list/merge_spec.rb +10 -10
  147. data/spec/lib/hamster/list/minimum_spec.rb +24 -26
  148. data/spec/lib/hamster/list/multithreading_spec.rb +6 -6
  149. data/spec/lib/hamster/list/none_spec.rb +5 -5
  150. data/spec/lib/hamster/list/one_spec.rb +5 -5
  151. data/spec/lib/hamster/list/partition_spec.rb +8 -8
  152. data/spec/lib/hamster/list/permutation_spec.rb +8 -8
  153. data/spec/lib/hamster/list/pop_spec.rb +3 -3
  154. data/spec/lib/hamster/list/product_spec.rb +1 -1
  155. data/spec/lib/hamster/list/reduce_spec.rb +5 -48
  156. data/spec/lib/hamster/list/{remove_spec.rb → reject_spec.rb} +4 -4
  157. data/spec/lib/hamster/list/reverse_spec.rb +3 -3
  158. data/spec/lib/hamster/list/rotate_spec.rb +7 -7
  159. data/spec/lib/hamster/list/sample_spec.rb +1 -1
  160. data/spec/lib/hamster/list/select_spec.rb +3 -3
  161. data/spec/lib/hamster/list/size_spec.rb +1 -1
  162. data/spec/lib/hamster/list/slice_spec.rb +123 -123
  163. data/spec/lib/hamster/list/sorting_spec.rb +5 -5
  164. data/spec/lib/hamster/list/span_spec.rb +5 -5
  165. data/spec/lib/hamster/list/split_at_spec.rb +4 -4
  166. data/spec/lib/hamster/list/subsequences_spec.rb +1 -1
  167. data/spec/lib/hamster/list/sum_spec.rb +1 -1
  168. data/spec/lib/hamster/list/tail_spec.rb +4 -4
  169. data/spec/lib/hamster/list/tails_spec.rb +3 -3
  170. data/spec/lib/hamster/list/take_spec.rb +3 -3
  171. data/spec/lib/hamster/list/take_while_spec.rb +4 -4
  172. data/spec/lib/hamster/list/to_a_spec.rb +2 -2
  173. data/spec/lib/hamster/list/to_ary_spec.rb +1 -1
  174. data/spec/lib/hamster/list/to_list_spec.rb +1 -1
  175. data/spec/lib/hamster/list/to_set_spec.rb +1 -1
  176. data/spec/lib/hamster/list/union_spec.rb +4 -4
  177. data/spec/lib/hamster/list/uniq_spec.rb +23 -19
  178. data/spec/lib/hamster/list/zip_spec.rb +5 -5
  179. data/spec/lib/hamster/nested/construction_spec.rb +103 -0
  180. data/spec/lib/hamster/set/add_spec.rb +13 -11
  181. data/spec/lib/hamster/set/all_spec.rb +32 -34
  182. data/spec/lib/hamster/set/any_spec.rb +32 -34
  183. data/spec/lib/hamster/set/clear_spec.rb +3 -3
  184. data/spec/lib/hamster/set/compact_spec.rb +3 -3
  185. data/spec/lib/hamster/set/construction_spec.rb +3 -3
  186. data/spec/lib/hamster/set/copying_spec.rb +1 -1
  187. data/spec/lib/hamster/set/count_spec.rb +1 -1
  188. data/spec/lib/hamster/set/delete_spec.rb +8 -8
  189. data/spec/lib/hamster/set/difference_spec.rb +8 -8
  190. data/spec/lib/hamster/set/disjoint_spec.rb +1 -1
  191. data/spec/lib/hamster/set/each_spec.rb +2 -2
  192. data/spec/lib/hamster/set/empty_spec.rb +15 -17
  193. data/spec/lib/hamster/set/eqeq_spec.rb +3 -3
  194. data/spec/lib/hamster/set/eql_spec.rb +3 -3
  195. data/spec/lib/hamster/set/exclusion_spec.rb +7 -7
  196. data/spec/lib/hamster/set/find_spec.rb +2 -2
  197. data/spec/lib/hamster/set/first_spec.rb +29 -0
  198. data/spec/lib/hamster/set/flatten_spec.rb +9 -9
  199. data/spec/lib/hamster/set/grep_spec.rb +1 -1
  200. data/spec/lib/hamster/set/group_by_spec.rb +12 -12
  201. data/spec/lib/hamster/set/hash_spec.rb +3 -3
  202. data/spec/lib/hamster/set/include_spec.rb +8 -8
  203. data/spec/lib/hamster/set/inspect_spec.rb +2 -2
  204. data/spec/lib/hamster/set/intersect_spec.rb +1 -1
  205. data/spec/lib/hamster/set/intersection_spec.rb +13 -13
  206. data/spec/lib/hamster/set/join_spec.rb +6 -6
  207. data/spec/lib/hamster/set/map_spec.rb +7 -7
  208. data/spec/lib/hamster/set/marshal_spec.rb +2 -2
  209. data/spec/lib/hamster/set/maximum_spec.rb +22 -24
  210. data/spec/lib/hamster/set/minimum_spec.rb +22 -24
  211. data/spec/lib/hamster/set/new_spec.rb +5 -5
  212. data/spec/lib/hamster/set/none_spec.rb +5 -5
  213. data/spec/lib/hamster/set/one_spec.rb +6 -6
  214. data/spec/lib/hamster/set/partition_spec.rb +5 -5
  215. data/spec/lib/hamster/set/product_spec.rb +2 -2
  216. data/spec/lib/hamster/set/reduce_spec.rb +5 -5
  217. data/spec/lib/hamster/set/{remove_spec.rb → reject_spec.rb} +6 -6
  218. data/spec/lib/hamster/set/reverse_each_spec.rb +1 -1
  219. data/spec/lib/hamster/set/sample_spec.rb +1 -1
  220. data/spec/lib/hamster/set/{filter_spec.rb → select_spec.rb} +11 -11
  221. data/spec/lib/hamster/set/size_spec.rb +1 -1
  222. data/spec/lib/hamster/set/sorting_spec.rb +16 -5
  223. data/spec/lib/hamster/set/subset_spec.rb +2 -2
  224. data/spec/lib/hamster/set/sum_spec.rb +2 -2
  225. data/spec/lib/hamster/set/superset_spec.rb +2 -2
  226. data/spec/lib/hamster/set/to_a_spec.rb +2 -2
  227. data/spec/lib/hamster/set/to_list_spec.rb +2 -2
  228. data/spec/lib/hamster/set/to_set_spec.rb +1 -1
  229. data/spec/lib/hamster/set/union_spec.rb +23 -14
  230. data/spec/lib/hamster/sorted_set/above_spec.rb +11 -11
  231. data/spec/lib/hamster/sorted_set/add_spec.rb +8 -8
  232. data/spec/lib/hamster/sorted_set/at_spec.rb +1 -1
  233. data/spec/lib/hamster/sorted_set/below_spec.rb +11 -11
  234. data/spec/lib/hamster/sorted_set/between_spec.rb +11 -11
  235. data/spec/lib/hamster/sorted_set/clear_spec.rb +11 -2
  236. data/spec/lib/hamster/sorted_set/copying_spec.rb +21 -0
  237. data/spec/lib/hamster/sorted_set/delete_at_spec.rb +4 -4
  238. data/spec/lib/hamster/sorted_set/delete_spec.rb +21 -12
  239. data/spec/lib/hamster/sorted_set/difference_spec.rb +2 -2
  240. data/spec/lib/hamster/sorted_set/disjoint_spec.rb +1 -1
  241. data/spec/lib/hamster/sorted_set/drop_spec.rb +30 -3
  242. data/spec/lib/hamster/sorted_set/drop_while_spec.rb +4 -4
  243. data/spec/lib/hamster/sorted_set/each_spec.rb +16 -18
  244. data/spec/lib/hamster/sorted_set/empty_spec.rb +12 -14
  245. data/spec/lib/hamster/sorted_set/eql_spec.rb +5 -5
  246. data/spec/lib/hamster/sorted_set/exclusion_spec.rb +1 -1
  247. data/spec/lib/hamster/sorted_set/fetch_spec.rb +1 -1
  248. data/spec/lib/hamster/sorted_set/find_index_spec.rb +10 -2
  249. data/spec/lib/hamster/sorted_set/first_spec.rb +10 -12
  250. data/spec/lib/hamster/sorted_set/from_spec.rb +11 -11
  251. data/spec/lib/hamster/sorted_set/group_by_spec.rb +10 -10
  252. data/spec/lib/hamster/sorted_set/include_spec.rb +2 -2
  253. data/spec/lib/hamster/sorted_set/inspect_spec.rb +1 -1
  254. data/spec/lib/hamster/sorted_set/intersect_spec.rb +1 -1
  255. data/spec/lib/hamster/sorted_set/intersection_spec.rb +3 -3
  256. data/spec/lib/hamster/sorted_set/last_spec.rb +1 -1
  257. data/spec/lib/hamster/sorted_set/map_spec.rb +13 -5
  258. data/spec/lib/hamster/sorted_set/marshal_spec.rb +3 -3
  259. data/spec/lib/hamster/sorted_set/maximum_spec.rb +37 -0
  260. data/spec/lib/hamster/sorted_set/minimum_spec.rb +11 -13
  261. data/spec/lib/hamster/sorted_set/new_spec.rb +23 -3
  262. data/spec/lib/hamster/sorted_set/reverse_each_spec.rb +2 -2
  263. data/spec/lib/hamster/sorted_set/{filter_spec.rb → select_spec.rb} +10 -10
  264. data/spec/lib/hamster/sorted_set/size_spec.rb +1 -1
  265. data/spec/lib/hamster/sorted_set/slice_spec.rb +158 -142
  266. data/spec/lib/hamster/sorted_set/sorting_spec.rb +3 -3
  267. data/spec/lib/hamster/sorted_set/subset_spec.rb +2 -2
  268. data/spec/lib/hamster/sorted_set/superset_spec.rb +2 -2
  269. data/spec/lib/hamster/sorted_set/take_spec.rb +32 -3
  270. data/spec/lib/hamster/sorted_set/take_while_spec.rb +4 -4
  271. data/spec/lib/hamster/sorted_set/to_set_spec.rb +1 -1
  272. data/spec/lib/hamster/sorted_set/union_spec.rb +2 -2
  273. data/spec/lib/hamster/sorted_set/up_to_spec.rb +12 -11
  274. data/spec/lib/hamster/sorted_set/values_at_spec.rb +6 -6
  275. data/spec/lib/hamster/vector/add_spec.rb +3 -3
  276. data/spec/lib/hamster/vector/any_spec.rb +1 -1
  277. data/spec/lib/hamster/vector/assoc_spec.rb +11 -1
  278. data/spec/lib/hamster/vector/bsearch_spec.rb +10 -2
  279. data/spec/lib/hamster/vector/clear_spec.rb +3 -3
  280. data/spec/lib/hamster/vector/combination_spec.rb +4 -4
  281. data/spec/lib/hamster/vector/compact_spec.rb +2 -2
  282. data/spec/lib/hamster/vector/compare_spec.rb +3 -3
  283. data/spec/lib/hamster/vector/concat_spec.rb +2 -2
  284. data/spec/lib/hamster/vector/copying_spec.rb +1 -1
  285. data/spec/lib/hamster/vector/delete_at_spec.rb +8 -8
  286. data/spec/lib/hamster/vector/delete_spec.rb +2 -2
  287. data/spec/lib/hamster/vector/drop_spec.rb +10 -3
  288. data/spec/lib/hamster/vector/drop_while_spec.rb +5 -5
  289. data/spec/lib/hamster/vector/each_index_spec.rb +2 -2
  290. data/spec/lib/hamster/vector/each_spec.rb +27 -29
  291. data/spec/lib/hamster/vector/each_with_index_spec.rb +2 -2
  292. data/spec/lib/hamster/vector/empty_spec.rb +11 -13
  293. data/spec/lib/hamster/vector/eql_spec.rb +6 -6
  294. data/spec/lib/hamster/vector/fetch_spec.rb +1 -1
  295. data/spec/lib/hamster/vector/fill_spec.rb +9 -9
  296. data/spec/lib/hamster/vector/first_spec.rb +10 -12
  297. data/spec/lib/hamster/vector/flat_map_spec.rb +51 -0
  298. data/spec/lib/hamster/vector/flatten_spec.rb +15 -0
  299. data/spec/lib/hamster/vector/get_spec.rb +4 -4
  300. data/spec/lib/hamster/vector/group_by_spec.rb +12 -12
  301. data/spec/lib/hamster/vector/include_spec.rb +2 -2
  302. data/spec/lib/hamster/vector/insert_spec.rb +2 -2
  303. data/spec/lib/hamster/vector/inspect_spec.rb +1 -1
  304. data/spec/lib/hamster/vector/join_spec.rb +5 -5
  305. data/spec/lib/hamster/vector/last_spec.rb +1 -1
  306. data/spec/lib/hamster/vector/length_spec.rb +1 -1
  307. data/spec/lib/hamster/vector/ltlt_spec.rb +2 -2
  308. data/spec/lib/hamster/vector/map_spec.rb +5 -5
  309. data/spec/lib/hamster/vector/marshal_spec.rb +2 -2
  310. data/spec/lib/hamster/vector/maximum_spec.rb +20 -22
  311. data/spec/lib/hamster/vector/minimum_spec.rb +20 -22
  312. data/spec/lib/hamster/vector/multiply_spec.rb +4 -4
  313. data/spec/lib/hamster/vector/partition_spec.rb +5 -5
  314. data/spec/lib/hamster/vector/permutation_spec.rb +4 -4
  315. data/spec/lib/hamster/vector/pop_spec.rb +3 -3
  316. data/spec/lib/hamster/vector/product_spec.rb +10 -10
  317. data/spec/lib/hamster/vector/put_spec.rb +175 -0
  318. data/spec/lib/hamster/vector/reduce_spec.rb +5 -57
  319. data/spec/lib/hamster/vector/{remove_spec.rb → reject_spec.rb} +4 -4
  320. data/spec/lib/hamster/vector/repeated_combination_spec.rb +4 -4
  321. data/spec/lib/hamster/vector/repeated_permutation_spec.rb +6 -6
  322. data/spec/lib/hamster/vector/reverse_each_spec.rb +1 -1
  323. data/spec/lib/hamster/vector/reverse_spec.rb +1 -1
  324. data/spec/lib/hamster/vector/rindex_spec.rb +1 -1
  325. data/spec/lib/hamster/vector/rotate_spec.rb +9 -9
  326. data/spec/lib/hamster/vector/sample_spec.rb +1 -1
  327. data/spec/lib/hamster/vector/{filter_spec.rb → select_spec.rb} +8 -8
  328. data/spec/lib/hamster/vector/set_spec.rb +12 -141
  329. data/spec/lib/hamster/vector/shift_spec.rb +3 -3
  330. data/spec/lib/hamster/vector/shuffle_spec.rb +2 -2
  331. data/spec/lib/hamster/vector/slice_spec.rb +137 -137
  332. data/spec/lib/hamster/vector/sorting_spec.rb +5 -5
  333. data/spec/lib/hamster/vector/sum_spec.rb +1 -1
  334. data/spec/lib/hamster/vector/take_spec.rb +17 -3
  335. data/spec/lib/hamster/vector/take_while_spec.rb +4 -4
  336. data/spec/lib/hamster/vector/to_a_spec.rb +1 -1
  337. data/spec/lib/hamster/vector/to_ary_spec.rb +1 -1
  338. data/spec/lib/hamster/vector/to_list_spec.rb +2 -1
  339. data/spec/lib/hamster/vector/to_set_spec.rb +1 -1
  340. data/spec/lib/hamster/vector/uniq_spec.rb +27 -6
  341. data/spec/lib/hamster/vector/unshift_spec.rb +3 -3
  342. data/spec/lib/hamster/vector/values_at_spec.rb +6 -6
  343. data/spec/lib/hamster/vector/zip_spec.rb +2 -2
  344. data/spec/lib/load_spec.rb +42 -0
  345. data/spec/spec_helper.rb +25 -0
  346. metadata +85 -48
  347. data/spec/lib/hamster/deque/head_spec.rb +0 -20
  348. data/spec/lib/hamster/hash/uniq_spec.rb +0 -14
  349. data/spec/lib/hamster/list/elem_index_spec.rb +0 -36
  350. data/spec/lib/hamster/list/elem_indices_spec.rb +0 -31
  351. data/spec/lib/hamster/list/filter_spec.rb +0 -71
  352. data/spec/lib/hamster/list/find_indices_spec.rb +0 -37
  353. data/spec/lib/hamster/set/foreach_spec.rb +0 -40
  354. data/spec/lib/hamster/set/head_spec.rb +0 -31
  355. data/spec/lib/hamster/set/uniq_spec.rb +0 -14
  356. data/spec/lib/hamster/sorted_set/construction_spec.rb +0 -29
  357. data/spec/lib/hamster/vector/exist_spec.rb +0 -70
  358. data/spec/lib/hamster/vector/exists_spec.rb +0 -70
@@ -10,7 +10,7 @@ describe Hamster::List do
10
10
 
11
11
  it "calls the passed block only once for each item" do
12
12
  count = 0
13
- a,b = Hamster.list(1, 2, 3).partition { |item| count += 1; item.odd? }
13
+ a,b = L[1, 2, 3].partition { |item| count += 1; item.odd? }
14
14
  (a.size + b.size).should be(3) # force realization of lazy lists
15
15
  count.should be(3)
16
16
  end
@@ -20,7 +20,7 @@ describe Hamster::List do
20
20
 
21
21
  it "returns a lazy list of items for which predicate is true" do
22
22
  count = 0
23
- a,b = Hamster.list(1, 2, 3, 4).partition { |item| count += 1; item.odd? }
23
+ a,b = L[1, 2, 3, 4].partition { |item| count += 1; item.odd? }
24
24
  a.take(1).should == [1]
25
25
  count.should be(3) # would be 1 if lists were lazier
26
26
  a.take(2).should == [1, 3]
@@ -29,7 +29,7 @@ describe Hamster::List do
29
29
 
30
30
  it "returns a lazy list of items for which predicate is false" do
31
31
  count = 0
32
- a,b = Hamster.list(1, 2, 3, 4).partition { |item| count += 1; item.odd? }
32
+ a,b = L[1, 2, 3, 4].partition { |item| count += 1; item.odd? }
33
33
  b.take(1).should == [2]
34
34
  count.should be(4) # would be 2 if lists were lazier
35
35
  b.take(2).should == [2, 4]
@@ -78,7 +78,7 @@ describe Hamster::List do
78
78
  [[4], [], [4]],
79
79
  ].each do |values, expected_matches, expected_remainder|
80
80
  context "on #{values.inspect}" do
81
- let(:list) { Hamster.list(*values) }
81
+ let(:list) { L[*values] }
82
82
 
83
83
  context "with a block" do
84
84
  let(:result) { list.partition(&:odd?) }
@@ -86,7 +86,7 @@ describe Hamster::List do
86
86
  let(:remainder) { result.last }
87
87
 
88
88
  it "preserves the original" do
89
- list.should eql(Hamster.list(*values))
89
+ list.should eql(L[*values])
90
90
  end
91
91
 
92
92
  it "returns a frozen array with two items" do
@@ -96,18 +96,18 @@ describe Hamster::List do
96
96
  end
97
97
 
98
98
  it "correctly identifies the matches" do
99
- matches.should eql(Hamster.list(*expected_matches))
99
+ matches.should eql(L[*expected_matches])
100
100
  end
101
101
 
102
102
  it "correctly identifies the remainder" do
103
- remainder.should eql(Hamster.list(*expected_remainder))
103
+ remainder.should eql(L[*expected_remainder])
104
104
  end
105
105
  end
106
106
 
107
107
  context "without a block" do
108
108
  it "returns an Enumerator" do
109
109
  list.partition.class.should be(Enumerator)
110
- list.partition.each(&:odd?).should eql([Hamster.list(*expected_matches), Hamster.list(*expected_remainder)])
110
+ list.partition.each(&:odd?).should eql([L[*expected_matches], L[*expected_remainder]])
111
111
  end
112
112
  end
113
113
  end
@@ -3,36 +3,36 @@ require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
5
  describe "#permutation" do
6
- let(:list) { Hamster.list(1,2,3,4,5) }
6
+ let(:list) { L[1,2,3,4] }
7
7
 
8
8
  context "with no block" do
9
9
  it "returns an Enumerator" do
10
10
  list.permutation.class.should be(Enumerator)
11
- list.permutation.to_a.sort.should == [1,2,3,4,5].permutation.to_a.sort
11
+ list.permutation.to_a.sort.should == [1,2,3,4].permutation.to_a.sort
12
12
  end
13
13
  end
14
14
 
15
15
  context "with no argument" do
16
16
  it "yields all permutations of the list" do
17
17
  perms = list.permutation.to_a
18
- perms.size.should be(120)
19
- perms.sort.should == [1,2,3,4,5].permutation.to_a.sort
18
+ perms.size.should be(24)
19
+ perms.sort.should == [1,2,3,4].permutation.to_a.sort
20
20
  perms.each { |item| item.should be_kind_of(Hamster::List) }
21
21
  end
22
22
  end
23
23
 
24
24
  context "with a length argument" do
25
25
  it "yields all N-size permutations of the list" do
26
- perms = list.permutation(3).to_a
27
- perms.size.should be(60)
28
- perms.sort.should == [1,2,3,4,5].permutation(3).to_a.sort
26
+ perms = list.permutation(2).to_a
27
+ perms.size.should be(12)
28
+ perms.sort.should == [1,2,3,4].permutation(2).to_a.sort
29
29
  perms.each { |item| item.should be_kind_of(Hamster::List) }
30
30
  end
31
31
  end
32
32
 
33
33
  context "with a length argument greater than length of list" do
34
34
  it "yields nothing" do
35
- list.permutation(6).to_a.should be_empty
35
+ list.permutation(5).to_a.should be_empty
36
36
  end
37
37
  end
38
38
 
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
  require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
- let(:list) { Hamster.list(*values) }
5
+ let(:list) { L[*values] }
6
6
 
7
7
  describe "#pop" do
8
8
  let(:pop) { list.pop }
@@ -11,7 +11,7 @@ describe Hamster::List do
11
11
  let(:values) { [] }
12
12
 
13
13
  it "returns an empty list" do
14
- expect(pop).to eq(Hamster.list)
14
+ expect(pop).to eq(L.empty)
15
15
  end
16
16
  end
17
17
 
@@ -19,7 +19,7 @@ describe Hamster::List do
19
19
  let(:values) { %w[a b c] }
20
20
 
21
21
  it "removes the last item" do
22
- expect(pop).to eq(Hamster.list("a", "b"))
22
+ expect(pop).to eq(L["a", "b"])
23
23
  end
24
24
  end
25
25
  end
@@ -16,7 +16,7 @@ describe Hamster::List do
16
16
  ].each do |values, expected|
17
17
  context "on #{values.inspect}" do
18
18
  it "returns #{expected.inspect}" do
19
- Hamster.list(*values).product.should == expected
19
+ L[*values].product.should == expected
20
20
  end
21
21
  end
22
22
  end
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
  require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
- [:reduce, :inject, :fold].each do |method|
5
+ [:reduce, :inject].each do |method|
6
6
  describe "##{method}" do
7
7
  context "on a really big list" do
8
8
  it "doesn't run out of stack" do
@@ -18,7 +18,7 @@ describe Hamster::List do
18
18
  context "on #{values.inspect}" do
19
19
  context "with an initial value of #{initial} and a block" do
20
20
  it "returns #{expected.inspect}" do
21
- Hamster.list(*values).send(method, initial) { |memo, item| memo - item }.should == expected
21
+ L[*values].send(method, initial) { |memo, item| memo - item }.should == expected
22
22
  end
23
23
  end
24
24
  end
@@ -32,7 +32,7 @@ describe Hamster::List do
32
32
  context "on #{values.inspect}" do
33
33
  context "with no initial value and a block" do
34
34
  it "returns #{expected.inspect}" do
35
- Hamster.list(*values).send(method) { |memo, item| memo - item }.should == expected
35
+ L[*values].send(method) { |memo, item| memo - item }.should == expected
36
36
  end
37
37
  end
38
38
  end
@@ -40,58 +40,15 @@ describe Hamster::List do
40
40
 
41
41
  context "with no block and a symbol argument" do
42
42
  it "uses the symbol as the name of a method to reduce with" do
43
- Hamster.list(1, 2, 3).send(method, :+).should == 6
43
+ L[1, 2, 3].send(method, :+).should == 6
44
44
  end
45
45
  end
46
46
 
47
47
  context "with no block and a string argument" do
48
48
  it "uses the string as the name of a method to reduce with" do
49
- Hamster.list(1, 2, 3).send(method, '+').should == 6
49
+ L[1, 2, 3].send(method, '+').should == 6
50
50
  end
51
51
  end
52
52
  end
53
53
  end
54
-
55
- describe "#foldr" do
56
- [
57
- [[], 10, 10],
58
- [[1], 10, 9],
59
- [[1, 2, 3], 10, 4],
60
- ].each do |values, initial, expected|
61
- context "on #{values.inspect}" do
62
- context "with an initial value of #{initial} and a block" do
63
- it "returns #{expected.inspect}" do
64
- Hamster.list(*values).foldr(initial) { |memo, item| memo - item }.should == expected
65
- end
66
- end
67
- end
68
- end
69
-
70
- [
71
- [[], nil],
72
- [[1], 1],
73
- [[1, 2, 3], 0],
74
- [[1, 2, 3, 4], -2]
75
- ].each do |values, expected|
76
- context "on #{values.inspect}" do
77
- context "with no initial value and a block" do
78
- it "returns #{expected.inspect}" do
79
- Hamster.list(*values).foldr { |memo, item| memo - item }.should == expected
80
- end
81
- end
82
- end
83
- end
84
-
85
- context "with no block and a symbol argument" do
86
- it "uses the symbol as the name of a method to reduce with" do
87
- Hamster.list(1, 2, 3).foldr(:+).should == 6
88
- end
89
- end
90
-
91
- context "with no block and a string argument" do
92
- it "uses the string as the name of a method to reduce with" do
93
- Hamster.list(1, 2, 3).foldr('+').should == 6
94
- end
95
- end
96
- end
97
54
  end
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
  require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
- [:remove, :reject, :delete_if].each do |method|
5
+ [:reject, :delete_if].each do |method|
6
6
  describe "##{method}" do
7
7
  it "is lazy" do
8
8
  -> { Hamster.stream { fail }.send(method) { |item| false } }.should_not raise_error
@@ -16,11 +16,11 @@ describe Hamster::List do
16
16
  [%w[a b c], []],
17
17
  ].each do |values, expected|
18
18
  context "on #{values.inspect}" do
19
- let(:list) { Hamster.list(*values) }
19
+ let(:list) { L[*values] }
20
20
 
21
21
  context "with a block" do
22
22
  it "returns #{expected.inspect}" do
23
- list.send(method) { |item| item == item.downcase }.should eql(Hamster.list(*expected))
23
+ list.send(method) { |item| item == item.downcase }.should eql(L[*expected])
24
24
  end
25
25
 
26
26
  it "is lazy" do
@@ -36,7 +36,7 @@ describe Hamster::List do
36
36
  context "without a block" do
37
37
  it "returns an Enumerator" do
38
38
  list.send(method).class.should be(Enumerator)
39
- list.send(method).each { |item| item == item.downcase }.should eql(Hamster.list(*expected))
39
+ list.send(method).each { |item| item == item.downcase }.should eql(L[*expected])
40
40
  end
41
41
  end
42
42
  end
@@ -19,15 +19,15 @@ describe Hamster::List do
19
19
  [%w[A B C], %w[C B A]],
20
20
  ].each do |values, expected|
21
21
  context "on #{values.inspect}" do
22
- let(:list) { Hamster.list(*values) }
22
+ let(:list) { L[*values] }
23
23
 
24
24
  it "preserves the original" do
25
25
  list.reverse { |item| item.downcase }
26
- list.should eql(Hamster.list(*values))
26
+ list.should eql(L[*values])
27
27
  end
28
28
 
29
29
  it "returns #{expected.inspect}" do
30
- list.reverse { |item| item.downcase }.should == Hamster.list(*expected)
30
+ list.reverse { |item| item.downcase }.should == L[*expected]
31
31
  end
32
32
  end
33
33
  end
@@ -3,21 +3,21 @@ require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
5
  describe "#rotate" do
6
- let(:list) { Hamster.list(1,2,3,4,5) }
6
+ let(:list) { L[1,2,3,4,5] }
7
7
 
8
8
  context "when passed no argument" do
9
9
  it "returns a new list with the first element moved to the end" do
10
- list.rotate.should eql(Hamster.list(2,3,4,5,1))
10
+ list.rotate.should eql(L[2,3,4,5,1])
11
11
  end
12
12
  end
13
13
 
14
14
  context "with an integral argument n" do
15
15
  it "returns a new list with the first (n % size) elements moved to the end" do
16
- list.rotate(2).should eql(Hamster.list(3,4,5,1,2))
17
- list.rotate(3).should eql(Hamster.list(4,5,1,2,3))
18
- list.rotate(4).should eql(Hamster.list(5,1,2,3,4))
19
- list.rotate(5).should eql(Hamster.list(1,2,3,4,5))
20
- list.rotate(-1).should eql(Hamster.list(5,1,2,3,4))
16
+ list.rotate(2).should eql(L[3,4,5,1,2])
17
+ list.rotate(3).should eql(L[4,5,1,2,3])
18
+ list.rotate(4).should eql(L[5,1,2,3,4])
19
+ list.rotate(5).should eql(L[1,2,3,4,5])
20
+ list.rotate(-1).should eql(L[5,1,2,3,4])
21
21
  end
22
22
  end
23
23
 
@@ -3,7 +3,7 @@ require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
5
  describe "#sample" do
6
- let(:list) { Hamster.list(*(1..10)) }
6
+ let(:list) { (1..10).to_list }
7
7
 
8
8
  it "returns a randomly chosen item" do
9
9
  chosen = 100.times.map { list.sample }
@@ -2,8 +2,8 @@ require "spec_helper"
2
2
  require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
- let(:list) { Hamster.list(*values) }
6
- let(:selected_list) { Hamster.list(*selected_values) }
5
+ let(:list) { L[*values] }
6
+ let(:selected_list) { L[*selected_values] }
7
7
 
8
8
  describe "#select" do
9
9
  it "is lazy" do
@@ -15,7 +15,7 @@ describe Hamster::List do
15
15
  let(:select) { list.select { |item| item == item.upcase } }
16
16
 
17
17
  it "preserves the original" do
18
- expect(list).to eq(Hamster.list(*values))
18
+ expect(list).to eq(L[*values])
19
19
  end
20
20
 
21
21
  it "returns the selected list" do
@@ -17,7 +17,7 @@ describe Hamster::List do
17
17
  ].each do |values, expected|
18
18
  context "on #{values.inspect}" do
19
19
  it "returns #{expected.inspect}" do
20
- Hamster.list(*values).send(method).should == expected
20
+ L[*values].send(method).should == expected
21
21
  end
22
22
  end
23
23
  end
@@ -2,8 +2,8 @@ require "spec_helper"
2
2
  require "hamster/list"
3
3
 
4
4
  describe Hamster::List do
5
- let(:list) { Hamster.list(1,2,3,4) }
6
- let(:big) { Hamster.list(*1..10000) }
5
+ let(:list) { L[1,2,3,4] }
6
+ let(:big) { (1..10000).to_list }
7
7
 
8
8
  [:slice, :[]].each do |method|
9
9
  describe "##{method}" do
@@ -21,7 +21,7 @@ describe Hamster::List do
21
21
  end
22
22
 
23
23
  it "leaves the original unchanged" do
24
- list.should eql(Hamster.list(1,2,3,4))
24
+ list.should eql(L[1,2,3,4])
25
25
  end
26
26
  end
27
27
 
@@ -41,21 +41,21 @@ describe Hamster::List do
41
41
 
42
42
  context "when passed a positive integral index and count" do
43
43
  it "returns 'count' elements starting from 'index'" do
44
- list.send(method, 0, 0).should eql(Hamster.list)
45
- list.send(method, 0, 1).should eql(Hamster.list(1))
46
- list.send(method, 0, 2).should eql(Hamster.list(1,2))
47
- list.send(method, 0, 4).should eql(Hamster.list(1,2,3,4))
48
- list.send(method, 0, 6).should eql(Hamster.list(1,2,3,4))
44
+ list.send(method, 0, 0).should eql(L.empty)
45
+ list.send(method, 0, 1).should eql(L[1])
46
+ list.send(method, 0, 2).should eql(L[1,2])
47
+ list.send(method, 0, 4).should eql(L[1,2,3,4])
48
+ list.send(method, 0, 6).should eql(L[1,2,3,4])
49
49
  list.send(method, 0, -1).should be_nil
50
50
  list.send(method, 0, -2).should be_nil
51
51
  list.send(method, 0, -4).should be_nil
52
- list.send(method, 2, 0).should eql(Hamster.list)
53
- list.send(method, 2, 1).should eql(Hamster.list(3))
54
- list.send(method, 2, 2).should eql(Hamster.list(3,4))
55
- list.send(method, 2, 4).should eql(Hamster.list(3,4))
52
+ list.send(method, 2, 0).should eql(L.empty)
53
+ list.send(method, 2, 1).should eql(L[3])
54
+ list.send(method, 2, 2).should eql(L[3,4])
55
+ list.send(method, 2, 4).should eql(L[3,4])
56
56
  list.send(method, 2, -1).should be_nil
57
- list.send(method, 4, 0).should eql(Hamster.list)
58
- list.send(method, 4, 2).should eql(Hamster.list)
57
+ list.send(method, 4, 0).should eql(L.empty)
58
+ list.send(method, 4, 2).should eql(L.empty)
59
59
  list.send(method, 4, -1).should be_nil
60
60
  list.send(method, 5, 0).should be_nil
61
61
  list.send(method, 5, 2).should be_nil
@@ -64,145 +64,145 @@ describe Hamster::List do
64
64
  list.send(method, 6, 2).should be_nil
65
65
  list.send(method, 6, -1).should be_nil
66
66
 
67
- big.send(method, 0, 3).should eql(Hamster.list(1,2,3))
68
- big.send(method, 1023, 4).should eql(Hamster.list(1024,1025,1026,1027))
69
- big.send(method, 1024, 4).should eql(Hamster.list(1025,1026,1027,1028))
67
+ big.send(method, 0, 3).should eql(L[1,2,3])
68
+ big.send(method, 1023, 4).should eql(L[1024,1025,1026,1027])
69
+ big.send(method, 1024, 4).should eql(L[1025,1026,1027,1028])
70
70
  end
71
71
 
72
72
  it "leaves the original unchanged" do
73
- list.should eql(Hamster.list(1,2,3,4))
73
+ list.should eql(L[1,2,3,4])
74
74
  end
75
75
  end
76
76
 
77
77
  context "when passed a negative integral index and count" do
78
78
  it "returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array" do
79
- list.send(method, -1, 0).should eql(Hamster.list)
80
- list.send(method, -1, 1).should eql(Hamster.list(4))
81
- list.send(method, -1, 2).should eql(Hamster.list(4))
79
+ list.send(method, -1, 0).should eql(L.empty)
80
+ list.send(method, -1, 1).should eql(L[4])
81
+ list.send(method, -1, 2).should eql(L[4])
82
82
  list.send(method, -1, -1).should be_nil
83
- list.send(method, -2, 0).should eql(Hamster.list)
84
- list.send(method, -2, 1).should eql(Hamster.list(3))
85
- list.send(method, -2, 2).should eql(Hamster.list(3,4))
86
- list.send(method, -2, 4).should eql(Hamster.list(3,4))
83
+ list.send(method, -2, 0).should eql(L.empty)
84
+ list.send(method, -2, 1).should eql(L[3])
85
+ list.send(method, -2, 2).should eql(L[3,4])
86
+ list.send(method, -2, 4).should eql(L[3,4])
87
87
  list.send(method, -2, -1).should be_nil
88
- list.send(method, -4, 0).should eql(Hamster.list)
89
- list.send(method, -4, 1).should eql(Hamster.list(1))
90
- list.send(method, -4, 2).should eql(Hamster.list(1,2))
91
- list.send(method, -4, 4).should eql(Hamster.list(1,2,3,4))
92
- list.send(method, -4, 6).should eql(Hamster.list(1,2,3,4))
88
+ list.send(method, -4, 0).should eql(L.empty)
89
+ list.send(method, -4, 1).should eql(L[1])
90
+ list.send(method, -4, 2).should eql(L[1,2])
91
+ list.send(method, -4, 4).should eql(L[1,2,3,4])
92
+ list.send(method, -4, 6).should eql(L[1,2,3,4])
93
93
  list.send(method, -4, -1).should be_nil
94
94
  list.send(method, -5, 0).should be_nil
95
95
  list.send(method, -5, 1).should be_nil
96
96
  list.send(method, -5, 10).should be_nil
97
97
  list.send(method, -5, -1).should be_nil
98
98
 
99
- big.send(method, -1, 1).should eql(Hamster.list(10000))
100
- big.send(method, -1, 2).should eql(Hamster.list(10000))
101
- big.send(method, -6, 2).should eql(Hamster.list(9995,9996))
99
+ big.send(method, -1, 1).should eql(L[10000])
100
+ big.send(method, -1, 2).should eql(L[10000])
101
+ big.send(method, -6, 2).should eql(L[9995,9996])
102
102
  end
103
103
  end
104
104
 
105
105
  context "when passed a Range" do
106
106
  it "returns the elements whose indexes are within the given Range" do
107
- list.send(method, 0..-1).should eql(Hamster.list(1,2,3,4))
108
- list.send(method, 0..-10).should eql(Hamster.list)
109
- list.send(method, 0..0).should eql(Hamster.list(1))
110
- list.send(method, 0..1).should eql(Hamster.list(1,2))
111
- list.send(method, 0..2).should eql(Hamster.list(1,2,3))
112
- list.send(method, 0..3).should eql(Hamster.list(1,2,3,4))
113
- list.send(method, 0..4).should eql(Hamster.list(1,2,3,4))
114
- list.send(method, 0..10).should eql(Hamster.list(1,2,3,4))
115
- list.send(method, 2..-10).should eql(Hamster.list)
116
- list.send(method, 2..0).should eql(Hamster.list)
117
- list.send(method, 2..2).should eql(Hamster.list(3))
118
- list.send(method, 2..3).should eql(Hamster.list(3,4))
119
- list.send(method, 2..4).should eql(Hamster.list(3,4))
120
- list.send(method, 3..0).should eql(Hamster.list)
121
- list.send(method, 3..3).should eql(Hamster.list(4))
122
- list.send(method, 3..4).should eql(Hamster.list(4))
123
- list.send(method, 4..0).should eql(Hamster.list)
124
- list.send(method, 4..4).should eql(Hamster.list)
125
- list.send(method, 4..5).should eql(Hamster.list)
107
+ list.send(method, 0..-1).should eql(L[1,2,3,4])
108
+ list.send(method, 0..-10).should eql(L.empty)
109
+ list.send(method, 0..0).should eql(L[1])
110
+ list.send(method, 0..1).should eql(L[1,2])
111
+ list.send(method, 0..2).should eql(L[1,2,3])
112
+ list.send(method, 0..3).should eql(L[1,2,3,4])
113
+ list.send(method, 0..4).should eql(L[1,2,3,4])
114
+ list.send(method, 0..10).should eql(L[1,2,3,4])
115
+ list.send(method, 2..-10).should eql(L.empty)
116
+ list.send(method, 2..0).should eql(L.empty)
117
+ list.send(method, 2..2).should eql(L[3])
118
+ list.send(method, 2..3).should eql(L[3,4])
119
+ list.send(method, 2..4).should eql(L[3,4])
120
+ list.send(method, 3..0).should eql(L.empty)
121
+ list.send(method, 3..3).should eql(L[4])
122
+ list.send(method, 3..4).should eql(L[4])
123
+ list.send(method, 4..0).should eql(L.empty)
124
+ list.send(method, 4..4).should eql(L.empty)
125
+ list.send(method, 4..5).should eql(L.empty)
126
126
  list.send(method, 5..0).should be_nil
127
127
  list.send(method, 5..5).should be_nil
128
128
  list.send(method, 5..6).should be_nil
129
129
 
130
- big.send(method, 159..162).should eql(Hamster.list(160,161,162,163))
131
- big.send(method, 160..162).should eql(Hamster.list(161,162,163))
132
- big.send(method, 161..162).should eql(Hamster.list(162,163))
133
- big.send(method, 9999..10100).should eql(Hamster.list(10000))
134
- big.send(method, 10000..10100).should eql(Hamster.list)
130
+ big.send(method, 159..162).should eql(L[160,161,162,163])
131
+ big.send(method, 160..162).should eql(L[161,162,163])
132
+ big.send(method, 161..162).should eql(L[162,163])
133
+ big.send(method, 9999..10100).should eql(L[10000])
134
+ big.send(method, 10000..10100).should eql(L.empty)
135
135
  big.send(method, 10001..10100).should be_nil
136
136
 
137
- list.send(method, 0...-1).should eql(Hamster.list(1,2,3))
138
- list.send(method, 0...-10).should eql(Hamster.list)
139
- list.send(method, 0...0).should eql(Hamster.list)
140
- list.send(method, 0...1).should eql(Hamster.list(1))
141
- list.send(method, 0...2).should eql(Hamster.list(1,2))
142
- list.send(method, 0...3).should eql(Hamster.list(1,2,3))
143
- list.send(method, 0...4).should eql(Hamster.list(1,2,3,4))
144
- list.send(method, 0...10).should eql(Hamster.list(1,2,3,4))
145
- list.send(method, 2...-10).should eql(Hamster.list)
146
- list.send(method, 2...0).should eql(Hamster.list)
147
- list.send(method, 2...2).should eql(Hamster.list)
148
- list.send(method, 2...3).should eql(Hamster.list(3))
149
- list.send(method, 2...4).should eql(Hamster.list(3,4))
150
- list.send(method, 3...0).should eql(Hamster.list)
151
- list.send(method, 3...3).should eql(Hamster.list)
152
- list.send(method, 3...4).should eql(Hamster.list(4))
153
- list.send(method, 4...0).should eql(Hamster.list)
154
- list.send(method, 4...4).should eql(Hamster.list)
155
- list.send(method, 4...5).should eql(Hamster.list)
137
+ list.send(method, 0...-1).should eql(L[1,2,3])
138
+ list.send(method, 0...-10).should eql(L.empty)
139
+ list.send(method, 0...0).should eql(L.empty)
140
+ list.send(method, 0...1).should eql(L[1])
141
+ list.send(method, 0...2).should eql(L[1,2])
142
+ list.send(method, 0...3).should eql(L[1,2,3])
143
+ list.send(method, 0...4).should eql(L[1,2,3,4])
144
+ list.send(method, 0...10).should eql(L[1,2,3,4])
145
+ list.send(method, 2...-10).should eql(L.empty)
146
+ list.send(method, 2...0).should eql(L.empty)
147
+ list.send(method, 2...2).should eql(L.empty)
148
+ list.send(method, 2...3).should eql(L[3])
149
+ list.send(method, 2...4).should eql(L[3,4])
150
+ list.send(method, 3...0).should eql(L.empty)
151
+ list.send(method, 3...3).should eql(L.empty)
152
+ list.send(method, 3...4).should eql(L[4])
153
+ list.send(method, 4...0).should eql(L.empty)
154
+ list.send(method, 4...4).should eql(L.empty)
155
+ list.send(method, 4...5).should eql(L.empty)
156
156
  list.send(method, 5...0).should be_nil
157
157
  list.send(method, 5...5).should be_nil
158
158
  list.send(method, 5...6).should be_nil
159
159
 
160
- big.send(method, 159...162).should eql(Hamster.list(160,161,162))
161
- big.send(method, 160...162).should eql(Hamster.list(161,162))
162
- big.send(method, 161...162).should eql(Hamster.list(162))
163
- big.send(method, 9999...10100).should eql(Hamster.list(10000))
164
- big.send(method, 10000...10100).should eql(Hamster.list)
160
+ big.send(method, 159...162).should eql(L[160,161,162])
161
+ big.send(method, 160...162).should eql(L[161,162])
162
+ big.send(method, 161...162).should eql(L[162])
163
+ big.send(method, 9999...10100).should eql(L[10000])
164
+ big.send(method, 10000...10100).should eql(L.empty)
165
165
  big.send(method, 10001...10100).should be_nil
166
166
 
167
- list.send(method, -1..-1).should eql(Hamster.list(4))
168
- list.send(method, -1...-1).should eql(Hamster.list)
169
- list.send(method, -1..3).should eql(Hamster.list(4))
170
- list.send(method, -1...3).should eql(Hamster.list)
171
- list.send(method, -1..4).should eql(Hamster.list(4))
172
- list.send(method, -1...4).should eql(Hamster.list(4))
173
- list.send(method, -1..10).should eql(Hamster.list(4))
174
- list.send(method, -1...10).should eql(Hamster.list(4))
175
- list.send(method, -1..0).should eql(Hamster.list)
176
- list.send(method, -1..-4).should eql(Hamster.list)
177
- list.send(method, -1...-4).should eql(Hamster.list)
178
- list.send(method, -1..-6).should eql(Hamster.list)
179
- list.send(method, -1...-6).should eql(Hamster.list)
180
- list.send(method, -2..-2).should eql(Hamster.list(3))
181
- list.send(method, -2...-2).should eql(Hamster.list)
182
- list.send(method, -2..-1).should eql(Hamster.list(3,4))
183
- list.send(method, -2...-1).should eql(Hamster.list(3))
184
- list.send(method, -2..10).should eql(Hamster.list(3,4))
185
- list.send(method, -2...10).should eql(Hamster.list(3,4))
186
-
187
- big.send(method, -1..-1).should eql(Hamster.list(10000))
188
- big.send(method, -1..9999).should eql(Hamster.list(10000))
189
- big.send(method, -1...9999).should eql(Hamster.list)
190
- big.send(method, -2...9999).should eql(Hamster.list(9999))
191
- big.send(method, -2..-1).should eql(Hamster.list(9999,10000))
192
-
193
- list.send(method, -4..-4).should eql(Hamster.list(1))
194
- list.send(method, -4..-2).should eql(Hamster.list(1,2,3))
195
- list.send(method, -4...-2).should eql(Hamster.list(1,2))
196
- list.send(method, -4..-1).should eql(Hamster.list(1,2,3,4))
197
- list.send(method, -4...-1).should eql(Hamster.list(1,2,3))
198
- list.send(method, -4..3).should eql(Hamster.list(1,2,3,4))
199
- list.send(method, -4...3).should eql(Hamster.list(1,2,3))
200
- list.send(method, -4..4).should eql(Hamster.list(1,2,3,4))
201
- list.send(method, -4...4).should eql(Hamster.list(1,2,3,4))
202
- list.send(method, -4..0).should eql(Hamster.list(1))
203
- list.send(method, -4...0).should eql(Hamster.list)
204
- list.send(method, -4..1).should eql(Hamster.list(1,2))
205
- list.send(method, -4...1).should eql(Hamster.list(1))
167
+ list.send(method, -1..-1).should eql(L[4])
168
+ list.send(method, -1...-1).should eql(L.empty)
169
+ list.send(method, -1..3).should eql(L[4])
170
+ list.send(method, -1...3).should eql(L.empty)
171
+ list.send(method, -1..4).should eql(L[4])
172
+ list.send(method, -1...4).should eql(L[4])
173
+ list.send(method, -1..10).should eql(L[4])
174
+ list.send(method, -1...10).should eql(L[4])
175
+ list.send(method, -1..0).should eql(L.empty)
176
+ list.send(method, -1..-4).should eql(L.empty)
177
+ list.send(method, -1...-4).should eql(L.empty)
178
+ list.send(method, -1..-6).should eql(L.empty)
179
+ list.send(method, -1...-6).should eql(L.empty)
180
+ list.send(method, -2..-2).should eql(L[3])
181
+ list.send(method, -2...-2).should eql(L.empty)
182
+ list.send(method, -2..-1).should eql(L[3,4])
183
+ list.send(method, -2...-1).should eql(L[3])
184
+ list.send(method, -2..10).should eql(L[3,4])
185
+ list.send(method, -2...10).should eql(L[3,4])
186
+
187
+ big.send(method, -1..-1).should eql(L[10000])
188
+ big.send(method, -1..9999).should eql(L[10000])
189
+ big.send(method, -1...9999).should eql(L.empty)
190
+ big.send(method, -2...9999).should eql(L[9999])
191
+ big.send(method, -2..-1).should eql(L[9999,10000])
192
+
193
+ list.send(method, -4..-4).should eql(L[1])
194
+ list.send(method, -4..-2).should eql(L[1,2,3])
195
+ list.send(method, -4...-2).should eql(L[1,2])
196
+ list.send(method, -4..-1).should eql(L[1,2,3,4])
197
+ list.send(method, -4...-1).should eql(L[1,2,3])
198
+ list.send(method, -4..3).should eql(L[1,2,3,4])
199
+ list.send(method, -4...3).should eql(L[1,2,3])
200
+ list.send(method, -4..4).should eql(L[1,2,3,4])
201
+ list.send(method, -4...4).should eql(L[1,2,3,4])
202
+ list.send(method, -4..0).should eql(L[1])
203
+ list.send(method, -4...0).should eql(L.empty)
204
+ list.send(method, -4..1).should eql(L[1,2])
205
+ list.send(method, -4...1).should eql(L[1])
206
206
 
207
207
  list.send(method, -5..-5).should be_nil
208
208
  list.send(method, -5...-5).should be_nil
@@ -214,7 +214,7 @@ describe Hamster::List do
214
214
  end
215
215
 
216
216
  it "leaves the original unchanged" do
217
- list.should eql(Hamster.list(1,2,3,4))
217
+ list.should eql(L[1,2,3,4])
218
218
  end
219
219
  end
220
220
  end
@@ -222,8 +222,8 @@ describe Hamster::List do
222
222
  context "when passed a subclass of Range" do
223
223
  it "works the same as with a Range" do
224
224
  subclass = Class.new(Range)
225
- list.send(method, subclass.new(1,2)).should eql(Hamster.list(2,3))
226
- list.send(method, subclass.new(-3,-1,true)).should eql(Hamster.list(2,3))
225
+ list.send(method, subclass.new(1,2)).should eql(L[2,3])
226
+ list.send(method, subclass.new(-3,-1,true)).should eql(L[2,3])
227
227
  end
228
228
  end
229
229
  end