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,74 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- [:get, :at].each do |method|
5
- describe "##{method}" do
6
- context "when empty" do
7
- it "always returns nil" do
8
- (-1..1).each do |i|
9
- V.empty.send(method, i).should be_nil
10
- end
11
- end
12
- end
13
-
14
- context "when not empty" do
15
- let(:vector) { V[*(1..1025)] }
16
-
17
- context "with a positive index" do
18
- context "within the absolute bounds of the vector" do
19
- it "returns the value at the specified index from the head" do
20
- (0..(vector.size - 1)).each do |i|
21
- vector.send(method, i).should == i + 1
22
- end
23
- end
24
- end
25
-
26
- context "outside the absolute bounds of the vector" do
27
- it "returns nil" do
28
- vector.send(method, vector.size).should be_nil
29
- end
30
- end
31
- end
32
-
33
- context "with a negative index" do
34
- context "within the absolute bounds of the vector" do
35
- it "returns the value at the specified index from the tail" do
36
- (-vector.size..-1).each do |i|
37
- vector.send(method, i).should == vector.size + i + 1
38
- end
39
- end
40
- end
41
-
42
- context "outside the absolute bounds of the vector" do
43
- it "returns nil" do
44
- vector.send(method, -vector.size.next).should be_nil
45
- end
46
- end
47
- end
48
- end
49
-
50
- [1, 10, 31, 32, 33, 1024, 1025, 2000].each do |size|
51
- context "on a #{size}-item vector" do
52
- it "works correctly, even after various addings and removings" do
53
- array = size.times.map { rand(10000) }
54
- vector = V.new(array)
55
- 100.times do
56
- if rand(2) == 0
57
- value, index = rand(10000), rand(size)
58
- array[index] = value
59
- vector = vector.set(index, value)
60
- else
61
- index = rand(array.size)
62
- array.delete_at(index)
63
- vector = vector.delete_at(index)
64
- end
65
- end
66
- 0.upto(array.size) do |i|
67
- array[i].should == vector.send(method, i)
68
- end
69
- end
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,57 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#group_by" do
5
- context "with a block" do
6
- [
7
- [[], []],
8
- [[1], [true => V[1]]],
9
- [[1, 2, 3, 4], [true => V[1, 3], false => V[2, 4]]],
10
- ].each do |values, expected|
11
- context "on #{values.inspect}" do
12
- let(:vector) { V[*values] }
13
-
14
- it "returns #{expected.inspect}" do
15
- vector.group_by(&:odd?).should eql(H[*expected])
16
- vector.should eql(V.new(values)) # make sure it hasn't changed
17
- end
18
- end
19
- end
20
- end
21
-
22
- context "without a block" do
23
- [
24
- [[], []],
25
- [[1], [1 => V[1]]],
26
- [[1, 2, 3, 4], [1 => V[1], 2 => V[2], 3 => V[3], 4 => V[4]]],
27
- ].each do |values, expected|
28
- context "on #{values.inspect}" do
29
- let(:vector) { V[*values] }
30
-
31
- it "returns #{expected.inspect}" do
32
- vector.group_by.should eql(H[*expected])
33
- vector.should eql(V.new(values)) # make sure it hasn't changed
34
- end
35
- end
36
- end
37
- end
38
-
39
- context "on an empty vector" do
40
- it "returns an empty hash" do
41
- V.empty.group_by { |x| x }.should eql(H.empty)
42
- end
43
- end
44
-
45
- it "returns a hash without default proc" do
46
- V[1,2,3].group_by { |x| x }.default_proc.should be_nil
47
- end
48
-
49
- context "from a subclass" do
50
- it "returns an Hash whose values are instances of the subclass" do
51
- subclass = Class.new(Immutable::Vector)
52
- instance = subclass.new([1, 'string', :symbol])
53
- instance.group_by { |x| x.class }.values.each { |v| v.class.should be(subclass) }
54
- end
55
- end
56
- end
57
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- [:include?, :member?].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], "A", false],
8
- [[], nil, false],
9
- [["A"], "A", true],
10
- [["A"], "B", false],
11
- [["A"], nil, false],
12
- [["A", "B", nil], "A", true],
13
- [["A", "B", nil], "B", true],
14
- [["A", "B", nil], nil, true],
15
- [["A", "B", nil], "C", false],
16
- [["A", "B", false], false, true],
17
- [[2], 2, true],
18
- [[2], 2.0, true],
19
- [[2.0], 2.0, true],
20
- [[2.0], 2, true],
21
- ].each do |values, item, expected|
22
- describe "on #{values.inspect}" do
23
- it "returns #{expected.inspect}" do
24
- V[*values].send(method, item).should == expected
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,68 +0,0 @@
1
- require "spec_helper"
2
- require 'pry'
3
-
4
- describe Immutable::Vector do
5
- describe "#insert" do
6
- let(:original) { V[1, 2, 3] }
7
-
8
- it "can add items at the beginning of a vector" do
9
- vector = original.insert(0, :a, :b)
10
- vector.size.should be(5)
11
- vector.at(0).should be(:a)
12
- vector.at(2).should be(1)
13
- end
14
-
15
- it "can add items in the middle of a vector" do
16
- vector = original.insert(1, :a, :b, :c)
17
- vector.size.should be(6)
18
- vector.to_a.should == [1, :a, :b, :c, 2, 3]
19
- end
20
-
21
- it "can add items at the end of a vector" do
22
- vector = original.insert(3, :a, :b, :c)
23
- vector.size.should be(6)
24
- vector.to_a.should == [1, 2, 3, :a, :b, :c]
25
- end
26
-
27
- it "can add items past the end of a vector" do
28
- vector = original.insert(6, :a, :b)
29
- vector.size.should be(8)
30
- vector.to_a.should == [1, 2, 3, nil, nil, nil, :a, :b]
31
- end
32
-
33
- it "accepts a negative index, which counts back from the end of the vector" do
34
- vector = original.insert(-2, :a)
35
- vector.size.should be(4)
36
- vector.to_a.should == [1, :a, 2, 3]
37
- end
38
-
39
- it "raises IndexError if a negative index is too great" do
40
- expect { original.insert(-4, :a) }.to raise_error(IndexError)
41
- end
42
-
43
- it "works when adding an item past boundary when vector trie needs to deepen" do
44
- vector = original.insert(32, :a, :b)
45
- vector.size.should == 34
46
- vector.to_a.size.should == 34
47
- end
48
-
49
- it "works when adding to an empty Vector" do
50
- V.empty.insert(0, :a).should eql(V[:a])
51
- end
52
-
53
- it "has the right size and contents after many insertions" do
54
- array = (1..4000).to_a # we use an Array as standard of correctness
55
- vector = Immutable::Vector.new(array)
56
- 100.times do
57
- items = rand(10).times.map { rand(10000) }
58
- index = rand(vector.size)
59
- vector = vector.insert(index, *items)
60
- array.insert(index, *items)
61
- vector.size.should == array.size
62
- ary = vector.to_a
63
- ary.size.should == vector.size
64
- ary.should eql(array)
65
- end
66
- end
67
- end
68
- end
@@ -1,49 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- let(:vector) { V[*values] }
5
-
6
- describe "#inspect" do
7
- let(:inspect) { vector.inspect }
8
-
9
- shared_examples "checking output" do
10
- it "returns its contents as a programmer-readable string" do
11
- expect(inspect).to eq(output)
12
- end
13
-
14
- it "returns a string which can be eval'd to get back an equivalent vector" do
15
- expect(eval(inspect)).to eql(vector)
16
- end
17
- end
18
-
19
- context "with an empty array" do
20
- let(:output) { "Immutable::Vector[]" }
21
- let(:values) { [] }
22
-
23
- include_examples "checking output"
24
- end
25
-
26
- context "with a single item array" do
27
- let(:output) { "Immutable::Vector[\"A\"]" }
28
- let(:values) { %w[A] }
29
-
30
- include_examples "checking output"
31
- end
32
-
33
- context "with a multi-item array" do
34
- let(:output) { "Immutable::Vector[\"A\", \"B\"]" }
35
- let(:values) { %w[A B] }
36
-
37
- include_examples "checking output"
38
- end
39
-
40
- context "from a subclass" do
41
- MyVector = Class.new(Immutable::Vector)
42
- let(:vector) { MyVector.new(values) }
43
- let(:output) { "MyVector[1, 2]" }
44
- let(:values) { [1, 2] }
45
-
46
- include_examples "checking output"
47
- end
48
- end
49
- end
@@ -1,58 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#join" do
5
- context "with a separator" do
6
- [
7
- [[], ""],
8
- [["A"], "A"],
9
- [[DeterministicHash.new("A", 1), DeterministicHash.new("B", 2), DeterministicHash.new("C", 3)], "A|B|C"]
10
- ].each do |values, expected|
11
- describe "on #{values.inspect}" do
12
- let(:vector) { V[*values] }
13
-
14
- it "preserves the original" do
15
- vector.join("|")
16
- vector.should eql(V[*values])
17
- end
18
-
19
- it "returns #{expected.inspect}" do
20
- vector.join("|").should == expected
21
- end
22
- end
23
- end
24
- end
25
-
26
- context "without a separator" do
27
- [
28
- [[], ""],
29
- [["A"], "A"],
30
- [[DeterministicHash.new("A", 1), DeterministicHash.new("B", 2), DeterministicHash.new("C", 3)], "ABC"]
31
- ].each do |values, expected|
32
- describe "on #{values.inspect}" do
33
- let(:vector) { V[*values] }
34
-
35
- it "preserves the original" do
36
- vector.join
37
- vector.should eql(V[*values])
38
- end
39
-
40
- it "returns #{expected.inspect}" do
41
- vector.join.should == expected
42
- end
43
- end
44
- end
45
- end
46
-
47
- context "without a separator (with global default separator set)" do
48
- before { $, = '**' }
49
- after { $, = nil }
50
-
51
- describe 'on ["A", "B", "C"]' do
52
- it 'returns "A**B**C"' do
53
- V["A", "B", "C"].join.should == "A**B**C"
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,45 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- let(:vector) { V[*values] }
5
-
6
- describe "#last" do
7
- let(:last) { vector.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 vector" do
16
- let(:last_item) { nil }
17
- let(:values) { [] }
18
-
19
- include_examples "checking values"
20
- end
21
-
22
- context "with a single item vector" 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 vector" do
30
- let(:last_item) { "B" }
31
- let(:values) { %w[A B] }
32
-
33
- include_examples "checking values"
34
- end
35
-
36
- [31, 32, 33, 1023, 1024, 1025].each do |size|
37
- context "with a #{size}-item vector" do
38
- let(:last_item) { size }
39
- let(:values) { (1..size).to_a }
40
-
41
- include_examples "checking values"
42
- end
43
- end
44
- end
45
- end
@@ -1,45 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- let(:vector) { V[*values] }
5
-
6
- describe "#length" do
7
- let(:length) { vector.length }
8
-
9
- shared_examples "checking size" do
10
- it "returns the values" do
11
- expect(length).to eq(size)
12
- end
13
- end
14
-
15
- context "with an empty vector" do
16
- let(:values) { [] }
17
- let(:size) { 0 }
18
-
19
- include_examples "checking size"
20
- end
21
-
22
- context "with a single item vector" do
23
- let(:values) { %w[A] }
24
- let(:size) { 1 }
25
-
26
- include_examples "checking size"
27
- end
28
-
29
- context "with a multi-item vector" do
30
- let(:values) { %w[A B] }
31
- let(:size) { 2 }
32
-
33
- include_examples "checking size"
34
- end
35
-
36
- [31, 32, 33, 1023, 1024, 1025].each do |size|
37
- context "with a #{size}-item vector" do
38
- let(:values) { (1..size).to_a }
39
- let(:size) { size }
40
-
41
- include_examples "checking size"
42
- end
43
- end
44
- end
45
- end
@@ -1,65 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- let(:vector) { V[*values] }
5
-
6
- describe "#<<" do
7
- let(:ltlt) { vector << added_value }
8
-
9
- shared_examples "checking adding values" do
10
- let(:added_vector) { V[*added_values] }
11
-
12
- it "preserves the original" do
13
- original = vector
14
- vector << added_value
15
- expect(original).to eq(vector)
16
- end
17
-
18
- it "ltlts the item to the vector" do
19
- expect(ltlt).to eq(added_vector)
20
- end
21
- end
22
-
23
- context "with a empty array adding a single item" do
24
- let(:values) { [] }
25
- let(:added_value) { "A" }
26
- let(:added_values) { ["A"] }
27
-
28
- include_examples "checking adding values"
29
- end
30
-
31
- context "with a single-item array adding a different item" do
32
- let(:values) { ["A"] }
33
- let(:added_value) { "B" }
34
- let(:added_values) { %w[A B] }
35
-
36
- include_examples "checking adding values"
37
- end
38
-
39
- context "with a single-item array adding a duplicate item" do
40
- let(:values) { ["A"] }
41
- let(:added_value) { "A" }
42
- let(:added_values) { %w[A A] }
43
-
44
- include_examples "checking adding values"
45
- end
46
-
47
- [31, 32, 33, 1023, 1024, 1025].each do |size|
48
- context "with a #{size}-item vector adding a different item" do
49
- let(:values) { (1..size).to_a }
50
- let(:added_value) { size+1 }
51
- let(:added_values) { (1..(size+1)).to_a }
52
-
53
- include_examples "checking adding values"
54
- end
55
- end
56
-
57
- context "from a subclass" do
58
- it "returns an instance of the subclass" do
59
- subclass = Class.new(Immutable::Vector)
60
- instance = subclass[1,2,3]
61
- (instance << 4).class.should be(subclass)
62
- end
63
- end
64
- end
65
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- [:map, :collect].each do |method|
5
- describe "##{method}" do
6
- context "when empty" do
7
- let(:vector) { V.empty }
8
-
9
- it "returns self" do
10
- vector.send(method) {}.should equal(vector)
11
- end
12
- end
13
-
14
- context "when not empty" do
15
- let(:vector) { V["A", "B", "C"] }
16
-
17
- context "with a block" do
18
- it "preserves the original values" do
19
- vector.send(method, &:downcase)
20
- vector.should eql(V["A", "B", "C"])
21
- end
22
-
23
- it "returns a new vector with the mapped values" do
24
- vector.send(method, &:downcase).should eql(V["a", "b", "c"])
25
- end
26
- end
27
-
28
- context "with no block" do
29
- it "returns an Enumerator" do
30
- vector.send(method).class.should be(Enumerator)
31
- vector.send(method).each(&:downcase).should eql(V['a', 'b', 'c'])
32
- end
33
- end
34
- end
35
-
36
- context "from a subclass" do
37
- it "returns an instance of the subclass" do
38
- subclass = Class.new(Immutable::Vector)
39
- instance = subclass[1,2,3]
40
- instance.map { |x| x + 1 }.class.should be(subclass)
41
- end
42
- end
43
-
44
- context "on a large vector" do
45
- it "works" do
46
- V.new(1..2000).map { |x| x * 2 }.should eql(V.new((1..2000).map { |x| x * 2}))
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,31 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector 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 'vector = Immutable::Vector[5, 10, 15]; $stdout.write(Marshal.dump(vector))'|
10
- end
11
-
12
- let(:reloaded_vector) do
13
- IO.popen(child_cmd, "r+") do |child|
14
- reloaded_vector = Marshal.load(child)
15
- child.close
16
- reloaded_vector
17
- end
18
- end
19
-
20
- it "can survive dumping and loading into a new process" do
21
- expect(reloaded_vector).to eql(V[5, 10, 15])
22
- end
23
-
24
- it "is still possible to find items by index after loading" do
25
- expect(reloaded_vector[0]).to eq(5)
26
- expect(reloaded_vector[1]).to eq(10)
27
- expect(reloaded_vector[2]).to eq(15)
28
- expect(reloaded_vector.size).to eq(3)
29
- end
30
- end
31
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector 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
- it "returns #{expected.inspect}" do
13
- V[*values].max { |maximum, item| maximum.length <=> item.length }.should == expected
14
- end
15
- end
16
- end
17
- end
18
-
19
- context "without a block" do
20
- [
21
- [[], nil],
22
- [["A"], "A"],
23
- [%w[Ichi Ni San], "San"],
24
- ].each do |values, expected|
25
- describe "on #{values.inspect}" do
26
- it "returns #{expected.inspect}" do
27
- V[*values].max.should == expected
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#min" do
5
- context "with a block" do
6
- [
7
- [[], nil],
8
- [["A"], "A"],
9
- [%w[Ichi Ni San], "Ni"],
10
- ].each do |values, expected|
11
- describe "on #{values.inspect}" do
12
- it "returns #{expected.inspect}" do
13
- V[*values].min { |minimum, item| minimum.length <=> item.length }.should == expected
14
- end
15
- end
16
- end
17
- end
18
-
19
- context "without a block" do
20
- [
21
- [[], nil],
22
- [["A"], "A"],
23
- [%w[Ichi Ni San], "Ichi"],
24
- ].each do |values, expected|
25
- describe "on #{values.inspect}" do
26
- it "returns #{expected.inspect}" do
27
- V[*values].min.should == expected
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,47 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#*" do
5
- let(:vector) { V[1, 2, 3] }
6
-
7
- context "with a String argument" do
8
- it "acts just like #join" do
9
- (vector * 'boo').should eql(vector.join('boo'))
10
- end
11
- end
12
-
13
- context "with an Integer argument" do
14
- it "concatenates n copies of the array" do
15
- (vector * 0).should eql(V.empty)
16
- (vector * 1).should eql(vector)
17
- (vector * 2).should eql(V[1,2,3,1,2,3])
18
- (vector * 3).should eql(V[1,2,3,1,2,3,1,2,3])
19
- end
20
-
21
- it "raises an ArgumentError if integer is negative" do
22
- -> { vector * -1 }.should raise_error(ArgumentError)
23
- end
24
-
25
- it "works on large vectors" do
26
- array = (1..50).to_a
27
- (V.new(array) * 25).should eql(V.new(array * 25))
28
- end
29
- end
30
-
31
- context "with a subclass of Vector" do
32
- it "returns an instance of the subclass" do
33
- subclass = Class.new(Immutable::Vector)
34
- instance = subclass.new([1,2,3])
35
- (instance * 10).class.should be(subclass)
36
- end
37
- end
38
-
39
- it "raises a TypeError if passed nil" do
40
- -> { vector * nil }.should raise_error(TypeError)
41
- end
42
-
43
- it "raises an ArgumentError if passed no arguments" do
44
- -> { vector.* }.should raise_error(ArgumentError)
45
- end
46
- end
47
- end