immutable-ruby 0.0.4 → 0.1.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 (355) hide show
  1. checksums.yaml +4 -4
  2. data/lib/immutable/core_ext/enumerable.rb +1 -1
  3. data/lib/immutable/core_ext/io.rb +1 -1
  4. data/lib/immutable/core_ext.rb +2 -2
  5. data/lib/immutable/deque.rb +17 -17
  6. data/lib/immutable/enumerable.rb +10 -10
  7. data/lib/immutable/hash.rb +24 -24
  8. data/lib/immutable/list.rb +36 -36
  9. data/lib/immutable/nested.rb +8 -8
  10. data/lib/immutable/set.rb +30 -30
  11. data/lib/immutable/sorted_set.rb +30 -26
  12. data/lib/immutable/trie.rb +2 -2
  13. data/lib/immutable/vector.rb +40 -35
  14. data/lib/immutable/version.rb +1 -1
  15. data/lib/immutable.rb +9 -9
  16. metadata +36 -699
  17. data/lib/immutable/core_ext/struct.rb +0 -9
  18. data/spec/fixtures/io_spec.txt +0 -3
  19. data/spec/lib/immutable/core_ext/array_spec.rb +0 -13
  20. data/spec/lib/immutable/core_ext/enumerable_spec.rb +0 -29
  21. data/spec/lib/immutable/core_ext/io_spec.rb +0 -28
  22. data/spec/lib/immutable/deque/clear_spec.rb +0 -33
  23. data/spec/lib/immutable/deque/construction_spec.rb +0 -29
  24. data/spec/lib/immutable/deque/copying_spec.rb +0 -19
  25. data/spec/lib/immutable/deque/dequeue_spec.rb +0 -34
  26. data/spec/lib/immutable/deque/empty_spec.rb +0 -39
  27. data/spec/lib/immutable/deque/enqueue_spec.rb +0 -27
  28. data/spec/lib/immutable/deque/first_spec.rb +0 -17
  29. data/spec/lib/immutable/deque/inspect_spec.rb +0 -23
  30. data/spec/lib/immutable/deque/last_spec.rb +0 -17
  31. data/spec/lib/immutable/deque/marshal_spec.rb +0 -33
  32. data/spec/lib/immutable/deque/new_spec.rb +0 -43
  33. data/spec/lib/immutable/deque/pop_spec.rb +0 -36
  34. data/spec/lib/immutable/deque/pretty_print_spec.rb +0 -23
  35. data/spec/lib/immutable/deque/push_spec.rb +0 -36
  36. data/spec/lib/immutable/deque/random_modification_spec.rb +0 -33
  37. data/spec/lib/immutable/deque/rotate_spec.rb +0 -68
  38. data/spec/lib/immutable/deque/shift_spec.rb +0 -29
  39. data/spec/lib/immutable/deque/size_spec.rb +0 -19
  40. data/spec/lib/immutable/deque/to_a_spec.rb +0 -26
  41. data/spec/lib/immutable/deque/to_ary_spec.rb +0 -35
  42. data/spec/lib/immutable/deque/to_list_spec.rb +0 -24
  43. data/spec/lib/immutable/deque/unshift_spec.rb +0 -30
  44. data/spec/lib/immutable/hash/all_spec.rb +0 -53
  45. data/spec/lib/immutable/hash/any_spec.rb +0 -53
  46. data/spec/lib/immutable/hash/assoc_spec.rb +0 -51
  47. data/spec/lib/immutable/hash/clear_spec.rb +0 -42
  48. data/spec/lib/immutable/hash/construction_spec.rb +0 -38
  49. data/spec/lib/immutable/hash/copying_spec.rb +0 -13
  50. data/spec/lib/immutable/hash/default_proc_spec.rb +0 -72
  51. data/spec/lib/immutable/hash/delete_spec.rb +0 -39
  52. data/spec/lib/immutable/hash/dig_spec.rb +0 -34
  53. data/spec/lib/immutable/hash/each_spec.rb +0 -77
  54. data/spec/lib/immutable/hash/each_with_index_spec.rb +0 -29
  55. data/spec/lib/immutable/hash/empty_spec.rb +0 -43
  56. data/spec/lib/immutable/hash/eql_spec.rb +0 -75
  57. data/spec/lib/immutable/hash/except_spec.rb +0 -42
  58. data/spec/lib/immutable/hash/fetch_spec.rb +0 -57
  59. data/spec/lib/immutable/hash/fetch_values_spec.rb +0 -22
  60. data/spec/lib/immutable/hash/find_spec.rb +0 -43
  61. data/spec/lib/immutable/hash/flat_map_spec.rb +0 -35
  62. data/spec/lib/immutable/hash/flatten_spec.rb +0 -98
  63. data/spec/lib/immutable/hash/get_spec.rb +0 -79
  64. data/spec/lib/immutable/hash/has_key_spec.rb +0 -31
  65. data/spec/lib/immutable/hash/has_value_spec.rb +0 -27
  66. data/spec/lib/immutable/hash/hash_spec.rb +0 -29
  67. data/spec/lib/immutable/hash/inspect_spec.rb +0 -30
  68. data/spec/lib/immutable/hash/invert_spec.rb +0 -30
  69. data/spec/lib/immutable/hash/key_spec.rb +0 -27
  70. data/spec/lib/immutable/hash/keys_spec.rb +0 -15
  71. data/spec/lib/immutable/hash/map_spec.rb +0 -45
  72. data/spec/lib/immutable/hash/marshal_spec.rb +0 -28
  73. data/spec/lib/immutable/hash/merge_spec.rb +0 -82
  74. data/spec/lib/immutable/hash/min_max_spec.rb +0 -45
  75. data/spec/lib/immutable/hash/new_spec.rb +0 -70
  76. data/spec/lib/immutable/hash/none_spec.rb +0 -48
  77. data/spec/lib/immutable/hash/partition_spec.rb +0 -35
  78. data/spec/lib/immutable/hash/pretty_print_spec.rb +0 -34
  79. data/spec/lib/immutable/hash/put_spec.rb +0 -111
  80. data/spec/lib/immutable/hash/reduce_spec.rb +0 -35
  81. data/spec/lib/immutable/hash/reject_spec.rb +0 -61
  82. data/spec/lib/immutable/hash/reverse_each_spec.rb +0 -27
  83. data/spec/lib/immutable/hash/sample_spec.rb +0 -13
  84. data/spec/lib/immutable/hash/select_spec.rb +0 -57
  85. data/spec/lib/immutable/hash/size_spec.rb +0 -51
  86. data/spec/lib/immutable/hash/slice_spec.rb +0 -44
  87. data/spec/lib/immutable/hash/sort_spec.rb +0 -26
  88. data/spec/lib/immutable/hash/store_spec.rb +0 -75
  89. data/spec/lib/immutable/hash/subset_spec.rb +0 -42
  90. data/spec/lib/immutable/hash/superset_spec.rb +0 -42
  91. data/spec/lib/immutable/hash/take_spec.rb +0 -35
  92. data/spec/lib/immutable/hash/to_a_spec.rb +0 -13
  93. data/spec/lib/immutable/hash/to_hash_spec.rb +0 -21
  94. data/spec/lib/immutable/hash/to_proc_spec.rb +0 -39
  95. data/spec/lib/immutable/hash/update_in_spec.rb +0 -79
  96. data/spec/lib/immutable/hash/values_at_spec.rb +0 -33
  97. data/spec/lib/immutable/hash/values_spec.rb +0 -23
  98. data/spec/lib/immutable/list/add_spec.rb +0 -25
  99. data/spec/lib/immutable/list/all_spec.rb +0 -57
  100. data/spec/lib/immutable/list/any_spec.rb +0 -49
  101. data/spec/lib/immutable/list/append_spec.rb +0 -38
  102. data/spec/lib/immutable/list/at_spec.rb +0 -29
  103. data/spec/lib/immutable/list/break_spec.rb +0 -69
  104. data/spec/lib/immutable/list/cadr_spec.rb +0 -38
  105. data/spec/lib/immutable/list/chunk_spec.rb +0 -28
  106. data/spec/lib/immutable/list/clear_spec.rb +0 -24
  107. data/spec/lib/immutable/list/combination_spec.rb +0 -33
  108. data/spec/lib/immutable/list/compact_spec.rb +0 -34
  109. data/spec/lib/immutable/list/compare_spec.rb +0 -30
  110. data/spec/lib/immutable/list/cons_spec.rb +0 -25
  111. data/spec/lib/immutable/list/construction_spec.rb +0 -110
  112. data/spec/lib/immutable/list/copying_spec.rb +0 -19
  113. data/spec/lib/immutable/list/count_spec.rb +0 -36
  114. data/spec/lib/immutable/list/cycle_spec.rb +0 -28
  115. data/spec/lib/immutable/list/delete_at_spec.rb +0 -18
  116. data/spec/lib/immutable/list/delete_spec.rb +0 -16
  117. data/spec/lib/immutable/list/drop_spec.rb +0 -30
  118. data/spec/lib/immutable/list/drop_while_spec.rb +0 -38
  119. data/spec/lib/immutable/list/each_slice_spec.rb +0 -51
  120. data/spec/lib/immutable/list/each_spec.rb +0 -40
  121. data/spec/lib/immutable/list/each_with_index_spec.rb +0 -28
  122. data/spec/lib/immutable/list/empty_spec.rb +0 -23
  123. data/spec/lib/immutable/list/eql_spec.rb +0 -61
  124. data/spec/lib/immutable/list/fill_spec.rb +0 -49
  125. data/spec/lib/immutable/list/find_all_spec.rb +0 -70
  126. data/spec/lib/immutable/list/find_index_spec.rb +0 -35
  127. data/spec/lib/immutable/list/find_spec.rb +0 -42
  128. data/spec/lib/immutable/list/flat_map_spec.rb +0 -51
  129. data/spec/lib/immutable/list/flatten_spec.rb +0 -30
  130. data/spec/lib/immutable/list/grep_spec.rb +0 -46
  131. data/spec/lib/immutable/list/group_by_spec.rb +0 -41
  132. data/spec/lib/immutable/list/hash_spec.rb +0 -21
  133. data/spec/lib/immutable/list/head_spec.rb +0 -19
  134. data/spec/lib/immutable/list/include_spec.rb +0 -35
  135. data/spec/lib/immutable/list/index_spec.rb +0 -37
  136. data/spec/lib/immutable/list/indices_spec.rb +0 -61
  137. data/spec/lib/immutable/list/init_spec.rb +0 -28
  138. data/spec/lib/immutable/list/inits_spec.rb +0 -28
  139. data/spec/lib/immutable/list/insert_spec.rb +0 -46
  140. data/spec/lib/immutable/list/inspect_spec.rb +0 -29
  141. data/spec/lib/immutable/list/intersperse_spec.rb +0 -28
  142. data/spec/lib/immutable/list/join_spec.rb +0 -63
  143. data/spec/lib/immutable/list/last_spec.rb +0 -23
  144. data/spec/lib/immutable/list/ltlt_spec.rb +0 -19
  145. data/spec/lib/immutable/list/map_spec.rb +0 -45
  146. data/spec/lib/immutable/list/maximum_spec.rb +0 -39
  147. data/spec/lib/immutable/list/merge_by_spec.rb +0 -51
  148. data/spec/lib/immutable/list/merge_spec.rb +0 -59
  149. data/spec/lib/immutable/list/minimum_spec.rb +0 -39
  150. data/spec/lib/immutable/list/multithreading_spec.rb +0 -47
  151. data/spec/lib/immutable/list/none_spec.rb +0 -47
  152. data/spec/lib/immutable/list/one_spec.rb +0 -49
  153. data/spec/lib/immutable/list/partition_spec.rb +0 -115
  154. data/spec/lib/immutable/list/permutation_spec.rb +0 -55
  155. data/spec/lib/immutable/list/pop_spec.rb +0 -25
  156. data/spec/lib/immutable/list/product_spec.rb +0 -23
  157. data/spec/lib/immutable/list/reduce_spec.rb +0 -53
  158. data/spec/lib/immutable/list/reject_spec.rb +0 -45
  159. data/spec/lib/immutable/list/reverse_spec.rb +0 -34
  160. data/spec/lib/immutable/list/rotate_spec.rb +0 -36
  161. data/spec/lib/immutable/list/sample_spec.rb +0 -13
  162. data/spec/lib/immutable/list/select_spec.rb +0 -70
  163. data/spec/lib/immutable/list/size_spec.rb +0 -25
  164. data/spec/lib/immutable/list/slice_spec.rb +0 -229
  165. data/spec/lib/immutable/list/sorting_spec.rb +0 -46
  166. data/spec/lib/immutable/list/span_spec.rb +0 -76
  167. data/spec/lib/immutable/list/split_at_spec.rb +0 -43
  168. data/spec/lib/immutable/list/subsequences_spec.rb +0 -23
  169. data/spec/lib/immutable/list/sum_spec.rb +0 -23
  170. data/spec/lib/immutable/list/tail_spec.rb +0 -30
  171. data/spec/lib/immutable/list/tails_spec.rb +0 -28
  172. data/spec/lib/immutable/list/take_spec.rb +0 -30
  173. data/spec/lib/immutable/list/take_while_spec.rb +0 -46
  174. data/spec/lib/immutable/list/to_a_spec.rb +0 -39
  175. data/spec/lib/immutable/list/to_ary_spec.rb +0 -41
  176. data/spec/lib/immutable/list/to_list_spec.rb +0 -19
  177. data/spec/lib/immutable/list/to_set_spec.rb +0 -17
  178. data/spec/lib/immutable/list/transpose_spec.rb +0 -19
  179. data/spec/lib/immutable/list/union_spec.rb +0 -31
  180. data/spec/lib/immutable/list/uniq_spec.rb +0 -35
  181. data/spec/lib/immutable/list/zip_spec.rb +0 -23
  182. data/spec/lib/immutable/nested/construction_spec.rb +0 -101
  183. data/spec/lib/immutable/set/add_spec.rb +0 -77
  184. data/spec/lib/immutable/set/all_spec.rb +0 -51
  185. data/spec/lib/immutable/set/any_spec.rb +0 -51
  186. data/spec/lib/immutable/set/clear_spec.rb +0 -33
  187. data/spec/lib/immutable/set/compact_spec.rb +0 -30
  188. data/spec/lib/immutable/set/construction_spec.rb +0 -18
  189. data/spec/lib/immutable/set/copying_spec.rb +0 -13
  190. data/spec/lib/immutable/set/count_spec.rb +0 -36
  191. data/spec/lib/immutable/set/delete_spec.rb +0 -71
  192. data/spec/lib/immutable/set/difference_spec.rb +0 -49
  193. data/spec/lib/immutable/set/disjoint_spec.rb +0 -25
  194. data/spec/lib/immutable/set/each_spec.rb +0 -45
  195. data/spec/lib/immutable/set/empty_spec.rb +0 -44
  196. data/spec/lib/immutable/set/eqeq_spec.rb +0 -103
  197. data/spec/lib/immutable/set/eql_spec.rb +0 -109
  198. data/spec/lib/immutable/set/exclusion_spec.rb +0 -47
  199. data/spec/lib/immutable/set/find_spec.rb +0 -35
  200. data/spec/lib/immutable/set/first_spec.rb +0 -28
  201. data/spec/lib/immutable/set/flatten_spec.rb +0 -46
  202. data/spec/lib/immutable/set/grep_spec.rb +0 -57
  203. data/spec/lib/immutable/set/grep_v_spec.rb +0 -59
  204. data/spec/lib/immutable/set/group_by_spec.rb +0 -59
  205. data/spec/lib/immutable/set/hash_spec.rb +0 -22
  206. data/spec/lib/immutable/set/include_spec.rb +0 -60
  207. data/spec/lib/immutable/set/inspect_spec.rb +0 -47
  208. data/spec/lib/immutable/set/intersect_spec.rb +0 -25
  209. data/spec/lib/immutable/set/intersection_spec.rb +0 -52
  210. data/spec/lib/immutable/set/join_spec.rb +0 -64
  211. data/spec/lib/immutable/set/map_spec.rb +0 -59
  212. data/spec/lib/immutable/set/marshal_spec.rb +0 -28
  213. data/spec/lib/immutable/set/maximum_spec.rb +0 -36
  214. data/spec/lib/immutable/set/minimum_spec.rb +0 -36
  215. data/spec/lib/immutable/set/new_spec.rb +0 -53
  216. data/spec/lib/immutable/set/none_spec.rb +0 -47
  217. data/spec/lib/immutable/set/one_spec.rb +0 -47
  218. data/spec/lib/immutable/set/partition_spec.rb +0 -52
  219. data/spec/lib/immutable/set/product_spec.rb +0 -23
  220. data/spec/lib/immutable/set/reduce_spec.rb +0 -55
  221. data/spec/lib/immutable/set/reject_spec.rb +0 -50
  222. data/spec/lib/immutable/set/reverse_each_spec.rb +0 -38
  223. data/spec/lib/immutable/set/sample_spec.rb +0 -13
  224. data/spec/lib/immutable/set/select_spec.rb +0 -73
  225. data/spec/lib/immutable/set/size_spec.rb +0 -17
  226. data/spec/lib/immutable/set/sorting_spec.rb +0 -65
  227. data/spec/lib/immutable/set/subset_spec.rb +0 -51
  228. data/spec/lib/immutable/set/sum_spec.rb +0 -23
  229. data/spec/lib/immutable/set/superset_spec.rb +0 -51
  230. data/spec/lib/immutable/set/to_a_spec.rb +0 -30
  231. data/spec/lib/immutable/set/to_list_spec.rb +0 -35
  232. data/spec/lib/immutable/set/to_set_spec.rb +0 -19
  233. data/spec/lib/immutable/set/union_spec.rb +0 -63
  234. data/spec/lib/immutable/sorted_set/above_spec.rb +0 -51
  235. data/spec/lib/immutable/sorted_set/add_spec.rb +0 -62
  236. data/spec/lib/immutable/sorted_set/at_spec.rb +0 -24
  237. data/spec/lib/immutable/sorted_set/below_spec.rb +0 -51
  238. data/spec/lib/immutable/sorted_set/between_spec.rb +0 -51
  239. data/spec/lib/immutable/sorted_set/clear_spec.rb +0 -43
  240. data/spec/lib/immutable/sorted_set/copying_spec.rb +0 -20
  241. data/spec/lib/immutable/sorted_set/delete_at_spec.rb +0 -18
  242. data/spec/lib/immutable/sorted_set/delete_spec.rb +0 -89
  243. data/spec/lib/immutable/sorted_set/difference_spec.rb +0 -22
  244. data/spec/lib/immutable/sorted_set/disjoint_spec.rb +0 -25
  245. data/spec/lib/immutable/sorted_set/drop_spec.rb +0 -55
  246. data/spec/lib/immutable/sorted_set/drop_while_spec.rb +0 -34
  247. data/spec/lib/immutable/sorted_set/each_spec.rb +0 -28
  248. data/spec/lib/immutable/sorted_set/empty_spec.rb +0 -34
  249. data/spec/lib/immutable/sorted_set/eql_spec.rb +0 -120
  250. data/spec/lib/immutable/sorted_set/exclusion_spec.rb +0 -22
  251. data/spec/lib/immutable/sorted_set/fetch_spec.rb +0 -64
  252. data/spec/lib/immutable/sorted_set/find_index_spec.rb +0 -40
  253. data/spec/lib/immutable/sorted_set/first_spec.rb +0 -18
  254. data/spec/lib/immutable/sorted_set/from_spec.rb +0 -51
  255. data/spec/lib/immutable/sorted_set/group_by_spec.rb +0 -57
  256. data/spec/lib/immutable/sorted_set/include_spec.rb +0 -23
  257. data/spec/lib/immutable/sorted_set/inspect_spec.rb +0 -37
  258. data/spec/lib/immutable/sorted_set/intersect_spec.rb +0 -25
  259. data/spec/lib/immutable/sorted_set/intersection_spec.rb +0 -28
  260. data/spec/lib/immutable/sorted_set/last_spec.rb +0 -36
  261. data/spec/lib/immutable/sorted_set/map_spec.rb +0 -51
  262. data/spec/lib/immutable/sorted_set/marshal_spec.rb +0 -36
  263. data/spec/lib/immutable/sorted_set/maximum_spec.rb +0 -36
  264. data/spec/lib/immutable/sorted_set/minimum_spec.rb +0 -19
  265. data/spec/lib/immutable/sorted_set/new_spec.rb +0 -137
  266. data/spec/lib/immutable/sorted_set/reverse_each_spec.rb +0 -28
  267. data/spec/lib/immutable/sorted_set/sample_spec.rb +0 -13
  268. data/spec/lib/immutable/sorted_set/select_spec.rb +0 -61
  269. data/spec/lib/immutable/sorted_set/size_spec.rb +0 -17
  270. data/spec/lib/immutable/sorted_set/slice_spec.rb +0 -256
  271. data/spec/lib/immutable/sorted_set/sorting_spec.rb +0 -56
  272. data/spec/lib/immutable/sorted_set/subset_spec.rb +0 -47
  273. data/spec/lib/immutable/sorted_set/superset_spec.rb +0 -47
  274. data/spec/lib/immutable/sorted_set/take_spec.rb +0 -54
  275. data/spec/lib/immutable/sorted_set/take_while_spec.rb +0 -33
  276. data/spec/lib/immutable/sorted_set/to_set_spec.rb +0 -17
  277. data/spec/lib/immutable/sorted_set/union_spec.rb +0 -58
  278. data/spec/lib/immutable/sorted_set/up_to_spec.rb +0 -52
  279. data/spec/lib/immutable/sorted_set/util_spec.rb +0 -48
  280. data/spec/lib/immutable/sorted_set/values_at_spec.rb +0 -33
  281. data/spec/lib/immutable/vector/add_spec.rb +0 -67
  282. data/spec/lib/immutable/vector/any_spec.rb +0 -69
  283. data/spec/lib/immutable/vector/assoc_spec.rb +0 -45
  284. data/spec/lib/immutable/vector/bsearch_spec.rb +0 -65
  285. data/spec/lib/immutable/vector/clear_spec.rb +0 -33
  286. data/spec/lib/immutable/vector/combination_spec.rb +0 -81
  287. data/spec/lib/immutable/vector/compact_spec.rb +0 -29
  288. data/spec/lib/immutable/vector/compare_spec.rb +0 -31
  289. data/spec/lib/immutable/vector/concat_spec.rb +0 -34
  290. data/spec/lib/immutable/vector/copying_spec.rb +0 -20
  291. data/spec/lib/immutable/vector/count_spec.rb +0 -17
  292. data/spec/lib/immutable/vector/delete_at_spec.rb +0 -53
  293. data/spec/lib/immutable/vector/delete_spec.rb +0 -30
  294. data/spec/lib/immutable/vector/dig_spec.rb +0 -30
  295. data/spec/lib/immutable/vector/drop_spec.rb +0 -41
  296. data/spec/lib/immutable/vector/drop_while_spec.rb +0 -54
  297. data/spec/lib/immutable/vector/each_index_spec.rb +0 -40
  298. data/spec/lib/immutable/vector/each_spec.rb +0 -44
  299. data/spec/lib/immutable/vector/each_with_index_spec.rb +0 -39
  300. data/spec/lib/immutable/vector/empty_spec.rb +0 -41
  301. data/spec/lib/immutable/vector/eql_spec.rb +0 -76
  302. data/spec/lib/immutable/vector/fetch_spec.rb +0 -64
  303. data/spec/lib/immutable/vector/fill_spec.rb +0 -88
  304. data/spec/lib/immutable/vector/first_spec.rb +0 -18
  305. data/spec/lib/immutable/vector/flat_map_spec.rb +0 -50
  306. data/spec/lib/immutable/vector/flatten_spec.rb +0 -58
  307. data/spec/lib/immutable/vector/get_spec.rb +0 -74
  308. data/spec/lib/immutable/vector/group_by_spec.rb +0 -57
  309. data/spec/lib/immutable/vector/include_spec.rb +0 -30
  310. data/spec/lib/immutable/vector/insert_spec.rb +0 -68
  311. data/spec/lib/immutable/vector/inspect_spec.rb +0 -49
  312. data/spec/lib/immutable/vector/join_spec.rb +0 -58
  313. data/spec/lib/immutable/vector/last_spec.rb +0 -45
  314. data/spec/lib/immutable/vector/length_spec.rb +0 -45
  315. data/spec/lib/immutable/vector/ltlt_spec.rb +0 -65
  316. data/spec/lib/immutable/vector/map_spec.rb +0 -51
  317. data/spec/lib/immutable/vector/marshal_spec.rb +0 -31
  318. data/spec/lib/immutable/vector/maximum_spec.rb +0 -33
  319. data/spec/lib/immutable/vector/minimum_spec.rb +0 -33
  320. data/spec/lib/immutable/vector/multiply_spec.rb +0 -47
  321. data/spec/lib/immutable/vector/new_spec.rb +0 -50
  322. data/spec/lib/immutable/vector/partition_spec.rb +0 -52
  323. data/spec/lib/immutable/vector/permutation_spec.rb +0 -91
  324. data/spec/lib/immutable/vector/pop_spec.rb +0 -26
  325. data/spec/lib/immutable/vector/product_spec.rb +0 -70
  326. data/spec/lib/immutable/vector/reduce_spec.rb +0 -55
  327. data/spec/lib/immutable/vector/reject_spec.rb +0 -43
  328. data/spec/lib/immutable/vector/repeated_combination_spec.rb +0 -77
  329. data/spec/lib/immutable/vector/repeated_permutation_spec.rb +0 -93
  330. data/spec/lib/immutable/vector/reverse_each_spec.rb +0 -31
  331. data/spec/lib/immutable/vector/reverse_spec.rb +0 -21
  332. data/spec/lib/immutable/vector/rindex_spec.rb +0 -36
  333. data/spec/lib/immutable/vector/rotate_spec.rb +0 -73
  334. data/spec/lib/immutable/vector/sample_spec.rb +0 -13
  335. data/spec/lib/immutable/vector/select_spec.rb +0 -63
  336. data/spec/lib/immutable/vector/set_spec.rb +0 -174
  337. data/spec/lib/immutable/vector/shift_spec.rb +0 -27
  338. data/spec/lib/immutable/vector/shuffle_spec.rb +0 -43
  339. data/spec/lib/immutable/vector/slice_spec.rb +0 -240
  340. data/spec/lib/immutable/vector/sorting_spec.rb +0 -56
  341. data/spec/lib/immutable/vector/sum_spec.rb +0 -17
  342. data/spec/lib/immutable/vector/take_spec.rb +0 -42
  343. data/spec/lib/immutable/vector/take_while_spec.rb +0 -34
  344. data/spec/lib/immutable/vector/to_a_spec.rb +0 -41
  345. data/spec/lib/immutable/vector/to_ary_spec.rb +0 -34
  346. data/spec/lib/immutable/vector/to_list_spec.rb +0 -30
  347. data/spec/lib/immutable/vector/to_set_spec.rb +0 -21
  348. data/spec/lib/immutable/vector/transpose_spec.rb +0 -48
  349. data/spec/lib/immutable/vector/uniq_spec.rb +0 -76
  350. data/spec/lib/immutable/vector/unshift_spec.rb +0 -28
  351. data/spec/lib/immutable/vector/update_in_spec.rb +0 -82
  352. data/spec/lib/immutable/vector/values_at_spec.rb +0 -33
  353. data/spec/lib/immutable/vector/zip_spec.rb +0 -57
  354. data/spec/lib/load_spec.rb +0 -42
  355. data/spec/spec_helper.rb +0 -96
