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,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- [:to_a, :entries].each do |method|
5
- describe "##{method}" do
6
- [
7
- [],
8
- ["A"],
9
- %w[A B C],
10
- ].each do |values|
11
- context "on #{values.inspect}" do
12
- it "returns #{values.inspect}" do
13
- D[*values].send(method).should == values
14
- end
15
-
16
- it "returns a mutable array" do
17
- result = D[*values].send(method)
18
- expect(result.last).to_not eq("The End")
19
- result << "The End"
20
- result.last.should == "The End"
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- let(:deque) { D["A", "B", "C", "D"] }
5
-
6
- describe "#to_ary" do
7
- context "enables implicit conversion to" do
8
- it "block parameters" do
9
- def func(&block)
10
- yield(deque)
11
- end
12
-
13
- func do |a, b, *c|
14
- expect(a).to eq("A")
15
- expect(b).to eq("B")
16
- expect(c).to eq(%w[C D])
17
- end
18
- end
19
-
20
- it "method arguments" do
21
- def func(a, b, *c)
22
- expect(a).to eq("A")
23
- expect(b).to eq("B")
24
- expect(c).to eq(%w[C D])
25
- end
26
- func(*deque)
27
- end
28
-
29
- it "works with splat" do
30
- array = *deque
31
- expect(array).to eq(%w[A B C D])
32
- end
33
- end
34
- end
35
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#to_list" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- context "on #{values.inspect}" do
11
- it "returns a list containing #{values.inspect}" do
12
- D[*values].to_list.should eql(L[*values])
13
- end
14
- end
15
- end
16
-
17
- context "after dedequeing an item from #{%w[A B C].inspect}" do
18
- it "returns a list containing #{%w[B C].inspect}" do
19
- list = D["A", "B", "C"].dequeue.to_list
20
- list.should eql(L["B", "C"])
21
- end
22
- end
23
- end
24
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#unshift" 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(:deque) { D[*values] }
13
-
14
- it "preserves the original" do
15
- deque.unshift(new_value)
16
- deque.should eql(D[*values])
17
- end
18
-
19
- it "returns #{expected.inspect}" do
20
- deque.unshift(new_value).should eql(D[*expected])
21
- end
22
-
23
-
24
- it "returns a frozen instance" do
25
- deque.unshift(new_value).should be_frozen
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,53 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- let(:hash) { H[values] }
5
-
6
- describe "#all?" do
7
- context "when empty" do
8
- let(:values) { H.new }
9
-
10
- context "without a block" do
11
- it "returns true" do
12
- hash.all?.should == true
13
- end
14
- end
15
-
16
- context "with a block" do
17
- it "returns true" do
18
- hash.all? { false }.should == true
19
- end
20
- end
21
- end
22
-
23
- context "when not empty" do
24
- let(:values) { { "A" => 1, "B" => 2, "C" => 3 } }
25
-
26
- context "without a block" do
27
- it "returns true" do
28
- hash.all?.should == true
29
- end
30
- end
31
-
32
- context "with a block" do
33
- it "returns true if the block always returns true" do
34
- hash.all? { true }.should == true
35
- end
36
-
37
- it "returns false if the block ever returns false" do
38
- hash.all? { |k,v| k != 'C' }.should == false
39
- end
40
-
41
- it "propagates an exception from the block" do
42
- -> { hash.all? { |k,v| raise "help" } }.should raise_error(RuntimeError)
43
- end
44
-
45
- it "stops iterating as soon as the block returns false" do
46
- yielded = []
47
- hash.all? { |k,v| yielded << k; false }
48
- yielded.size.should == 1
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,53 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#any?" do
5
- context "when empty" do
6
- it "with a block returns false" do
7
- H.empty.any? {}.should == false
8
- end
9
-
10
- it "with no block returns false" do
11
- H.empty.any?.should == false
12
- end
13
- end
14
-
15
- context "when not empty" do
16
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see", nil => "NIL"] }
17
-
18
- context "with a block" do
19
- [
20
- %w[A aye],
21
- %w[B bee],
22
- %w[C see],
23
- [nil, "NIL"],
24
- ].each do |pair|
25
-
26
- it "returns true if the block ever returns true (#{pair.inspect})" do
27
- hash.any? { |key, value| key == pair.first && value == pair.last }.should == true
28
- end
29
-
30
- it "returns false if the block always returns false" do
31
- hash.any? { |key, value| key == "D" && value == "dee" }.should == false
32
- end
33
- end
34
-
35
- it "propagates exceptions raised in the block" do
36
- -> { hash.any? { |k,v| raise "help" } }.should raise_error(RuntimeError)
37
- end
38
-
39
- it "stops iterating as soon as the block returns true" do
40
- yielded = []
41
- hash.any? { |k,v| yielded << k; true }
42
- yielded.size.should == 1
43
- end
44
- end
45
-
46
- context "with no block" do
47
- it "returns true" do
48
- hash.any?.should == true
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,51 +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 "#assoc" do
7
- it "searches for a key/val pair with a given key" do
8
- hash.assoc(:a).should == [:a, 3]
9
- hash.assoc(:b).should == [:b, 2]
10
- hash.assoc(:c).should == [:c, 1]
11
- end
12
-
13
- it "returns nil if a matching key is not found" do
14
- hash.assoc(:d).should be_nil
15
- hash.assoc(nil).should be_nil
16
- hash.assoc(0).should be_nil
17
- end
18
-
19
- it "returns nil even if there is a default" do
20
- H.new(a: 1, b: 2) { fail }.assoc(:c).should be_nil
21
- end
22
-
23
- it "uses #== to compare keys with provided object" do
24
- hash.assoc(EqualNotEql.new).should_not be_nil
25
- hash.assoc(EqlNotEqual.new).should be_nil
26
- end
27
- end
28
-
29
- describe "#rassoc" do
30
- it "searches for a key/val pair with a given value" do
31
- hash.rassoc(1).should == [:c, 1]
32
- hash.rassoc(2).should == [:b, 2]
33
- hash.rassoc(3).should == [:a, 3]
34
- end
35
-
36
- it "returns nil if a matching value is not found" do
37
- hash.rassoc(0).should be_nil
38
- hash.rassoc(4).should be_nil
39
- hash.rassoc(nil).should be_nil
40
- end
41
-
42
- it "returns nil even if there is a default" do
43
- H.new(a: 1, b: 2) { fail }.rassoc(3).should be_nil
44
- end
45
-
46
- it "uses #== to compare values with provided object" do
47
- hash.rassoc(EqualNotEql.new).should_not be_nil
48
- hash.rassoc(EqlNotEqual.new).should be_nil
49
- end
50
- end
51
- end
@@ -1,42 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#clear" do
5
- [
6
- [],
7
- ["A" => "aye"],
8
- ["A" => "aye", "B" => "bee", "C" => "see"],
9
- ].each do |values|
10
- context "on #{values}" do
11
- let(:original) { H[*values] }
12
- let(:result) { original.clear }
13
-
14
- it "preserves the original" do
15
- result
16
- original.should eql(H[*values])
17
- end
18
-
19
- it "returns an empty hash" do
20
- result.should equal(H.empty)
21
- result.should be_empty
22
- end
23
- end
24
- end
25
-
26
- it "maintains the default Proc, if there is one" do
27
- hash = H.new(a: 1) { 1 }
28
- hash.clear[:b].should == 1
29
- hash.clear[:c].should == 1
30
- hash.clear.default_proc.should_not be_nil
31
- end
32
-
33
- context "on a subclass" do
34
- it "returns an empty instance of the subclass" do
35
- subclass = Class.new(Immutable::Hash)
36
- instance = subclass.new(a: 1, b: 2)
37
- instance.clear.class.should be(subclass)
38
- instance.clear.should be_empty
39
- end
40
- end
41
- end
42
- end
@@ -1,38 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe ".hash" do
5
- context "with nothing" do
6
- it "returns the canonical empty hash" do
7
- H.empty.should be_empty
8
- H.empty.should equal(Immutable::EmptyHash)
9
- end
10
- end
11
-
12
- context "with an implicit hash" do
13
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
14
-
15
- it "is equivalent to repeatedly using #put" do
16
- hash.should eql(H.empty.put("A", "aye").put("B", "bee").put("C", "see"))
17
- hash.size.should == 3
18
- end
19
- end
20
-
21
- context "with an array of pairs" do
22
- let(:hash) { H[[[:a, 1], [:b, 2]]] }
23
-
24
- it "initializes a new Hash" do
25
- hash.should eql(H[a: 1, b: 2])
26
- end
27
- end
28
-
29
- context "with an Immutable::Hash" do
30
- let(:hash) { H[a: 1, b: 2] }
31
- let(:other) { H[hash] }
32
-
33
- it "initializes an equivalent Hash" do
34
- hash.should eql(other)
35
- end
36
- end
37
- end
38
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
5
-
6
- [:dup, :clone].each do |method|
7
- describe "##{method}" do
8
- it "returns self" do
9
- hash.send(method).should equal(hash)
10
- end
11
- end
12
- end
13
- end
@@ -1,72 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#default_proc" do
5
- let(:hash) { H.new(1 => 2, 2 => 4) { |k| k * 2 } }
6
-
7
- it "returns the default block given when the Hash was created" do
8
- hash.default_proc.class.should be(Proc)
9
- hash.default_proc.call(3).should == 6
10
- end
11
-
12
- it "returns nil if no default block was given" do
13
- H.empty.default_proc.should be_nil
14
- end
15
-
16
- context "after a key/val pair are inserted" do
17
- it "doesn't change" do
18
- other = hash.put(3, 6)
19
- other.default_proc.should be(hash.default_proc)
20
- other.default_proc.call(4).should == 8
21
- end
22
- end
23
-
24
- context "after all key/val pairs are filtered out" do
25
- it "doesn't change" do
26
- other = hash.reject { true }
27
- other.default_proc.should be(hash.default_proc)
28
- other.default_proc.call(4).should == 8
29
- end
30
- end
31
-
32
- context "after Hash is inverted" do
33
- it "doesn't change" do
34
- other = hash.invert
35
- other.default_proc.should be(hash.default_proc)
36
- other.default_proc.call(4).should == 8
37
- end
38
- end
39
-
40
- context "when a slice is taken" do
41
- it "doesn't change" do
42
- other = hash.slice(1)
43
- other.default_proc.should be(hash.default_proc)
44
- other.default_proc.call(5).should == 10
45
- end
46
- end
47
-
48
- context "when keys are removed with #except" do
49
- it "doesn't change" do
50
- other = hash.except(1, 2)
51
- other.default_proc.should be(hash.default_proc)
52
- other.default_proc.call(5).should == 10
53
- end
54
- end
55
-
56
- context "when Hash is mapped" do
57
- it "doesn't change" do
58
- other = hash.map { |k,v| [k + 10, v] }
59
- other.default_proc.should be(hash.default_proc)
60
- other.default_proc.call(5).should == 10
61
- end
62
- end
63
-
64
- context "when another Hash is merged in" do
65
- it "doesn't change" do
66
- other = hash.merge(3 => 6, 4 => 8)
67
- other.default_proc.should be(hash.default_proc)
68
- other.default_proc.call(5).should == 10
69
- end
70
- end
71
- end
72
- end
@@ -1,39 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#delete" do
5
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
6
-
7
- context "with an existing key" do
8
- let(:result) { hash.delete("B") }
9
-
10
- it "preserves the original" do
11
- hash.should eql(H["A" => "aye", "B" => "bee", "C" => "see"])
12
- end
13
-
14
- it "returns a copy with the remaining key/value pairs" do
15
- result.should eql(H["A" => "aye", "C" => "see"])
16
- end
17
- end
18
-
19
- context "with a non-existing key" do
20
- let(:result) { hash.delete("D") }
21
-
22
- it "preserves the original values" do
23
- hash.should eql(H["A" => "aye", "B" => "bee", "C" => "see"])
24
- end
25
-
26
- it "returns self" do
27
- result.should equal(hash)
28
- end
29
- end
30
-
31
- context "when removing the last key" do
32
- context "from a Hash with no default block" do
33
- it "returns the canonical empty Hash" do
34
- hash.delete('A').delete('B').delete('C').should be(Immutable::EmptyHash)
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,34 +0,0 @@
1
- require "spec_helper"
2
- require "immutable/hash"
3
-
4
- describe Immutable::Hash do
5
- describe "#dig" do
6
- let(:h) { H[:a => 9, :b => H[:c => 'a', :d => 4], :e => nil] }
7
- it "returns the value with one argument to dig" do
8
- expect(h.dig(:a)).to eq(9)
9
- end
10
-
11
- it "returns the value in nested hashes" do
12
- expect(h.dig(:b, :c)).to eq('a')
13
- end
14
-
15
- it "returns nil if the key is not present" do
16
- expect(h.dig(:f, :foo)).to eq(nil)
17
- end
18
-
19
- it "returns nil if you dig out the end of the hash" do
20
- expect(h.dig(:f, :foo, :bar)).to eq(nil)
21
- end
22
-
23
- # This is a bit different from Ruby's Hash; it raises TypeError for
24
- # objects which don't respond to #dig
25
- it "raises a NoMethodError if a value does not support #dig" do
26
- expect { h.dig(:a, :foo) }.to raise_error(NoMethodError)
27
- end
28
-
29
- it "returns the correct value when there is a default proc" do
30
- default_hash = H.new { |k, v| "#{k}-default" }
31
- expect(default_hash.dig(:a)).to eq("a-default")
32
- end
33
- end
34
- end
@@ -1,77 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
5
-
6
- [:each, :each_pair].each do |method|
7
- describe "##{method}" do
8
- context "with a block (internal iteration)" do
9
- it "returns self" do
10
- hash.send(method) {}.should be(hash)
11
- end
12
-
13
- it "yields all key/value pairs" do
14
- actual_pairs = {}
15
- hash.send(method) { |key, value| actual_pairs[key] = value }
16
- actual_pairs.should == { "A" => "aye", "B" => "bee", "C" => "see" }
17
- end
18
-
19
- it "yields key/value pairs in the same order as #each_key and #each_value" do
20
- hash.each.to_a.should eql(hash.each_key.zip(hash.each_value))
21
- end
22
-
23
- it "yields both of a pair of colliding keys" do
24
- yielded = []
25
- hash = H[DeterministicHash.new('a', 1) => 1, DeterministicHash.new('b', 1) => 1]
26
- hash.each { |k,v| yielded << k }
27
- yielded.size.should == 2
28
- yielded.map { |x| x.value }.sort.should == ['a', 'b']
29
- end
30
-
31
- it "yields only the key to a block expecting |key,|" do
32
- keys = []
33
- hash.each { |key,| keys << key }
34
- keys.sort.should == ["A", "B", "C"]
35
- end
36
- end
37
-
38
- context "with no block" do
39
- it "returns an Enumerator" do
40
- @result = hash.send(method)
41
- @result.class.should be(Enumerator)
42
- @result.to_a.should == hash.to_a
43
- end
44
- end
45
- end
46
- end
47
-
48
- describe "#each_key" do
49
- it "yields all keys" do
50
- keys = []
51
- hash.each_key { |k| keys << k }
52
- keys.sort.should == ['A', 'B', 'C']
53
- end
54
-
55
- context "with no block" do
56
- it "returns an Enumerator" do
57
- hash.each_key.class.should be(Enumerator)
58
- hash.each_key.to_a.sort.should == ['A', 'B', 'C']
59
- end
60
- end
61
- end
62
-
63
- describe "#each_value" do
64
- it "yields all values" do
65
- values = []
66
- hash.each_value { |v| values << v }
67
- values.sort.should == ['aye', 'bee', 'see']
68
- end
69
-
70
- context "with no block" do
71
- it "returns an Enumerator" do
72
- hash.each_value.class.should be(Enumerator)
73
- hash.each_value.to_a.sort.should == ['aye', 'bee', 'see']
74
- end
75
- end
76
- end
77
- end
@@ -1,29 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#each_with_index" do
5
- let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
6
-
7
- describe "with a block (internal iteration)" do
8
- it "returns self" do
9
- hash.each_with_index {}.should be(hash)
10
- end
11
-
12
- it "yields all key/value pairs with numeric indexes" do
13
- actual_pairs = {}
14
- indexes = []
15
- hash.each_with_index { |(key, value), index| actual_pairs[key] = value; indexes << index }
16
- actual_pairs.should == { "A" => "aye", "B" => "bee", "C" => "see" }
17
- indexes.sort.should == [0, 1, 2]
18
- end
19
- end
20
-
21
- describe "with no block" do
22
- it "returns an Enumerator" do
23
- hash.each_with_index.should be_kind_of(Enumerator)
24
- hash.each_with_index.to_a.map(&:first).sort.should eql([["A", "aye"], ["B", "bee"], ["C", "see"]])
25
- hash.each_with_index.to_a.map(&:last).should eql([0,1,2])
26
- end
27
- end
28
- end
29
- end
@@ -1,43 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Hash do
4
- describe "#empty?" do
5
- [
6
- [[], true],
7
- [["A" => "aye"], false],
8
- [["A" => "aye", "B" => "bee", "C" => "see"], false],
9
- ].each do |pairs, result|
10
- it "returns #{result} for #{pairs.inspect}" do
11
- H[*pairs].empty?.should == result
12
- end
13
- end
14
-
15
- it "returns true for empty hashes which have a default block" do
16
- H.new { 'default' }.empty?.should == true
17
- end
18
- end
19
-
20
- describe ".empty" do
21
- it "returns the canonical empty Hash" do
22
- H.empty.should be_empty
23
- H.empty.should be(Immutable::EmptyHash)
24
- end
25
-
26
- context "from a subclass" do
27
- it "returns an empty instance of the subclass" do
28
- subclass = Class.new(Immutable::Hash)
29
- subclass.empty.class.should be subclass
30
- subclass.empty.should be_empty
31
- end
32
-
33
- it "calls overridden #initialize when creating empty Hash" do
34
- subclass = Class.new(Immutable::Hash) do
35
- def initialize
36
- @variable = 'value'
37
- end
38
- end
39
- subclass.empty.instance_variable_get(:@variable).should == 'value'
40
- end
41
- end
42
- end
43
- end