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,40 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- [:find_index, :index].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], "A", nil],
8
- [[], nil, nil],
9
- [["A"], "A", 0],
10
- [["A"], "B", nil],
11
- [["A"], nil, nil],
12
- [["A", "B", "C"], "A", 0],
13
- [["A", "B", "C"], "B", 1],
14
- [["A", "B", "C"], "C", 2],
15
- [["A", "B", "C"], "D", nil],
16
- [0..1, 1, 1],
17
- [0..10, 5, 5],
18
- [0..10, 10, 10],
19
- [[2], 2, 0],
20
- [[2], 2.0, 0],
21
- [[2.0], 2.0, 0],
22
- [[2.0], 2, 0],
23
- ].each do |values, item, expected|
24
- unless item.nil? # test breaks otherwise
25
- context "looking for #{item.inspect} in #{values.inspect} without block" do
26
- it "returns #{expected.inspect}" do
27
- SS[*values].send(method, item).should == expected
28
- end
29
- end
30
- end
31
-
32
- context "looking for #{item.inspect} in #{values.inspect} with block" do
33
- it "returns #{expected.inspect}" do
34
- SS[*values].send(method) { |x| x == item }.should == expected
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#first" do
5
- [
6
- [[], nil],
7
- [["A"], "A"],
8
- [%w[A B C], "A"],
9
- [%w[Z Y X], "X"]
10
- ].each do |values, expected|
11
- context "on #{values.inspect}" do
12
- it "returns #{expected.inspect}" do
13
- SS[*values].first.should eql(expected)
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#from" do
5
- context "when called without a block" do
6
- it "returns a sorted set of all items equal to or greater than the argument" do
7
- 100.times do
8
- items = rand(100).times.collect { rand(1000) }.uniq
9
- set = SS.new(items)
10
- threshold = rand(1000)
11
- result = set.from(threshold)
12
- array = items.select { |x| x >= threshold }.sort
13
- result.class.should be(Immutable::SortedSet)
14
- result.size.should == array.size
15
- result.to_a.should == array
16
- end
17
- end
18
- end
19
-
20
- context "when called with a block" do
21
- it "yields all the items equal to or greater than than the argument" do
22
- 100.times do
23
- items = rand(100).times.collect { rand(1000) }.uniq
24
- set = SS.new(items)
25
- threshold = rand(1000)
26
- result = []
27
- set.from(threshold) { |x| result << x }
28
- array = items.select { |x| x >= threshold }.sort
29
- result.size.should == array.size
30
- result.should == array
31
- end
32
- end
33
- end
34
-
35
- context "on an empty set" do
36
- it "returns an empty set" do
37
- SS.empty.from(1).should be_empty
38
- SS.empty.from('abc').should be_empty
39
- SS.empty.from(:symbol).should be_empty
40
- end
41
- end
42
-
43
- context "with an argument higher than all the values in the set" do
44
- it "returns an empty set" do
45
- result = SS.new(1..100).from(101)
46
- result.class.should be(Immutable::SortedSet)
47
- result.should be_empty
48
- end
49
- end
50
- end
51
- end
@@ -1,57 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- [:group_by, :group, :classify].each do |method|
5
- describe "##{method}" do
6
- context "with a block" do
7
- [
8
- [[], []],
9
- [[1], [true => SS[1]]],
10
- [[1, 2, 3, 4], [true => SS[3, 1], false => SS[4, 2]]],
11
- ].each do |values, expected|
12
- context "on #{values.inspect}" do
13
- let(:sorted_set) { SS[*values] }
14
-
15
- it "preserves the original" do
16
- sorted_set.send(method, &:odd?)
17
- sorted_set.should eql(SS[*values])
18
- end
19
-
20
- it "returns #{expected.inspect}" do
21
- sorted_set.send(method, &:odd?).should eql(H[*expected])
22
- end
23
- end
24
- end
25
- end
26
-
27
- context "without a block" do
28
- [
29
- [[], []],
30
- [[1], [1 => SS[1]]],
31
- [[1, 2, 3, 4], [1 => SS[1], 2 => SS[2], 3 => SS[3], 4 => SS[4]]],
32
- ].each do |values, expected|
33
- context "on #{values.inspect}" do
34
- let(:sorted_set) { SS[*values] }
35
-
36
- it "preserves the original" do
37
- sorted_set.group_by
38
- sorted_set.should eql(SS[*values])
39
- end
40
-
41
- it "returns #{expected.inspect}" do
42
- sorted_set.group_by.should eql(H[*expected])
43
- end
44
- end
45
- end
46
- end
47
-
48
- context "from a subclass" do
49
- it "returns an Hash whose values are instances of the subclass" do
50
- subclass = Class.new(Immutable::SortedSet)
51
- instance = subclass.new(['some', 'strings', 'here'])
52
- instance.group_by { |x| x }.values.each { |v| v.class.should be(subclass) }
53
- end
54
- end
55
- end
56
- end
57
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- [:include?, :member?].each do |method|
5
- describe "##{method}" do
6
- let(:sorted_set) { SS[1, 2, 3, 4.0] }
7
-
8
- [1, 2, 3, 4.0].each do |value|
9
- it "returns true for an existing value (#{value.inspect})" do
10
- sorted_set.send(method, value).should == true
11
- end
12
- end
13
-
14
- it "returns false for a non-existing value" do
15
- sorted_set.send(method, 5).should == false
16
- end
17
-
18
- it "uses #<=> for equality" do
19
- sorted_set.send(method, 4).should == true
20
- end
21
- end
22
- end
23
- end
@@ -1,37 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#inspect" do
5
- [
6
- [[], "Immutable::SortedSet[]"],
7
- [["A"], 'Immutable::SortedSet["A"]'],
8
- [["C", "B", "A"], 'Immutable::SortedSet["A", "B", "C"]']
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- let(:sorted_set) { SS[*values] }
12
-
13
- it "returns #{expected.inspect}" do
14
- sorted_set.inspect.should == expected
15
- end
16
-
17
- it "returns a string which can be eval'd to get an equivalent set" do
18
- eval(sorted_set.inspect).should eql(sorted_set)
19
- end
20
- end
21
- end
22
-
23
- MySortedSet = Class.new(Immutable::SortedSet)
24
-
25
- context "from a subclass" do
26
- let(:sorted_set) { MySortedSet[1, 2] }
27
-
28
- it "returns a programmer-readable representation of the set contents" do
29
- sorted_set.inspect.should == 'MySortedSet[1, 2]'
30
- end
31
-
32
- it "returns a string which can be eval'd to get an equivalent set" do
33
- eval(sorted_set.inspect).should eql(sorted_set)
34
- end
35
- end
36
- end
37
- end
@@ -1,25 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#intersect?" do
5
- [
6
- [[], [], false],
7
- [["A"], [], false],
8
- [[], ["A"], false],
9
- [["A"], ["A"], true],
10
- [%w[A B C], ["B"], true],
11
- [["B"], %w[A B C], true],
12
- [%w[A B C], %w[D E], false],
13
- [%w[F G H I], %w[A B C], false],
14
- [%w[A B C], %w[A B C], true],
15
- [%w[A B C], %w[A B C D], true],
16
- [%w[D E F G], %w[A B C], false],
17
- ].each do |a, b, expected|
18
- context "for #{a.inspect} and #{b.inspect}" do
19
- it "returns #{expected}" do
20
- SS[*a].intersect?(SS[*b]).should be(expected)
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- [:intersection, :&].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], [], []],
8
- [["A"], [], []],
9
- [["A"], ["A"], ["A"]],
10
- [%w[A B C], ["B"], ["B"]],
11
- [%w[A B C], %w[A C], %w[A C]],
12
- [%w[A M T X], %w[B C D E F G H I M P Q T U], %w[M T]]
13
- ].each do |a, b, expected|
14
- context "for #{a.inspect} and #{b.inspect}" do
15
- it "returns #{expected.inspect}" do
16
- SS[*a].send(method, SS[*b]).should eql(SS[*expected])
17
- end
18
- end
19
-
20
- context "for #{b.inspect} and #{a.inspect}" do
21
- it "returns #{expected.inspect}" do
22
- SS[*b].send(method, SS[*a]).should eql(SS[*expected])
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- let(:sorted_set) { SS[*values] }
5
-
6
- describe "#last" do
7
- let(:last) { sorted_set.last }
8
-
9
- shared_examples "checking values" do
10
- it "returns the last item" do
11
- expect(last).to eq(last_item)
12
- end
13
- end
14
-
15
- context "with an empty set" do
16
- let(:last_item) { nil }
17
- let(:values) { [] }
18
-
19
- include_examples "checking values"
20
- end
21
-
22
- context "with a single item set" do
23
- let(:last_item) { "A" }
24
- let(:values) { %w[A] }
25
-
26
- include_examples "checking values"
27
- end
28
-
29
- context "with a multi-item set" do
30
- let(:last_item) { "B" }
31
- let(:values) { %w[B A] }
32
-
33
- include_examples "checking values"
34
- end
35
- end
36
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- [:map, :collect].each do |method|
5
- describe "##{method}" do
6
- context "when empty" do
7
- it "returns self" do
8
- SS.empty.send(method) {}.should equal(SS.empty)
9
- end
10
- end
11
-
12
- context "when not empty" do
13
- let(:sorted_set) { SS["A", "B", "C"] }
14
-
15
- context "with a block" do
16
- it "preserves the original values" do
17
- sorted_set.send(method, &:downcase)
18
- sorted_set.should eql(SS["A", "B", "C"])
19
- end
20
-
21
- it "returns a new set with the mapped values" do
22
- sorted_set.send(method, &:downcase).should eql(SS["a", "b", "c"])
23
- end
24
-
25
- it "filters out duplicates" do
26
- sorted_set.send(method) { 'blah' }.should eq(SS['blah'])
27
- end
28
- end
29
-
30
- context "with no block" do
31
- it "returns an Enumerator" do
32
- sorted_set.send(method).class.should be(Enumerator)
33
- sorted_set.send(method).each(&:downcase).should == SS['a', 'b', 'c']
34
- end
35
- end
36
- end
37
-
38
- context "on a set ordered by a comparator" do
39
- let(:sorted_set) { SS.new(["A", "B", "C"]) { |a,b| b <=> a }}
40
-
41
- it "returns a new set with the mapped values" do
42
- sorted_set.send(method, &:downcase).should == ['c', 'b', 'a']
43
- end
44
-
45
- it "filters out duplicates" do
46
- sorted_set.send(method) { 'blah' }.should eq(SS['blah'])
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#marshal_dump/#marshal_load" do
5
- let(:ruby) do
6
- File.join(RbConfig::CONFIG["bindir"], RbConfig::CONFIG["ruby_install_name"])
7
- end
8
- let(:child_cmd) do
9
- %Q|#{ruby} -I lib -r immutable -e 'set = Immutable::SortedSet[5, 10, 15]; $stdout.write(Marshal.dump(set))'|
10
- end
11
-
12
- let(:reloaded_set) do
13
- IO.popen(child_cmd, "r+") do |child|
14
- reloaded_set = Marshal.load(child)
15
- child.close
16
- reloaded_set
17
- end
18
- end
19
-
20
- it "can survive dumping and loading into a new process" do
21
- expect(reloaded_set).to eql(SS[5, 10, 15])
22
- end
23
-
24
- it "is still possible to find items by index after loading" do
25
- expect(reloaded_set[0]).to eq(5)
26
- expect(reloaded_set[1]).to eq(10)
27
- expect(reloaded_set[2]).to eq(15)
28
- expect(reloaded_set.size).to eq(3)
29
- end
30
-
31
- it "raises a TypeError if set has a custom sort order" do
32
- # this is because comparator block can't be serialized
33
- -> { Marshal.dump(SS.new([1, 2, 3]) { |x| -x }) }.should raise_error(TypeError)
34
- end
35
- end
36
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#max" do
5
- context "with a block" do
6
- [
7
- [[], nil],
8
- [["A"], "A"],
9
- [%w[Ichi Ni San], "Ichi"],
10
- ].each do |values, expected|
11
- describe "on #{values.inspect}" do
12
- let(:set) { SS[*values] }
13
- let(:result) { set.max { |maximum, item| maximum.length <=> item.length }}
14
-
15
- it "returns #{expected.inspect}" do
16
- result.should == expected
17
- end
18
- end
19
- end
20
- end
21
-
22
- context "without a block" do
23
- [
24
- [[], nil],
25
- [["A"], "A"],
26
- [%w[Ichi Ni San], "San"],
27
- ].each do |values, expected|
28
- describe "on #{values.inspect}" do
29
- it "returns #{expected.inspect}" do
30
- SS[*values].max.should == expected
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,19 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#min" do
5
- [
6
- [[], nil],
7
- [["A"], "A"],
8
- [%w[Ichi Ni San], "Ichi"],
9
- [[1,2,3,4,5], 1],
10
- [[0, -0.0, 2.2, -4, -4.2], -4.2],
11
- ].each do |values, expected|
12
- context "on #{values.inspect}" do
13
- it "returns #{expected.inspect}" do
14
- SS[*values].min.should == expected
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,137 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe ".new" do
5
- it "accepts a single enumerable argument and creates a new sorted set" do
6
- sorted_set = SS.new([1,2,3])
7
- sorted_set.size.should be(3)
8
- sorted_set[0].should be(1)
9
- sorted_set[1].should be(2)
10
- sorted_set[2].should be(3)
11
- end
12
-
13
- it "also works with a Range" do
14
- sorted_set = SS.new(1..3)
15
- sorted_set.size.should be(3)
16
- sorted_set[0].should be(1)
17
- sorted_set[1].should be(2)
18
- sorted_set[2].should be(3)
19
- end
20
-
21
- it "doesn't mutate the initializer" do
22
- array = [3,2,1,3,2,1] # this will need to be sorted and duplicates filtered out
23
- sorted_set = SS.new(array)
24
- expect(array).to eq([3,2,1,3,2,1])
25
- end
26
-
27
- it "doesn't change if the initializer is later mutated" do
28
- array = [3,2,1,3,2,1]
29
- sorted_set = SS.new(array)
30
- array.clear
31
- expect(sorted_set.to_a).to eq([1,2,3])
32
- end
33
-
34
- it "is amenable to overriding of #initialize" do
35
- class SnazzySortedSet < Immutable::SortedSet
36
- def initialize
37
- super(['SNAZZY!!!'])
38
- end
39
- end
40
-
41
- sorted_set = SnazzySortedSet.new
42
- sorted_set.size.should be(1)
43
- sorted_set.to_a.should == ['SNAZZY!!!']
44
- end
45
-
46
- it "accepts a block with arity 1" do
47
- sorted_set = SS.new(1..3) { |a| -a }
48
- sorted_set[0].should be(3)
49
- sorted_set[1].should be(2)
50
- sorted_set[2].should be(1)
51
- end
52
-
53
- it "accepts a block with arity 2" do
54
- sorted_set = SS.new(1..3) { |a,b| b <=> a }
55
- sorted_set[0].should be(3)
56
- sorted_set[1].should be(2)
57
- sorted_set[2].should be(1)
58
- end
59
-
60
- it "can use a block produced by Symbol#to_proc" do
61
- sorted_set = SS.new([Object, BasicObject], &:name.to_proc)
62
- sorted_set[0].should be(BasicObject)
63
- sorted_set[1].should be(Object)
64
- end
65
-
66
- it "filters out duplicates" do
67
- sorted_set = SS.new(['a', 'b', 'a', 'c', 'b', 'a', 'c', 'c'])
68
- expect(sorted_set.size).to be(3)
69
- end
70
-
71
- context "when passed a comparator with arity 2" do
72
- it "still filters out duplicates" do
73
- sorted_set = SS.new([1,2,7,8,9,10]) { |x,y| (x%7) <=> (y%7) }
74
- expect(sorted_set.to_a).to eq([7,1,2,10])
75
- end
76
-
77
- it "still doesn't mutate the initializer" do
78
- array = [3,2,1,3,2,1] # this will need to be sorted and duplicates filtered out
79
- sorted_set = SS.new(array) { |x,y| y <=> x }
80
- expect(array).to eq([3,2,1,3,2,1])
81
- end
82
-
83
- it "still doesn't change if the initializer is later mutated" do
84
- array = [3,2,1,3,2,1]
85
- sorted_set = SS.new(array) { |x,y| y <=> x }
86
- array.clear
87
- expect(sorted_set.to_a).to eq([3,2,1])
88
- end
89
- end
90
-
91
- context "when passed a block with arity 1" do
92
- it "still filters out duplicates" do
93
- sorted_set = SS.new([1,2,7,8,9,10]) { |x| x % 7 }
94
- expect(sorted_set.to_a).to eq([7,1,2,10])
95
- end
96
-
97
- it "still doesn't mutate the initializer" do
98
- array = [3,2,1,3,2,1] # this will need to be sorted and duplicates filtered out
99
- sorted_set = SS.new(array) { |x| x % 7 }
100
- expect(array).to eq([3,2,1,3,2,1])
101
- end
102
-
103
- it "still doesn't change if the initializer is later mutated" do
104
- array = [3,2,1,3,2,1]
105
- sorted_set = SS.new(array) { |x| x % 7 }
106
- array.clear
107
- expect(sorted_set.to_a).to eq([1,2,3])
108
- end
109
- end
110
-
111
- context "from a subclass" do
112
- it "returns a frozen instance of the subclass" do
113
- subclass = Class.new(Immutable::SortedSet)
114
- instance = subclass.new(["some", "values"])
115
- instance.class.should be subclass
116
- instance.frozen?.should be true
117
- end
118
- end
119
- end
120
-
121
- describe ".[]" do
122
- it "accepts a variable number of items and creates a new sorted set" do
123
- sorted_set = SS['a', 'b']
124
- sorted_set.size.should be(2)
125
- sorted_set[0].should == 'a'
126
- sorted_set[1].should == 'b'
127
- end
128
-
129
- it "filters out duplicate items" do
130
- sorted_set = SS['a', 'b', 'a', 'c', 'b', 'a', 'c', 'c']
131
- expect(sorted_set.size).to be(3)
132
- sorted_set[0].should == 'a'
133
- sorted_set[1].should == 'b'
134
- sorted_set[2].should == 'c'
135
- end
136
- end
137
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#reverse_each" do
5
- context "with no block" do
6
- let(:sorted_set) { SS["A", "B", "C"] }
7
-
8
- it "returns an Enumerator" do
9
- sorted_set.reverse_each.class.should be(Enumerator)
10
- sorted_set.reverse_each.to_a.should eql(sorted_set.to_a.reverse)
11
- end
12
- end
13
-
14
- context "with a block" do
15
- let(:sorted_set) { SS.new(1..1025) }
16
-
17
- it "returns self" do
18
- sorted_set.reverse_each {}.should be(sorted_set)
19
- end
20
-
21
- it "iterates over the items in order" do
22
- items = []
23
- sorted_set.reverse_each { |item| items << item }
24
- items.should == (1..1025).to_a.reverse
25
- end
26
- end
27
- end
28
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#sample" do
5
- let(:sorted_set) { Immutable::SortedSet.new(1..10) }
6
-
7
- it "returns a randomly chosen item" do
8
- chosen = 100.times.map { sorted_set.sample }
9
- chosen.each { |item| sorted_set.include?(item).should == true }
10
- sorted_set.each { |item| chosen.include?(item).should == true }
11
- end
12
- end
13
- end