@@ -1,57 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- [:select, :find_all, :keep_if].each do |method|
5
- describe "##{method}" do
6
- let(:original) { H["A" => "aye", "B" => "bee", "C" => "see"] }
7
-
8
- context "when everything matches" do
9
- it "returns self" do
10
- original.send(method) { |key, value| true }.should equal(original)
11
- end
12
- end
13
-
14
- context "when only some things match" do
15
- context "with a block" do
16
- let(:result) { original.send(method) { |key, value| key == "A" && value == "aye" }}
17
-
18
- it "preserves the original" do
19
- original.should eql(H["A" => "aye", "B" => "bee", "C" => "see"])
20
- end
21
-
22
- it "returns a set with the matching values" do
23
- result.should eql(H["A" => "aye"])
24
- end
25
- end
26
-
27
- it "yields entries as [key, value] pairs" do
28
- original.send(method) do |e|
29
- e.should be_kind_of(Array)
30
- ["A", "B", "C"].include?(e[0]).should == true
31
- ["aye", "bee", "see"].include?(e[1]).should == true
32
- end
33
- end
34
-
35
- context "with no block" do
36
- it "returns an Enumerator" do
37
- original.send(method).class.should be(Enumerator)
38
- original.send(method).to_a.sort.should == [['A', 'aye'], ['B', 'bee'], ['C', 'see']]
39
- end
40
- end
41
- end
42
-
43
- it "works on a large hash, with many combinations of input" do
44
- keys = (1..1000).to_a
45
- original = H.new(keys.zip(2..1001))
46
- 25.times do
47
- threshold = rand(1000)
48
- result = original.send(method) { |k,v| k <= threshold }
49
- result.size.should == threshold
50
- result.each_key { |k| k.should <= threshold }
51
- (threshold+1).upto(1000) { |k| result.key?(k).should == false }
52
- end
53
- original.should eql(H.new(keys.zip(2..1001))) # shouldn't have changed
54
- end
55
- end
56
- end
57
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- [:size, :length].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], 0],
8
- [["A" => "aye"], 1],
9
- [["A" => "bee", "B" => "bee", "C" => "see"], 3],
10
- ].each do |values, result|
11
-
12
- it "returns #{result} for #{values.inspect}" do
13
- H[*values].send(method).should == result
14
- end
15
- end
16
-
17
- lots = (1..10_842).to_a
18
- srand 89_533_474
19
- random_things = (lots + lots).sort_by { |x|rand }
20
-
21
- it "has the correct size after adding lots of things with colliding keys and such" do
22
- h = H.empty
23
- random_things.each do |thing|
24
- h = h.put(thing, thing * 2)
25
- end
26
- h.size.should == 10_842
27
- end
28
-
29
- random_actions = (lots.map { |x|[:add, x] } + lots.map { |x|[:add, x] } + lots.map { |x|[:remove, x] }).sort_by { |x|rand }
30
- ending_size = random_actions.reduce({}) do |h, (act, ob)|
31
- if act == :add
32
- h[ob] = 1
33
- else
34
- h.delete(ob)
35
- end
36
- h
37
- end.size
38
- it "has the correct size after lots of addings and removings" do
39
- h = H.empty
40
- random_actions.each do |(act, ob)|
41
- if act == :add
42
- h = h.put(ob, ob * 3)
43
- else
44
- h = h.delete(ob)
45
- end
46
- end
47
- h.size.should == ending_size
48
- end
49
- end
50
- end
51
- end
@@ -1,44 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- let(:hash) { H.new("A" => "aye", "B" => "bee", "C" => "see", nil => "NIL") }
5
-
6
- describe "#slice" do
7
- let(:slice) { hash.slice(*values) }
8
-
9
- context "with all keys present in the Hash" do
10
- let(:values) { ["B", nil] }
11
-
12
- it "returns the sliced values" do
13
- expect(slice).to eq(described_class.new("B" => "bee", nil => "NIL"))
14
- end
15
-
16
- it "doesn't modify the original Hash" do
17
- slice
18
- hash.should eql(H.new("A" => "aye", "B" => "bee", "C" => "see", nil => "NIL"))
19
- end
20
- end
21
-
22
- context "with keys aren't present in the Hash" do
23
- let(:values) { ["B", "A", 3] }
24
-
25
- it "returns the sliced values of the matching keys" do
26
- expect(slice).to eq(described_class.new("A" => "aye", "B" => "bee"))
27
- end
28
-
29
- it "doesn't modify the original Hash" do
30
- slice
31
- hash.should eql(H.new("A" => "aye", "B" => "bee", "C" => "see", nil => "NIL"))
32
- end
33
- end
34
-
35
- context "on a Hash with a default block" do
36
- let(:hash) { H.new('A' => 'aye', 'B' => 'bee') { 'nothing' }}
37
- let(:values) { ["B", nil] }
38
-
39
- it "maintains the default block" do
40
- expect(slice['C']).to eq('nothing')
41
- end
42
- end
43
- end
44
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- let(:hash) { H[a: 3, b: 2, c: 1] }
5
-
6
- describe "#sort" do
7
- it "returns a Vector of sorted key/val pairs" do
8
- hash.sort.should eql(V[[:a, 3], [:b, 2], [:c, 1]])
9
- end
10
-
11
- it "works on large hashes" do
12
- array = (1..1000).map { |n| [n,n] }
13
- H.new(array.shuffle).sort.should eql(V.new(array))
14
- end
15
-
16
- it "uses block as comparator to sort if passed a block" do
17
- hash.sort { |a,b| b <=> a }.should eql(V[[:c, 1], [:b, 2], [:a, 3]])
18
- end
19
- end
20
-
21
- describe "#sort_by" do
22
- it "returns a Vector of key/val pairs, sorted using the block as a key function" do
23
- hash.sort_by { |k,v| v }.should eql(V[[:c, 1], [:b, 2], [:a, 3]])
24
- end
25
- end
26
- end
@@ -1,75 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#store" do
5
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
6
-
7
- context "with a unique key" do
8
- let(:result) { hash.store("D", "dee") }
9
-
10
- it "preserves the original" do
11
- result
12
- hash.should eql(H["A" => "aye", "B" => "bee", "C" => "see"])
13
- end
14
-
15
- it "returns a copy with the superset of key/value pairs" do
16
- result.should eql(H["A" => "aye", "B" => "bee", "C" => "see", "D" => "dee"])
17
- end
18
- end
19
-
20
- context "with a duplicate key" do
21
- let(:result) { hash.store("C", "sea") }
22
-
23
- it "preserves the original" do
24
- result
25
- hash.should eql(H["A" => "aye", "B" => "bee", "C" => "see"])
26
- end
27
-
28
- it "returns a copy with the superset of key/value pairs" do
29
- result.should eql(H["A" => "aye", "B" => "bee", "C" => "sea"])
30
- end
31
- end
32
-
33
- context "with duplicate key and identical value" do
34
- let(:hash) { H["X" => 1, "Y" => 2] }
35
- let(:result) { hash.store("X", 1) }
36
-
37
- it "returns the original hash unmodified" do
38
- result.should be(hash)
39
- end
40
-
41
- context "with big hash (force nested tries)" do
42
- let(:keys) { (0..99).map(&:to_s) }
43
- let(:values) { (100..199).to_a }
44
- let(:hash) { H[keys.zip(values)] }
45
-
46
- it "returns the original hash unmodified for all changes" do
47
- keys.each_with_index do |key, index|
48
- result = hash.store(key, values[index])
49
- result.should be(hash)
50
- end
51
- end
52
- end
53
- end
54
-
55
- context "with unequal keys which hash to the same value" do
56
- let(:hash) { H[DeterministicHash.new('a', 1) => 'aye'] }
57
-
58
- it "stores and can retrieve both" do
59
- result = hash.store(DeterministicHash.new('b', 1), 'bee')
60
- result.get(DeterministicHash.new('a', 1)).should eql('aye')
61
- result.get(DeterministicHash.new('b', 1)).should eql('bee')
62
- end
63
- end
64
-
65
- context "when a String is inserted as key and then mutated" do
66
- it "is not affected" do
67
- string = "a string!"
68
- hash = H.empty.store(string, 'a value!')
69
- string.upcase!
70
- hash['a string!'].should == 'a value!'
71
- hash['A STRING!'].should be_nil
72
- end
73
- end
74
- end
75
- end
@@ -1,42 +0,0 @@
1
- require "spec_helper"
2
- require "immutable/hash"
3
-
4
- describe Immutable::Hash do
5
- describe "#<=" do
6
- [
7
- [{}, {}, true],
8
- [{"A" => 1}, {}, false],
9
- [{}, {"A" => 1}, true],
10
- [{"A" => 1}, {"A" => 1}, true],
11
- [{"A" => 1}, {"A" => 2}, false],
12
- [{"B" => 2}, {"A" => 1, "B" => 2, "C" => 3}, true],
13
- [{"A" => 1, "B" => 2, "C" => 3}, {"B" => 2}, false],
14
- [{"B" => 0}, {"A" => 1, "B" => 2, "C" => 3}, false],
15
- ].each do |a, b, expected|
16
- describe "for #{a.inspect} and #{b.inspect}" do
17
- it "returns #{expected}" do
18
- expect(H[a] <= H[b]).to eq(expected)
19
- end
20
- end
21
- end
22
- end
23
-
24
- describe "#<" do
25
- [
26
- [{}, {}, false],
27
- [{"A" => 1}, {}, false],
28
- [{}, {"A" => 1}, true],
29
- [{"A" => 1}, {"A" => 1}, false],
30
- [{"A" => 1}, {"A" => 2}, false],
31
- [{"B" => 2}, {"A" => 1, "B" => 2, "C" => 3}, true],
32
- [{"A" => 1, "B" => 2, "C" => 3}, {"B" => 2}, false],
33
- [{"B" => 0}, {"A" => 1, "B" => 2, "C" => 3}, false],
34
- ].each do |a, b, expected|
35
- describe "for #{a.inspect} and #{b.inspect}" do
36
- it "returns #{expected}" do
37
- expect(H[a] < H[b]).to eq(expected)
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,42 +0,0 @@
1
- require "spec_helper"
2
- require "immutable/hash"
3
-
4
- describe Immutable::Hash do
5
- describe "#>=" do
6
- [
7
- [{}, {}, true],
8
- [{"A" => 1}, {}, true],
9
- [{}, {"A" => 1}, false],
10
- [{"A" => 1}, {"A" => 1}, true],
11
- [{"A" => 1}, {"A" => 2}, false],
12
- [{"A" => 1, "B" => 2, "C" => 3}, {"B" => 2}, true],
13
- [{"B" => 2}, {"A" => 1, "B" => 2, "C" => 3}, false],
14
- [{"A" => 1, "B" => 2, "C" => 3}, {"B" => 0}, false],
15
- ].each do |a, b, expected|
16
- describe "for #{a.inspect} and #{b.inspect}" do
17
- it "returns #{expected}" do
18
- expect(H[a] >= H[b]).to eq(expected)
19
- end
20
- end
21
- end
22
- end
23
-
24
- describe "#>" do
25
- [
26
- [{}, {}, false],
27
- [{"A" => 1}, {}, true],
28
- [{}, {"A" => 1}, false],
29
- [{"A" => 1}, {"A" => 1}, false],
30
- [{"A" => 1}, {"A" => 2}, false],
31
- [{"A" => 1, "B" => 2, "C" => 3}, {"B" => 2}, true],
32
- [{"B" => 2}, {"A" => 1, "B" => 2, "C" => 3}, false],
33
- [{"A" => 1, "B" => 2, "C" => 3}, {"B" => 0}, false],
34
- ].each do |a, b, expected|
35
- describe "for #{a.inspect} and #{b.inspect}" do
36
- it "returns #{expected}" do
37
- expect(H[a] > H[b]).to eq(expected)
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
5
-
6
- describe "#take" do
7
- it "returns the first N key/val pairs from hash" do
8
- hash.take(0).should == []
9
- [[['A', 'aye']], [['B', 'bee']], [['C', 'see']]].include?(hash.take(1)).should == true
10
- [['A', 'aye'], ['B', 'bee'], ['C', 'see']].combination(2).include?(hash.take(2).sort).should == true
11
- hash.take(3).sort.should == [['A', 'aye'], ['B', 'bee'], ['C', 'see']]
12
- hash.take(4).sort.should == [['A', 'aye'], ['B', 'bee'], ['C', 'see']]
13
- end
14
- end
15
-
16
- describe "#take_while" do
17
- it "passes elements to the block until the block returns nil/false" do
18
- passed = nil
19
- hash.take_while { |k,v| passed = k; false }
20
- ['A', 'B', 'C'].include?(passed).should == true
21
- end
22
-
23
- it "returns an array of all elements before the one which returned nil/false" do
24
- count = 0
25
- result = hash.take_while { count += 1; count < 3 }
26
- [['A', 'aye'], ['B', 'bee'], ['C', 'see']].combination(2).include?(result.sort).should == true
27
- end
28
-
29
- it "passes all elements if the block never returns nil/false" do
30
- passed = []
31
- hash.take_while { |k,v| passed << [k, v]; true }.should == hash.to_a
32
- passed.sort.should == [['A', 'aye'], ['B', 'bee'], ['C', 'see']]
33
- end
34
- end
35
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#to_a" do
5
- it "returns an Array of [key, value] pairs in same order as #each" do
6
- hash = H[:a => 1, 1 => :a, 3 => :b, :b => 5]
7
- pairs = []
8
- hash.each_pair { |k,v| pairs << [k,v] }
9
- hash.to_a.should be_kind_of(Array)
10
- hash.to_a.should == pairs
11
- end
12
- end
13
- end
@@ -1,21 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- [:to_hash, :to_h].each do |method|
5
- describe "##{method}" do
6
- it "converts an empty Immutable::Hash to an empty Ruby Hash" do
7
- H.empty.send(method).should eql({})
8
- end
9
-
10
- it "converts a non-empty Immutable::Hash to a Hash with the same keys and values" do
11
- H[a: 1, b: 2].send(method).should eql({a: 1, b: 2})
12
- end
13
-
14
- it "doesn't modify the receiver" do
15
- hash = H[a: 1, b: 2]
16
- hash.send(method)
17
- hash.should eql(H[a: 1, b: 2])
18
- end
19
- end
20
- end
21
- end
@@ -1,39 +0,0 @@
1
- require "spec_helper"
2
- require "immutable/hash"
3
-
4
- describe Immutable::Hash do
5
- describe "#to_proc" do
6
- context "on Hash without default proc" do
7
- let(:hash) { H.new("A" => "aye") }
8
-
9
- it "returns a Proc instance" do
10
- hash.to_proc.should be_kind_of(Proc)
11
- end
12
-
13
- it "returns a Proc that returns the value of an existing key" do
14
- hash.to_proc.call("A").should == "aye"
15
- end
16
-
17
- it "returns a Proc that returns nil for a missing key" do
18
- hash.to_proc.call("B").should be_nil
19
- end
20
- end
21
-
22
- context "on Hash with a default proc" do
23
- let(:hash) { H.new("A" => "aye") { |key| "#{key}-VAL" } }
24
-
25
- it "returns a Proc instance" do
26
- hash.to_proc.should be_kind_of(Proc)
27
- end
28
-
29
- it "returns a Proc that returns the value of an existing key" do
30
- hash.to_proc.call("A").should == "aye"
31
- end
32
-
33
- it "returns a Proc that returns the result of the hash's default proc for a missing key" do
34
- hash.to_proc.call("B").should == "B-VAL"
35
- hash.should == H.new("A" => "aye")
36
- end
37
- end
38
- end
39
- end
@@ -1,79 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#update_in" do
5
- let(:hash) {
6
- Immutable::Hash[
7
- "A" => "aye",
8
- "B" => Immutable::Hash["C" => "see", "D" => Immutable::Hash["E" => "eee"]],
9
- "F" => Immutable::Vector["G", Immutable::Hash["H" => "eitch"], "I"]
10
- ]
11
- }
12
-
13
- context "with one level on existing key" do
14
- it "passes the value to the block" do
15
- hash.update_in("A") { |value| value.should == "aye" }
16
- end
17
-
18
- it "replaces the value with the result of the block" do
19
- result = hash.update_in("A") { |value| "FLIBBLE" }
20
- result.get("A").should == "FLIBBLE"
21
- end
22
-
23
- it "should preserve the original" do
24
- result = hash.update_in("A") { |value| "FLIBBLE" }
25
- hash.get("A").should == "aye"
26
- end
27
- end
28
-
29
- context "with multi-level on existing keys" do
30
- it "passes the value to the block" do
31
- hash.update_in("B", "D", "E") { |value| value.should == "eee" }
32
- end
33
-
34
- it "replaces the value with the result of the block" do
35
- result = hash.update_in("B", "D", "E") { |value| "FLIBBLE" }
36
- result["B"]["D"]["E"].should == "FLIBBLE"
37
- end
38
-
39
- it "should preserve the original" do
40
- result = hash.update_in("B", "D", "E") { |value| "FLIBBLE" }
41
- hash["B"]["D"]["E"].should == "eee"
42
- end
43
- end
44
-
45
- context "with multi-level creating sub-hashes when keys don't exist" do
46
- it "passes nil to the block" do
47
- hash.update_in("B", "X", "Y") { |value| value.should be_nil }
48
- end
49
-
50
- it "creates subhashes on the way to set the value" do
51
- result = hash.update_in("B", "X", "Y") { |value| "NEWVALUE" }
52
- result["B"]["X"]["Y"].should == "NEWVALUE"
53
- result["B"]["D"]["E"].should == "eee"
54
- end
55
- end
56
-
57
- context "with multi-level including vector with existing keys" do
58
- it "passes the value to the block" do
59
- hash.update_in("F", 1, "H") { |value| value.should == "eitch" }
60
- end
61
-
62
- it "replaces the value with the result of the block" do
63
- result = hash.update_in("F", 1, "H") { |value| "FLIBBLE" }
64
- result["F"][1]["H"].should == "FLIBBLE"
65
- end
66
-
67
- it "should preserve the original" do
68
- result = hash.update_in("F", 1, "H") { |value| "FLIBBLE" }
69
- hash["F"][1]["H"].should == "eitch"
70
- end
71
- end
72
-
73
- context "with empty key_path" do
74
- it "raises ArguemntError" do
75
- expect { hash.update_in() { |v| 42 } }.to raise_error(ArgumentError)
76
- end
77
- end
78
- end
79
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#values_at" do
5
- context "on Hash without default proc" do
6
- let(:hash) { H[:a => 9, :b => 'a', :c => -10, :d => nil] }
7
-
8
- it "returns an empty vector when no keys are given" do
9
- hash.values_at.should be_kind_of(Immutable::Vector)
10
- hash.values_at.should eql(V.empty)
11
- end
12
-
13
- it "returns a vector of values for the given keys" do
14
- hash.values_at(:a, :d, :b).should be_kind_of(Immutable::Vector)
15
- hash.values_at(:a, :d, :b).should eql(V[9, nil, 'a'])
16
- end
17
-
18
- it "fills nil when keys are missing" do
19
- hash.values_at(:x, :a, :y, :b).should be_kind_of(Immutable::Vector)
20
- hash.values_at(:x, :a, :y, :b).should eql(V[nil, 9, nil, 'a'])
21
- end
22
- end
23
-
24
- context "on Hash with default proc" do
25
- let(:hash) { Immutable::Hash.new(:a => 9) { |key| "#{key}-VAL" } }
26
-
27
- it "fills the result of the default proc when keys are missing" do
28
- hash.values_at(:x, :a, :y).should be_kind_of(Immutable::Vector)
29
- hash.values_at(:x, :a, :y).should eql(V['x-VAL', 9, 'y-VAL'])
30
- end
31
- end
32
- end
33
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#values" do
5
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
6
- let(:result) { hash.values }
7
-
8
- it "returns the keys as a Vector" do
9
- result.should be_a Immutable::Vector
10
- result.to_a.sort.should == %w(aye bee see)
11
- end
12
-
13
- context "with duplicates" do
14
- let(:hash) { H[:A => 15, :B => 19, :C => 15] }
15
- let(:result) { hash.values }
16
-
17
- it "returns the keys as a Vector" do
18
- result.class.should be(Immutable::Vector)
19
- result.to_a.sort.should == [15, 15, 19]
20
- end
21
- end
22
- end
23
- end
@@ -1,25 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::List do
4
- describe "#add" do
5
- [
6
- [[], "A", ["A"]],
7
- [["A"], "B", %w[B A]],
8
- [["A"], "A", %w[A A]],
9
- [%w[A B C], "D", %w[D A B C]],
10
- ].each do |values, new_value, expected|
11
- context "on #{values.inspect} with #{new_value.inspect}" do
12
- let(:list) { L[*values] }
13
-
14
- it "preserves the original" do
15
- list.add(new_value)
16
- list.should eql(L[*values])
17
- end
18
-
19
- it "returns #{expected.inspect}" do
20
- list.add(new_value).should eql(L[*expected])
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,57 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::List do
4
- describe "#all?" do
5
- context "on a really big list" do
6
- let(:list) { BigList }
7
-
8
- it "doesn't run out of stack" do
9
- -> { list.all? }.should_not raise_error
10
- end
11
- end
12
-
13
- context "when empty" do
14
- it "with a block returns true" do
15
- L.empty.all? {}.should == true
16
- end
17
-
18
- it "with no block returns true" do
19
- L.empty.all?.should == true
20
- end
21
- end
22
-
23
- context "when not empty" do
24
- context "with a block" do
25
- let(:list) { L["A", "B", "C"] }
26
-
27
- context "if the block always returns true" do
28
- it "returns true" do
29
- list.all? { |item| true }.should == true
30
- end
31
- end
32
-
33
- context "if the block ever returns false" do
34
- it "returns false" do
35
- list.all? { |item| item == "D" }.should == false
36
- end
37
- end
38
- end
39
-
40
- context "with no block" do
41
- context "if all values are truthy" do
42
- it "returns true" do
43
- L[true, "A"].all?.should == true
44
- end
45
- end
46
-
47
- [nil, false].each do |value|
48
- context "if any value is #{value.inspect}" do
49
- it "returns false" do
50
- L[value, true, "A"].all?.should == false
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end