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,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::List do
4
- describe "#to_set" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- context "on #{values.inspect}" do
11
- it "returns a set with the same values" do
12
- L[*values].to_set.should eql(S[*values])
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,19 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::List do
4
- describe "#transpose" do
5
- it "takes a list of lists and returns a list of all the first elements, all the 2nd elements, and so on" do
6
- L[L[1, 'a'], L[2, 'b'], L[3, 'c']].transpose.should eql(L[L[1, 2, 3], L["a", "b", "c"]])
7
- L[L[1, 2, 3], L["a", "b", "c"]].transpose.should eql(L[L[1, 'a'], L[2, 'b'], L[3, 'c']])
8
- L[].transpose.should eql(L[])
9
- L[L[]].transpose.should eql(L[])
10
- L[L[], L[]].transpose.should eql(L[])
11
- L[L[0]].transpose.should eql(L[L[0]])
12
- L[L[0], L[1]].transpose.should eql(L[L[0, 1]])
13
- end
14
-
15
- it "only goes as far as the shortest list" do
16
- L[L[1,2,3], L[2]].transpose.should eql(L[L[1,2]])
17
- end
18
- end
19
- end
@@ -1,31 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::List do
4
- [:union, :|].each do |method|
5
- describe "##{method}" do
6
- it "is lazy" do
7
- -> { Immutable.stream { fail }.union(Immutable.stream { fail }) }.should_not raise_error
8
- end
9
-
10
- [
11
- [[], [], []],
12
- [["A"], [], ["A"]],
13
- [%w[A B C], [], %w[A B C]],
14
- [%w[A A], ["A"], ["A"]],
15
- ].each do |a, b, expected|
16
- context "returns #{expected.inspect}" do
17
- let(:list_a) { L[*a] }
18
- let(:list_b) { L[*b] }
19
-
20
- it "for #{a.inspect} and #{b.inspect}" do
21
- list_a.send(method, list_b).should eql(L[*expected])
22
- end
23
-
24
- it "for #{b.inspect} and #{a.inspect}" do
25
- list_b.send(method, list_a).should eql(L[*expected])
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::List do
4
- describe "#uniq" do
5
- it "is lazy" do
6
- -> { Immutable.stream { fail }.uniq }.should_not raise_error
7
- end
8
-
9
- context "when passed a block" do
10
- it "uses the block to identify duplicates" do
11
- L["a", "A", "b"].uniq(&:upcase).should eql(Immutable::List["a", "b"])
12
- end
13
- end
14
-
15
- [
16
- [[], []],
17
- [["A"], ["A"]],
18
- [%w[A B C], %w[A B C]],
19
- [%w[A B A C C], %w[A B C]],
20
- ].each do |values, expected|
21
- context "on #{values.inspect}" do
22
- let(:list) { L[*values] }
23
-
24
- it "preserves the original" do
25
- list.uniq
26
- list.should eql(L[*values])
27
- end
28
-
29
- it "returns #{expected.inspect}" do
30
- list.uniq.should eql(L[*expected])
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::List do
4
- describe "#zip" do
5
- it "is lazy" do
6
- -> { Immutable.stream { fail }.zip(Immutable.stream { fail }) }.should_not raise_error
7
- end
8
-
9
- [
10
- [[], [], []],
11
- [["A"], ["aye"], [L["A", "aye"]]],
12
- [["A"], [], [L["A", nil]]],
13
- [[], ["A"], [L[nil, "A"]]],
14
- [%w[A B C], %w[aye bee see], [L["A", "aye"], L["B", "bee"], L["C", "see"]]],
15
- ].each do |left, right, expected|
16
- context "on #{left.inspect} and #{right.inspect}" do
17
- it "returns #{expected.inspect}" do
18
- L[*left].zip(L[*right]).should eql(L[*expected])
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,101 +0,0 @@
1
- require "spec_helper"
2
- require "set"
3
-
4
- describe Immutable do
5
- expectations = [
6
- # [Ruby, Immutable]
7
- [ { "a" => 1,
8
- "b" => [2, {"c" => 3}, 4],
9
- "d" => ::Set.new([5, 6, 7]),
10
- "e" => {"f" => 8, "g" => 9},
11
- "h" => Regexp.new("ijk"),
12
- "l" => ::SortedSet.new([1, 2, 3]) },
13
- Immutable::Hash[
14
- "a" => 1,
15
- "b" => Immutable::Vector[2, Immutable::Hash["c" => 3], 4],
16
- "d" => Immutable::Set[5, 6, 7],
17
- "e" => Immutable::Hash["f" => 8, "g" => 9],
18
- "h" => Regexp.new("ijk"),
19
- "l" => Immutable::SortedSet.new([1, 2, 3])] ],
20
- [ {}, Immutable::Hash[] ],
21
- [ {"a" => 1, "b" => 2, "c" => 3}, Immutable::Hash["a" => 1, "b" => 2, "c" => 3] ],
22
- [ [], Immutable::Vector[] ],
23
- [ [1, 2, 3], Immutable::Vector[1, 2, 3] ],
24
- [ ::Set.new, Immutable::Set[] ],
25
- [ ::Set.new([1, 2, 3]), Immutable::Set[1, 2, 3] ],
26
- [ ::SortedSet.new, Immutable::SortedSet[] ],
27
- [ ::SortedSet.new([1, 2, 3]), Immutable::SortedSet[1, 2, 3] ],
28
- [ 42, 42 ],
29
- [ STDOUT, STDOUT ],
30
-
31
- # Struct conversion is one-way (from Ruby core Struct to Immutable::Hash), not back again!
32
- [ Struct::Customer.new, Immutable::Hash[name: nil, address: nil], true ],
33
- [ Struct::Customer.new('Dave', '123 Main'), Immutable::Hash[name: 'Dave', address: '123 Main'], true ]
34
- ]
35
-
36
- describe ".from" do
37
- expectations.each do |input, expected_result|
38
- context "with #{input.inspect} as input" do
39
- it "should return #{expected_result.inspect}" do
40
- Immutable.from(input).should eql(expected_result)
41
- end
42
- end
43
- end
44
-
45
- context "with mixed object" do
46
- it "should return Immutable data" do
47
- input = {
48
- "a" => "b",
49
- "c" => {"d" => "e"},
50
- "f" => Immutable::Vector["g", "h", []],
51
- "i" => Immutable::Hash["j" => {}, "k" => Immutable::Set[[], {}]] }
52
- expected_result = Immutable::Hash[
53
- "a" => "b",
54
- "c" => Immutable::Hash["d" => "e"],
55
- "f" => Immutable::Vector["g", "h", Immutable::EmptyVector],
56
- "i" => Immutable::Hash["j" => Immutable::EmptyHash, "k" => Immutable::Set[Immutable::EmptyVector, Immutable::EmptyHash]] ]
57
- Immutable.from(input).should eql(expected_result)
58
- end
59
- end
60
- end
61
-
62
- describe ".to_ruby" do
63
- expectations.each do |expected_result, input, one_way|
64
- unless one_way
65
- context "with #{input.inspect} as input" do
66
- it "should return #{expected_result.inspect}" do
67
- Immutable.to_ruby(input).should eql(expected_result)
68
- end
69
- end
70
- end
71
- end
72
-
73
- context "with Immutable::Deque[] as input" do
74
- it "should return []" do
75
- Immutable.to_ruby(Immutable::Deque[]).should eql([])
76
- end
77
- end
78
-
79
- context "with Immutable::Deque[Immutable::Hash[\"a\" => 1]] as input" do
80
- it "should return [{\"a\" => 1}]" do
81
- Immutable.to_ruby(Immutable::Deque[Immutable::Hash["a" => 1]]).should eql([{"a" => 1}])
82
- end
83
- end
84
-
85
- context "with mixed object" do
86
- it "should return Ruby data structures" do
87
- input = Immutable::Hash[
88
- "a" => "b",
89
- "c" => {"d" => "e"},
90
- "f" => Immutable::Vector["g", "h"],
91
- "i" => {"j" => Immutable::EmptyHash, "k" => Set.new([Immutable::EmptyVector, Immutable::EmptyHash])}]
92
- expected_result = {
93
- "a" => "b",
94
- "c" => {"d" => "e"},
95
- "f" => ["g", "h"],
96
- "i" => {"j" => {}, "k" => Set.new([[], {}])} }
97
- Immutable.to_ruby(input).should eql(expected_result)
98
- end
99
- end
100
- end
101
- end
@@ -1,77 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- let(:original) { S["A", "B", "C"] }
5
-
6
- [:add, :<<].each do |method|
7
- describe "##{method}" do
8
- context "with a unique value" do
9
- let(:result) { original.send(method, "D") }
10
-
11
- it "preserves the original" do
12
- result
13
- original.should eql(S["A", "B", "C"])
14
- end
15
-
16
- it "returns a copy with the superset of values" do
17
- result.should eql(S["A", "B", "C", "D"])
18
- end
19
- end
20
-
21
- context "with a duplicate value" do
22
- let(:result) { original.send(method, "C") }
23
-
24
- it "preserves the original values" do
25
- result
26
- original.should eql(S["A", "B", "C"])
27
- end
28
-
29
- it "returns self" do
30
- result.should equal(original)
31
- end
32
- end
33
-
34
- it "can add nil to a set" do
35
- original.add(nil).should eql(S["A", "B", "C", nil])
36
- end
37
-
38
- it "works on large sets, with many combinations of input" do
39
- 50.times do
40
- # Array#sample is buggy on RBX 2.5.8; that's why #uniq is needed here
41
- # See https://github.com/rubinius/rubinius/issues/3506
42
- array = (1..500).to_a.sample(100).uniq
43
- set = S.new(array)
44
- to_add = 1000 + rand(1000)
45
- set.add(to_add).size.should == array.size + 1
46
- set.add(to_add).include?(to_add).should == true
47
- end
48
- end
49
- end
50
- end
51
-
52
- describe "#add?" do
53
- context "with a unique value" do
54
- let(:result) { original.add?("D") }
55
-
56
- it "preserves the original" do
57
- original.should eql(S["A", "B", "C"])
58
- end
59
-
60
- it "returns a copy with the superset of values" do
61
- result.should eql(S["A", "B", "C", "D"])
62
- end
63
- end
64
-
65
- context "with a duplicate value" do
66
- let(:result) { original.add?("C") }
67
-
68
- it "preserves the original values" do
69
- original.should eql(S["A", "B", "C"])
70
- end
71
-
72
- it "returns false" do
73
- result.should equal(false)
74
- end
75
- end
76
- end
77
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#all?" do
5
- context "when empty" do
6
- it "with a block returns true" do
7
- S.empty.all? {}.should == true
8
- end
9
-
10
- it "with no block returns true" do
11
- S.empty.all?.should == true
12
- end
13
- end
14
-
15
- context "when not empty" do
16
- context "with a block" do
17
- let(:set) { S["A", "B", "C"] }
18
-
19
- it "returns true if the block always returns true" do
20
- set.all? { |item| true }.should == true
21
- end
22
-
23
- it "returns false if the block ever returns false" do
24
- set.all? { |item| item == "D" }.should == false
25
- end
26
-
27
- it "propagates an exception from the block" do
28
- -> { set.all? { |k,v| raise "help" } }.should raise_error(RuntimeError)
29
- end
30
-
31
- it "stops iterating as soon as the block returns false" do
32
- yielded = []
33
- set.all? { |k,v| yielded << k; false }
34
- yielded.size.should == 1
35
- end
36
- end
37
-
38
- describe "with no block" do
39
- it "returns true if all values are truthy" do
40
- S[true, "A"].all?.should == true
41
- end
42
-
43
- [nil, false].each do |value|
44
- it "returns false if any value is #{value.inspect}" do
45
- S[value, true, "A"].all?.should == false
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#any?" do
5
- context "when empty" do
6
- it "with a block returns false" do
7
- S.empty.any? {}.should == false
8
- end
9
-
10
- it "with no block returns false" do
11
- S.empty.any?.should == false
12
- end
13
- end
14
-
15
- context "when not empty" do
16
- context "with a block" do
17
- let(:set) { S["A", "B", "C", nil] }
18
-
19
- ["A", "B", "C", nil].each do |value|
20
- it "returns true if the block ever returns true (#{value.inspect})" do
21
- set.any? { |item| item == value }.should == true
22
- end
23
- end
24
-
25
- it "returns false if the block always returns false" do
26
- set.any? { |item| item == "D" }.should == false
27
- end
28
-
29
- it "propagates exceptions raised in the block" do
30
- -> { set.any? { |k,v| raise "help" } }.should raise_error(RuntimeError)
31
- end
32
-
33
- it "stops iterating as soon as the block returns true" do
34
- yielded = []
35
- set.any? { |k,v| yielded << k; true }
36
- yielded.size.should == 1
37
- end
38
- end
39
-
40
- context "with no block" do
41
- it "returns true if any value is truthy" do
42
- S[nil, false, true, "A"].any?.should == true
43
- end
44
-
45
- it "returns false if all values are falsey" do
46
- S[nil, false].any?.should == false
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#clear" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- describe "on #{values}" do
11
- let(:set) { S[*values] }
12
-
13
- it "preserves the original" do
14
- set.clear
15
- set.should eql(S[*values])
16
- end
17
-
18
- it "returns an empty set" do
19
- set.clear.should equal(S.empty)
20
- end
21
- end
22
- end
23
-
24
- context "from a subclass" do
25
- it "returns an empty instance of the subclass" do
26
- subclass = Class.new(Immutable::Set)
27
- instance = subclass.new([:a, :b, :c, :d])
28
- instance.clear.class.should be(subclass)
29
- instance.clear.should be_empty
30
- end
31
- end
32
- end
33
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#compact" do
5
- [
6
- [[], []],
7
- [["A"], ["A"]],
8
- [%w[A B C], %w[A B C]],
9
- [[nil], []],
10
- [[nil, "B"], ["B"]],
11
- [["A", nil], ["A"]],
12
- [[nil, nil], []],
13
- [["A", nil, "C"], %w[A C]],
14
- [[nil, "B", nil], ["B"]],
15
- ].each do |values, expected|
16
- describe "on #{values.inspect}" do
17
- let(:set) { S[*values] }
18
-
19
- it "preserves the original" do
20
- set.compact
21
- set.should eql(S[*values])
22
- end
23
-
24
- it "returns #{expected.inspect}" do
25
- set.compact.should eql(S[*expected])
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe ".set" do
5
- context "with no values" do
6
- it "returns the empty set" do
7
- S.empty.should be_empty
8
- S.empty.should equal(Immutable::EmptySet)
9
- end
10
- end
11
-
12
- context "with a list of values" do
13
- it "is equivalent to repeatedly using #add" do
14
- S["A", "B", "C"].should eql(S.empty.add("A").add("B").add("C"))
15
- end
16
- end
17
- end
18
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:dup, :clone].each do |method|
5
- let(:set) { S["A", "B", "C"] }
6
-
7
- describe "##{method}" do
8
- it "returns self" do
9
- set.send(method).should equal(set)
10
- end
11
- end
12
- end
13
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#count" do
5
- [
6
- [[], 0],
7
- [[1], 1],
8
- [[1, 2], 1],
9
- [[1, 2, 3], 2],
10
- [[1, 2, 3, 4], 2],
11
- [[1, 2, 3, 4, 5], 3],
12
- ].each do |values, expected|
13
- describe "on #{values.inspect}" do
14
- let(:set) { S[*values] }
15
-
16
- context "with a block" do
17
- it "returns #{expected.inspect}" do
18
- set.count(&:odd?).should == expected
19
- end
20
- end
21
-
22
- context "without a block" do
23
- it "returns length" do
24
- set.count.should == set.length
25
- end
26
- end
27
- end
28
- end
29
-
30
- it "works on large sets" do
31
- set = Immutable::Set.new(1..2000)
32
- set.count.should == 2000
33
- set.count(&:odd?).should == 1000
34
- end
35
- end
36
- end
@@ -1,71 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- let(:set) { S["A", "B", "C"] }
5
-
6
- describe "#delete" do
7
- context "with an existing value" do
8
- it "preserves the original" do
9
- set.delete("B")
10
- set.should eql(S["A", "B", "C"])
11
- end
12
-
13
- it "returns a copy with the remaining values" do
14
- set.delete("B").should eql(S["A", "C"])
15
- end
16
- end
17
-
18
- context "with a non-existing value" do
19
- it "preserves the original values" do
20
- set.delete("D")
21
- set.should eql(S["A", "B", "C"])
22
- end
23
-
24
- it "returns self" do
25
- set.delete("D").should equal(set)
26
- end
27
- end
28
-
29
- context "when removing the last value in a set" do
30
- it "returns the canonical empty set" do
31
- set.delete("B").delete("C").delete("A").should be(Immutable::EmptySet)
32
- end
33
- end
34
-
35
- it "works on large sets, with many combinations of input" do
36
- array = 1000.times.map { %w[a b c d e f g h i j k l m n].sample(5).join }.uniq
37
- set = S.new(array)
38
- array.each do |key|
39
- result = set.delete(key)
40
- result.size.should == set.size - 1
41
- result.include?(key).should == false
42
- other = array.sample
43
- (result.include?(other).should == true) if other != key
44
- end
45
- end
46
- end
47
-
48
- describe "#delete?" do
49
- context "with an existing value" do
50
- it "preserves the original" do
51
- set.delete?("B")
52
- set.should eql(S["A", "B", "C"])
53
- end
54
-
55
- it "returns a copy with the remaining values" do
56
- set.delete?("B").should eql(S["A", "C"])
57
- end
58
- end
59
-
60
- context "with a non-existing value" do
61
- it "preserves the original values" do
62
- set.delete?("D")
63
- set.should eql(S["A", "B", "C"])
64
- end
65
-
66
- it "returns false" do
67
- set.delete?("D").should be(false)
68
- end
69
- end
70
- end
71
- end
@@ -1,49 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:difference, :subtract, :-].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], [], []],
8
- [["A"], [], ["A"]],
9
- [["A"], ["A"], []],
10
- [%w[A B C], ["B"], %w[A C]],
11
- [%w[A B C], %w[A C], ["B"]],
12
- [%w[A B C D E F G H], [], %w[A B C D E F G H]],
13
- [%w[A B C M X Y Z], %w[B C D E F G H I J X], %w[A M Y Z]]
14
- ].each do |a, b, expected|
15
- context "for #{a.inspect} and #{b.inspect}" do
16
- let(:set_a) { S[*a] }
17
- let(:set_b) { S[*b] }
18
- let(:result) { set_a.send(method, set_b) }
19
-
20
- it "doesn't modify the original Sets" do
21
- result
22
- set_a.should eql(S.new(a))
23
- set_b.should eql(S.new(b))
24
- end
25
-
26
- it "returns #{expected.inspect}" do
27
- result.should eql(S[*expected])
28
- end
29
- end
30
-
31
- context "when passed a Ruby Array" do
32
- it "returns the expected Set" do
33
- S[*a].difference(b.freeze).should eql(S[*expected])
34
- end
35
- end
36
- end
37
-
38
- it "works on a wide variety of inputs" do
39
- items = ('aa'..'zz').to_a
40
- 50.times do
41
- array1 = items.sample(200)
42
- array2 = items.sample(200)
43
- result = S.new(array1).send(method, S.new(array2))
44
- result.to_a.sort.should eql((array1 - array2).sort)
45
- end
46
- end
47
- end
48
- end
49
- end