immutable-ruby 0.0.1 → 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 (345) hide show
  1. checksums.yaml +5 -5
  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 +50 -15
  6. data/lib/immutable/enumerable.rb +19 -10
  7. data/lib/immutable/hash.rb +128 -28
  8. data/lib/immutable/list.rb +48 -48
  9. data/lib/immutable/nested.rb +10 -7
  10. data/lib/immutable/set.rb +30 -30
  11. data/lib/immutable/sorted_set.rb +77 -37
  12. data/lib/immutable/trie.rb +21 -29
  13. data/lib/immutable/vector.rb +61 -46
  14. data/lib/immutable/version.rb +1 -1
  15. data/lib/immutable.rb +9 -9
  16. metadata +44 -687
  17. data/spec/fixtures/io_spec.txt +0 -3
  18. data/spec/lib/immutable/core_ext/array_spec.rb +0 -13
  19. data/spec/lib/immutable/core_ext/enumerable_spec.rb +0 -29
  20. data/spec/lib/immutable/core_ext/io_spec.rb +0 -28
  21. data/spec/lib/immutable/deque/clear_spec.rb +0 -33
  22. data/spec/lib/immutable/deque/construction_spec.rb +0 -29
  23. data/spec/lib/immutable/deque/copying_spec.rb +0 -19
  24. data/spec/lib/immutable/deque/dequeue_spec.rb +0 -34
  25. data/spec/lib/immutable/deque/empty_spec.rb +0 -39
  26. data/spec/lib/immutable/deque/enqueue_spec.rb +0 -27
  27. data/spec/lib/immutable/deque/first_spec.rb +0 -17
  28. data/spec/lib/immutable/deque/inspect_spec.rb +0 -23
  29. data/spec/lib/immutable/deque/last_spec.rb +0 -17
  30. data/spec/lib/immutable/deque/marshal_spec.rb +0 -33
  31. data/spec/lib/immutable/deque/new_spec.rb +0 -43
  32. data/spec/lib/immutable/deque/pop_spec.rb +0 -36
  33. data/spec/lib/immutable/deque/pretty_print_spec.rb +0 -23
  34. data/spec/lib/immutable/deque/push_spec.rb +0 -36
  35. data/spec/lib/immutable/deque/random_modification_spec.rb +0 -33
  36. data/spec/lib/immutable/deque/shift_spec.rb +0 -29
  37. data/spec/lib/immutable/deque/size_spec.rb +0 -19
  38. data/spec/lib/immutable/deque/to_a_spec.rb +0 -26
  39. data/spec/lib/immutable/deque/to_ary_spec.rb +0 -35
  40. data/spec/lib/immutable/deque/to_list_spec.rb +0 -24
  41. data/spec/lib/immutable/deque/unshift_spec.rb +0 -30
  42. data/spec/lib/immutable/hash/all_spec.rb +0 -53
  43. data/spec/lib/immutable/hash/any_spec.rb +0 -53
  44. data/spec/lib/immutable/hash/assoc_spec.rb +0 -51
  45. data/spec/lib/immutable/hash/clear_spec.rb +0 -42
  46. data/spec/lib/immutable/hash/construction_spec.rb +0 -38
  47. data/spec/lib/immutable/hash/copying_spec.rb +0 -13
  48. data/spec/lib/immutable/hash/default_proc_spec.rb +0 -72
  49. data/spec/lib/immutable/hash/delete_spec.rb +0 -39
  50. data/spec/lib/immutable/hash/each_spec.rb +0 -77
  51. data/spec/lib/immutable/hash/each_with_index_spec.rb +0 -29
  52. data/spec/lib/immutable/hash/empty_spec.rb +0 -43
  53. data/spec/lib/immutable/hash/eql_spec.rb +0 -69
  54. data/spec/lib/immutable/hash/except_spec.rb +0 -42
  55. data/spec/lib/immutable/hash/fetch_spec.rb +0 -57
  56. data/spec/lib/immutable/hash/find_spec.rb +0 -43
  57. data/spec/lib/immutable/hash/flat_map_spec.rb +0 -35
  58. data/spec/lib/immutable/hash/flatten_spec.rb +0 -98
  59. data/spec/lib/immutable/hash/get_spec.rb +0 -79
  60. data/spec/lib/immutable/hash/has_key_spec.rb +0 -31
  61. data/spec/lib/immutable/hash/has_value_spec.rb +0 -27
  62. data/spec/lib/immutable/hash/hash_spec.rb +0 -29
  63. data/spec/lib/immutable/hash/inspect_spec.rb +0 -30
  64. data/spec/lib/immutable/hash/invert_spec.rb +0 -30
  65. data/spec/lib/immutable/hash/key_spec.rb +0 -27
  66. data/spec/lib/immutable/hash/keys_spec.rb +0 -15
  67. data/spec/lib/immutable/hash/map_spec.rb +0 -45
  68. data/spec/lib/immutable/hash/marshal_spec.rb +0 -28
  69. data/spec/lib/immutable/hash/merge_spec.rb +0 -82
  70. data/spec/lib/immutable/hash/min_max_spec.rb +0 -45
  71. data/spec/lib/immutable/hash/new_spec.rb +0 -70
  72. data/spec/lib/immutable/hash/none_spec.rb +0 -48
  73. data/spec/lib/immutable/hash/partition_spec.rb +0 -35
  74. data/spec/lib/immutable/hash/pretty_print_spec.rb +0 -34
  75. data/spec/lib/immutable/hash/put_spec.rb +0 -102
  76. data/spec/lib/immutable/hash/reduce_spec.rb +0 -35
  77. data/spec/lib/immutable/hash/reject_spec.rb +0 -61
  78. data/spec/lib/immutable/hash/reverse_each_spec.rb +0 -27
  79. data/spec/lib/immutable/hash/sample_spec.rb +0 -13
  80. data/spec/lib/immutable/hash/select_spec.rb +0 -57
  81. data/spec/lib/immutable/hash/size_spec.rb +0 -51
  82. data/spec/lib/immutable/hash/slice_spec.rb +0 -44
  83. data/spec/lib/immutable/hash/sort_spec.rb +0 -26
  84. data/spec/lib/immutable/hash/store_spec.rb +0 -75
  85. data/spec/lib/immutable/hash/take_spec.rb +0 -35
  86. data/spec/lib/immutable/hash/to_a_spec.rb +0 -13
  87. data/spec/lib/immutable/hash/to_hash_spec.rb +0 -21
  88. data/spec/lib/immutable/hash/update_in_spec.rb +0 -79
  89. data/spec/lib/immutable/hash/values_at_spec.rb +0 -13
  90. data/spec/lib/immutable/hash/values_spec.rb +0 -23
  91. data/spec/lib/immutable/list/add_spec.rb +0 -25
  92. data/spec/lib/immutable/list/all_spec.rb +0 -57
  93. data/spec/lib/immutable/list/any_spec.rb +0 -49
  94. data/spec/lib/immutable/list/append_spec.rb +0 -38
  95. data/spec/lib/immutable/list/at_spec.rb +0 -29
  96. data/spec/lib/immutable/list/break_spec.rb +0 -69
  97. data/spec/lib/immutable/list/cadr_spec.rb +0 -38
  98. data/spec/lib/immutable/list/chunk_spec.rb +0 -28
  99. data/spec/lib/immutable/list/clear_spec.rb +0 -24
  100. data/spec/lib/immutable/list/combination_spec.rb +0 -33
  101. data/spec/lib/immutable/list/compact_spec.rb +0 -34
  102. data/spec/lib/immutable/list/compare_spec.rb +0 -30
  103. data/spec/lib/immutable/list/cons_spec.rb +0 -25
  104. data/spec/lib/immutable/list/construction_spec.rb +0 -110
  105. data/spec/lib/immutable/list/copying_spec.rb +0 -19
  106. data/spec/lib/immutable/list/count_spec.rb +0 -36
  107. data/spec/lib/immutable/list/cycle_spec.rb +0 -28
  108. data/spec/lib/immutable/list/delete_at_spec.rb +0 -18
  109. data/spec/lib/immutable/list/delete_spec.rb +0 -16
  110. data/spec/lib/immutable/list/drop_spec.rb +0 -30
  111. data/spec/lib/immutable/list/drop_while_spec.rb +0 -38
  112. data/spec/lib/immutable/list/each_slice_spec.rb +0 -51
  113. data/spec/lib/immutable/list/each_spec.rb +0 -40
  114. data/spec/lib/immutable/list/each_with_index_spec.rb +0 -28
  115. data/spec/lib/immutable/list/empty_spec.rb +0 -23
  116. data/spec/lib/immutable/list/eql_spec.rb +0 -61
  117. data/spec/lib/immutable/list/fill_spec.rb +0 -49
  118. data/spec/lib/immutable/list/find_all_spec.rb +0 -70
  119. data/spec/lib/immutable/list/find_index_spec.rb +0 -35
  120. data/spec/lib/immutable/list/find_spec.rb +0 -42
  121. data/spec/lib/immutable/list/flat_map_spec.rb +0 -51
  122. data/spec/lib/immutable/list/flatten_spec.rb +0 -30
  123. data/spec/lib/immutable/list/grep_spec.rb +0 -46
  124. data/spec/lib/immutable/list/group_by_spec.rb +0 -41
  125. data/spec/lib/immutable/list/hash_spec.rb +0 -21
  126. data/spec/lib/immutable/list/head_spec.rb +0 -19
  127. data/spec/lib/immutable/list/include_spec.rb +0 -35
  128. data/spec/lib/immutable/list/index_spec.rb +0 -33
  129. data/spec/lib/immutable/list/indices_spec.rb +0 -61
  130. data/spec/lib/immutable/list/init_spec.rb +0 -28
  131. data/spec/lib/immutable/list/inits_spec.rb +0 -28
  132. data/spec/lib/immutable/list/insert_spec.rb +0 -46
  133. data/spec/lib/immutable/list/inspect_spec.rb +0 -29
  134. data/spec/lib/immutable/list/intersperse_spec.rb +0 -28
  135. data/spec/lib/immutable/list/join_spec.rb +0 -63
  136. data/spec/lib/immutable/list/last_spec.rb +0 -23
  137. data/spec/lib/immutable/list/ltlt_spec.rb +0 -19
  138. data/spec/lib/immutable/list/map_spec.rb +0 -45
  139. data/spec/lib/immutable/list/maximum_spec.rb +0 -39
  140. data/spec/lib/immutable/list/merge_by_spec.rb +0 -51
  141. data/spec/lib/immutable/list/merge_spec.rb +0 -59
  142. data/spec/lib/immutable/list/minimum_spec.rb +0 -39
  143. data/spec/lib/immutable/list/multithreading_spec.rb +0 -47
  144. data/spec/lib/immutable/list/none_spec.rb +0 -47
  145. data/spec/lib/immutable/list/one_spec.rb +0 -49
  146. data/spec/lib/immutable/list/partition_spec.rb +0 -115
  147. data/spec/lib/immutable/list/permutation_spec.rb +0 -55
  148. data/spec/lib/immutable/list/pop_spec.rb +0 -25
  149. data/spec/lib/immutable/list/product_spec.rb +0 -23
  150. data/spec/lib/immutable/list/reduce_spec.rb +0 -53
  151. data/spec/lib/immutable/list/reject_spec.rb +0 -45
  152. data/spec/lib/immutable/list/reverse_spec.rb +0 -34
  153. data/spec/lib/immutable/list/rotate_spec.rb +0 -36
  154. data/spec/lib/immutable/list/sample_spec.rb +0 -13
  155. data/spec/lib/immutable/list/select_spec.rb +0 -70
  156. data/spec/lib/immutable/list/size_spec.rb +0 -25
  157. data/spec/lib/immutable/list/slice_spec.rb +0 -229
  158. data/spec/lib/immutable/list/sorting_spec.rb +0 -46
  159. data/spec/lib/immutable/list/span_spec.rb +0 -76
  160. data/spec/lib/immutable/list/split_at_spec.rb +0 -43
  161. data/spec/lib/immutable/list/subsequences_spec.rb +0 -23
  162. data/spec/lib/immutable/list/sum_spec.rb +0 -23
  163. data/spec/lib/immutable/list/tail_spec.rb +0 -30
  164. data/spec/lib/immutable/list/tails_spec.rb +0 -28
  165. data/spec/lib/immutable/list/take_spec.rb +0 -30
  166. data/spec/lib/immutable/list/take_while_spec.rb +0 -46
  167. data/spec/lib/immutable/list/to_a_spec.rb +0 -39
  168. data/spec/lib/immutable/list/to_ary_spec.rb +0 -41
  169. data/spec/lib/immutable/list/to_list_spec.rb +0 -19
  170. data/spec/lib/immutable/list/to_set_spec.rb +0 -17
  171. data/spec/lib/immutable/list/transpose_spec.rb +0 -19
  172. data/spec/lib/immutable/list/union_spec.rb +0 -31
  173. data/spec/lib/immutable/list/uniq_spec.rb +0 -35
  174. data/spec/lib/immutable/list/zip_spec.rb +0 -23
  175. data/spec/lib/immutable/nested/construction_spec.rb +0 -95
  176. data/spec/lib/immutable/set/add_spec.rb +0 -75
  177. data/spec/lib/immutable/set/all_spec.rb +0 -51
  178. data/spec/lib/immutable/set/any_spec.rb +0 -51
  179. data/spec/lib/immutable/set/clear_spec.rb +0 -33
  180. data/spec/lib/immutable/set/compact_spec.rb +0 -30
  181. data/spec/lib/immutable/set/construction_spec.rb +0 -18
  182. data/spec/lib/immutable/set/copying_spec.rb +0 -13
  183. data/spec/lib/immutable/set/count_spec.rb +0 -36
  184. data/spec/lib/immutable/set/delete_spec.rb +0 -71
  185. data/spec/lib/immutable/set/difference_spec.rb +0 -49
  186. data/spec/lib/immutable/set/disjoint_spec.rb +0 -25
  187. data/spec/lib/immutable/set/each_spec.rb +0 -45
  188. data/spec/lib/immutable/set/empty_spec.rb +0 -44
  189. data/spec/lib/immutable/set/eqeq_spec.rb +0 -103
  190. data/spec/lib/immutable/set/eql_spec.rb +0 -109
  191. data/spec/lib/immutable/set/exclusion_spec.rb +0 -47
  192. data/spec/lib/immutable/set/find_spec.rb +0 -35
  193. data/spec/lib/immutable/set/first_spec.rb +0 -28
  194. data/spec/lib/immutable/set/flatten_spec.rb +0 -46
  195. data/spec/lib/immutable/set/grep_spec.rb +0 -57
  196. data/spec/lib/immutable/set/group_by_spec.rb +0 -59
  197. data/spec/lib/immutable/set/hash_spec.rb +0 -22
  198. data/spec/lib/immutable/set/include_spec.rb +0 -60
  199. data/spec/lib/immutable/set/inspect_spec.rb +0 -47
  200. data/spec/lib/immutable/set/intersect_spec.rb +0 -25
  201. data/spec/lib/immutable/set/intersection_spec.rb +0 -52
  202. data/spec/lib/immutable/set/join_spec.rb +0 -64
  203. data/spec/lib/immutable/set/map_spec.rb +0 -59
  204. data/spec/lib/immutable/set/marshal_spec.rb +0 -28
  205. data/spec/lib/immutable/set/maximum_spec.rb +0 -36
  206. data/spec/lib/immutable/set/minimum_spec.rb +0 -36
  207. data/spec/lib/immutable/set/new_spec.rb +0 -53
  208. data/spec/lib/immutable/set/none_spec.rb +0 -47
  209. data/spec/lib/immutable/set/one_spec.rb +0 -47
  210. data/spec/lib/immutable/set/partition_spec.rb +0 -52
  211. data/spec/lib/immutable/set/product_spec.rb +0 -23
  212. data/spec/lib/immutable/set/reduce_spec.rb +0 -55
  213. data/spec/lib/immutable/set/reject_spec.rb +0 -50
  214. data/spec/lib/immutable/set/reverse_each_spec.rb +0 -38
  215. data/spec/lib/immutable/set/sample_spec.rb +0 -13
  216. data/spec/lib/immutable/set/select_spec.rb +0 -73
  217. data/spec/lib/immutable/set/size_spec.rb +0 -17
  218. data/spec/lib/immutable/set/sorting_spec.rb +0 -59
  219. data/spec/lib/immutable/set/subset_spec.rb +0 -51
  220. data/spec/lib/immutable/set/sum_spec.rb +0 -23
  221. data/spec/lib/immutable/set/superset_spec.rb +0 -51
  222. data/spec/lib/immutable/set/to_a_spec.rb +0 -30
  223. data/spec/lib/immutable/set/to_list_spec.rb +0 -35
  224. data/spec/lib/immutable/set/to_set_spec.rb +0 -19
  225. data/spec/lib/immutable/set/union_spec.rb +0 -63
  226. data/spec/lib/immutable/sorted_set/above_spec.rb +0 -51
  227. data/spec/lib/immutable/sorted_set/add_spec.rb +0 -62
  228. data/spec/lib/immutable/sorted_set/at_spec.rb +0 -24
  229. data/spec/lib/immutable/sorted_set/below_spec.rb +0 -51
  230. data/spec/lib/immutable/sorted_set/between_spec.rb +0 -51
  231. data/spec/lib/immutable/sorted_set/clear_spec.rb +0 -43
  232. data/spec/lib/immutable/sorted_set/copying_spec.rb +0 -20
  233. data/spec/lib/immutable/sorted_set/delete_at_spec.rb +0 -18
  234. data/spec/lib/immutable/sorted_set/delete_spec.rb +0 -89
  235. data/spec/lib/immutable/sorted_set/difference_spec.rb +0 -22
  236. data/spec/lib/immutable/sorted_set/disjoint_spec.rb +0 -25
  237. data/spec/lib/immutable/sorted_set/drop_spec.rb +0 -55
  238. data/spec/lib/immutable/sorted_set/drop_while_spec.rb +0 -34
  239. data/spec/lib/immutable/sorted_set/each_spec.rb +0 -28
  240. data/spec/lib/immutable/sorted_set/empty_spec.rb +0 -34
  241. data/spec/lib/immutable/sorted_set/eql_spec.rb +0 -120
  242. data/spec/lib/immutable/sorted_set/exclusion_spec.rb +0 -22
  243. data/spec/lib/immutable/sorted_set/fetch_spec.rb +0 -64
  244. data/spec/lib/immutable/sorted_set/find_index_spec.rb +0 -40
  245. data/spec/lib/immutable/sorted_set/first_spec.rb +0 -18
  246. data/spec/lib/immutable/sorted_set/from_spec.rb +0 -51
  247. data/spec/lib/immutable/sorted_set/group_by_spec.rb +0 -57
  248. data/spec/lib/immutable/sorted_set/include_spec.rb +0 -23
  249. data/spec/lib/immutable/sorted_set/inspect_spec.rb +0 -37
  250. data/spec/lib/immutable/sorted_set/intersect_spec.rb +0 -25
  251. data/spec/lib/immutable/sorted_set/intersection_spec.rb +0 -28
  252. data/spec/lib/immutable/sorted_set/last_spec.rb +0 -36
  253. data/spec/lib/immutable/sorted_set/map_spec.rb +0 -43
  254. data/spec/lib/immutable/sorted_set/marshal_spec.rb +0 -36
  255. data/spec/lib/immutable/sorted_set/maximum_spec.rb +0 -36
  256. data/spec/lib/immutable/sorted_set/minimum_spec.rb +0 -19
  257. data/spec/lib/immutable/sorted_set/new_spec.rb +0 -71
  258. data/spec/lib/immutable/sorted_set/reverse_each_spec.rb +0 -28
  259. data/spec/lib/immutable/sorted_set/sample_spec.rb +0 -13
  260. data/spec/lib/immutable/sorted_set/select_spec.rb +0 -61
  261. data/spec/lib/immutable/sorted_set/size_spec.rb +0 -17
  262. data/spec/lib/immutable/sorted_set/slice_spec.rb +0 -256
  263. data/spec/lib/immutable/sorted_set/sorting_spec.rb +0 -44
  264. data/spec/lib/immutable/sorted_set/subset_spec.rb +0 -47
  265. data/spec/lib/immutable/sorted_set/superset_spec.rb +0 -47
  266. data/spec/lib/immutable/sorted_set/take_spec.rb +0 -54
  267. data/spec/lib/immutable/sorted_set/take_while_spec.rb +0 -33
  268. data/spec/lib/immutable/sorted_set/to_set_spec.rb +0 -17
  269. data/spec/lib/immutable/sorted_set/union_spec.rb +0 -27
  270. data/spec/lib/immutable/sorted_set/up_to_spec.rb +0 -52
  271. data/spec/lib/immutable/sorted_set/values_at_spec.rb +0 -33
  272. data/spec/lib/immutable/vector/add_spec.rb +0 -67
  273. data/spec/lib/immutable/vector/any_spec.rb +0 -69
  274. data/spec/lib/immutable/vector/assoc_spec.rb +0 -45
  275. data/spec/lib/immutable/vector/bsearch_spec.rb +0 -65
  276. data/spec/lib/immutable/vector/clear_spec.rb +0 -33
  277. data/spec/lib/immutable/vector/combination_spec.rb +0 -81
  278. data/spec/lib/immutable/vector/compact_spec.rb +0 -29
  279. data/spec/lib/immutable/vector/compare_spec.rb +0 -31
  280. data/spec/lib/immutable/vector/concat_spec.rb +0 -34
  281. data/spec/lib/immutable/vector/copying_spec.rb +0 -20
  282. data/spec/lib/immutable/vector/count_spec.rb +0 -17
  283. data/spec/lib/immutable/vector/delete_at_spec.rb +0 -53
  284. data/spec/lib/immutable/vector/delete_spec.rb +0 -30
  285. data/spec/lib/immutable/vector/drop_spec.rb +0 -41
  286. data/spec/lib/immutable/vector/drop_while_spec.rb +0 -54
  287. data/spec/lib/immutable/vector/each_index_spec.rb +0 -40
  288. data/spec/lib/immutable/vector/each_spec.rb +0 -44
  289. data/spec/lib/immutable/vector/each_with_index_spec.rb +0 -39
  290. data/spec/lib/immutable/vector/empty_spec.rb +0 -41
  291. data/spec/lib/immutable/vector/eql_spec.rb +0 -76
  292. data/spec/lib/immutable/vector/fetch_spec.rb +0 -64
  293. data/spec/lib/immutable/vector/fill_spec.rb +0 -88
  294. data/spec/lib/immutable/vector/first_spec.rb +0 -18
  295. data/spec/lib/immutable/vector/flat_map_spec.rb +0 -50
  296. data/spec/lib/immutable/vector/flatten_spec.rb +0 -58
  297. data/spec/lib/immutable/vector/get_spec.rb +0 -74
  298. data/spec/lib/immutable/vector/group_by_spec.rb +0 -57
  299. data/spec/lib/immutable/vector/include_spec.rb +0 -30
  300. data/spec/lib/immutable/vector/insert_spec.rb +0 -68
  301. data/spec/lib/immutable/vector/inspect_spec.rb +0 -49
  302. data/spec/lib/immutable/vector/join_spec.rb +0 -58
  303. data/spec/lib/immutable/vector/last_spec.rb +0 -45
  304. data/spec/lib/immutable/vector/length_spec.rb +0 -45
  305. data/spec/lib/immutable/vector/ltlt_spec.rb +0 -65
  306. data/spec/lib/immutable/vector/map_spec.rb +0 -51
  307. data/spec/lib/immutable/vector/marshal_spec.rb +0 -31
  308. data/spec/lib/immutable/vector/maximum_spec.rb +0 -33
  309. data/spec/lib/immutable/vector/minimum_spec.rb +0 -33
  310. data/spec/lib/immutable/vector/multiply_spec.rb +0 -47
  311. data/spec/lib/immutable/vector/new_spec.rb +0 -50
  312. data/spec/lib/immutable/vector/partition_spec.rb +0 -52
  313. data/spec/lib/immutable/vector/permutation_spec.rb +0 -91
  314. data/spec/lib/immutable/vector/pop_spec.rb +0 -26
  315. data/spec/lib/immutable/vector/product_spec.rb +0 -70
  316. data/spec/lib/immutable/vector/reduce_spec.rb +0 -55
  317. data/spec/lib/immutable/vector/reject_spec.rb +0 -43
  318. data/spec/lib/immutable/vector/repeated_combination_spec.rb +0 -77
  319. data/spec/lib/immutable/vector/repeated_permutation_spec.rb +0 -93
  320. data/spec/lib/immutable/vector/reverse_each_spec.rb +0 -31
  321. data/spec/lib/immutable/vector/reverse_spec.rb +0 -21
  322. data/spec/lib/immutable/vector/rindex_spec.rb +0 -36
  323. data/spec/lib/immutable/vector/rotate_spec.rb +0 -73
  324. data/spec/lib/immutable/vector/sample_spec.rb +0 -13
  325. data/spec/lib/immutable/vector/select_spec.rb +0 -63
  326. data/spec/lib/immutable/vector/set_spec.rb +0 -174
  327. data/spec/lib/immutable/vector/shift_spec.rb +0 -27
  328. data/spec/lib/immutable/vector/shuffle_spec.rb +0 -43
  329. data/spec/lib/immutable/vector/slice_spec.rb +0 -240
  330. data/spec/lib/immutable/vector/sorting_spec.rb +0 -56
  331. data/spec/lib/immutable/vector/sum_spec.rb +0 -17
  332. data/spec/lib/immutable/vector/take_spec.rb +0 -42
  333. data/spec/lib/immutable/vector/take_while_spec.rb +0 -34
  334. data/spec/lib/immutable/vector/to_a_spec.rb +0 -41
  335. data/spec/lib/immutable/vector/to_ary_spec.rb +0 -34
  336. data/spec/lib/immutable/vector/to_list_spec.rb +0 -30
  337. data/spec/lib/immutable/vector/to_set_spec.rb +0 -21
  338. data/spec/lib/immutable/vector/transpose_spec.rb +0 -48
  339. data/spec/lib/immutable/vector/uniq_spec.rb +0 -76
  340. data/spec/lib/immutable/vector/unshift_spec.rb +0 -28
  341. data/spec/lib/immutable/vector/update_in_spec.rb +0 -82
  342. data/spec/lib/immutable/vector/values_at_spec.rb +0 -33
  343. data/spec/lib/immutable/vector/zip_spec.rb +0 -57
  344. data/spec/lib/load_spec.rb +0 -42
  345. data/spec/spec_helper.rb +0 -92
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#to_list" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- context "on #{values.inspect}" do
11
- let(:set) { S[*values] }
12
- let(:list) { set.to_list }
13
-
14
- it "returns a list" do
15
- list.is_a?(Immutable::List).should == true
16
- end
17
-
18
- it "doesn't change the original Set" do
19
- list
20
- set.should eql(S.new(values))
21
- end
22
-
23
- describe "the returned list" do
24
- it "has the correct length" do
25
- list.size.should == values.size
26
- end
27
-
28
- it "contains all values" do
29
- list.to_a.sort.should == values.sort
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,19 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#to_set" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- describe "on #{values.inspect}" do
11
- let(:set) { S[*values] }
12
-
13
- it "returns self" do
14
- set.to_set.should equal(set)
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,63 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:union, :|, :+, :merge].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], [], []],
8
- [["A"], [], ["A"]],
9
- [["A"], ["A"], ["A"]],
10
- [[], ["A"], ["A"]],
11
- [%w[A B C], [], %w[A B C]],
12
- [%w[A B C], %w[A B C], %w[A B C]],
13
- [%w[A B C], %w[X Y Z], %w[A B C X 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
-
19
- it "returns #{expected.inspect}, without changing the original Sets" do
20
- set_a.send(method, set_b).should eql(S[*expected])
21
- set_a.should eql(S.new(a))
22
- set_b.should eql(S.new(b))
23
- end
24
- end
25
-
26
- context "for #{b.inspect} and #{a.inspect}" do
27
- let(:set_a) { S[*a] }
28
- let(:set_b) { S[*b] }
29
-
30
- it "returns #{expected.inspect}, without changing the original Sets" do
31
- set_b.send(method, set_a).should eql(S[*expected])
32
- set_a.should eql(S.new(a))
33
- set_b.should eql(S.new(b))
34
- end
35
- end
36
-
37
- context "when passed a Ruby Array" do
38
- it "returns the expected Set" do
39
- S[*a].send(method, b.freeze).should eql(S[*expected])
40
- S[*b].send(method, a.freeze).should eql(S[*expected])
41
- end
42
- end
43
-
44
- context "from a subclass" do
45
- it "returns an instance of the subclass" do
46
- subclass = Class.new(Immutable::Set)
47
- subclass.new(a).send(method, S.new(b)).class.should be(subclass)
48
- subclass.new(b).send(method, S.new(a)).class.should be(subclass)
49
- end
50
- end
51
- end
52
-
53
- context "when receiving a subset" do
54
- let(:set_a) { S.new(1..300) }
55
- let(:set_b) { S.new(1..200) }
56
-
57
- it "returns self" do
58
- set_a.send(method, set_b).should be(set_a)
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#above" do
5
- context "when called without a block" do
6
- it "returns a sorted set of all items higher than the argument" do
7
- 100.times do
8
- items = rand(100).times.collect { rand(1000) }
9
- set = SS.new(items)
10
- threshold = rand(1000)
11
- result = set.above(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 higher than the argument" do
22
- 100.times do
23
- items = rand(100).times.collect { rand(1000) }
24
- set = SS.new(items)
25
- threshold = rand(1000)
26
- result = []
27
- set.above(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.above(1).should be_empty
38
- SS.empty.above('abc').should be_empty
39
- SS.empty.above(: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).above(100)
46
- result.class.should be(Immutable::SortedSet)
47
- result.should be_empty
48
- end
49
- end
50
- end
51
- end
@@ -1,62 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- let(:sorted_set) { SS["B", "C", "D"] }
5
-
6
- [:add, :<<].each do |method|
7
- describe "##{method}" do
8
- context "with a unique value" do
9
- it "preserves the original" do
10
- sorted_set.send(method, "A")
11
- sorted_set.should eql(SS["B", "C", "D"])
12
- end
13
-
14
- it "returns a copy with the superset of values (in order)" do
15
- sorted_set.send(method, "A").should eql(SS["A", "B", "C", "D"])
16
- end
17
- end
18
-
19
- context "with a duplicate value" do
20
- it "preserves the original values" do
21
- sorted_set.send(method, "C")
22
- sorted_set.should eql(SS["B", "C", "D"])
23
- end
24
-
25
- it "returns self" do
26
- sorted_set.send(method, "C").should equal(sorted_set)
27
- end
28
- end
29
-
30
- context "on a set ordered by a comparator" do
31
- it "inserts the new item in the correct place" do
32
- s = SS.new(['tick', 'pig', 'hippopotamus']) { |str| str.length }
33
- s.add('giraffe').to_a.should == ['pig', 'tick', 'giraffe', 'hippopotamus']
34
- end
35
- end
36
- end
37
- end
38
-
39
- describe "#add?" do
40
- context "with a unique value" do
41
- it "preserves the original" do
42
- sorted_set.add?("A")
43
- sorted_set.should eql(SS["B", "C", "D"])
44
- end
45
-
46
- it "returns a copy with the superset of values" do
47
- sorted_set.add?("A").should eql(SS["A", "B", "C", "D"])
48
- end
49
- end
50
-
51
- context "with a duplicate value" do
52
- it "preserves the original values" do
53
- sorted_set.add?("C")
54
- sorted_set.should eql(SS["B", "C", "D"])
55
- end
56
-
57
- it "returns false" do
58
- sorted_set.add?("C").should equal(false)
59
- end
60
- end
61
- end
62
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#at" do
5
- [
6
- [[], 10, nil],
7
- [["A"], 10, nil],
8
- [%w[A B C], 0, "A"],
9
- [%w[A B C], 1, "B"],
10
- [%w[A B C], 2, "C"],
11
- [%w[A B C], 3, nil],
12
- [%w[A B C], -1, "C"],
13
- [%w[A B C], -2, "B"],
14
- [%w[A B C], -3, "A"],
15
- [%w[A B C], -4, nil]
16
- ].each do |values, number, expected|
17
- describe "#{values.inspect} with #{number}" do
18
- it "returns #{expected.inspect}" do
19
- SS[*values].at(number).should == expected
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#below" do
5
- context "when called without a block" do
6
- it "returns a sorted set of all items lower than the argument" do
7
- 100.times do
8
- items = rand(100).times.collect { rand(1000) }
9
- set = SS.new(items)
10
- threshold = rand(1000)
11
- result = set.below(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 lower than the argument" do
22
- 100.times do
23
- items = rand(100).times.collect { rand(1000) }
24
- set = SS.new(items)
25
- threshold = rand(1000)
26
- result = []
27
- set.below(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.below(1).should be_empty
38
- SS.empty.below('abc').should be_empty
39
- SS.empty.below(:symbol).should be_empty
40
- end
41
- end
42
-
43
- context "with an argument lower than all the values in the set" do
44
- it "returns an empty set" do
45
- result = SS.new(1..100).below(1)
46
- result.class.should be(Immutable::SortedSet)
47
- result.should be_empty
48
- end
49
- end
50
- end
51
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#between" do
5
- context "when called without a block" do
6
- it "returns a sorted set of all items from the first argument to the second" do
7
- 100.times do
8
- items = rand(100).times.collect { rand(1000) }
9
- set = SS.new(items)
10
- from,to = [rand(1000),rand(1000)].sort
11
- result = set.between(from, to)
12
- array = items.select { |x| x >= from && x <= to }.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 lower than the argument" do
22
- 100.times do
23
- items = rand(100).times.collect { rand(1000) }
24
- set = SS.new(items)
25
- from,to = [rand(1000),rand(1000)].sort
26
- result = []
27
- set.between(from, to) { |x| result << x }
28
- array = items.select { |x| x >= from && x <= to }.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.between(1, 2).should be_empty
38
- SS.empty.between('abc', 'def').should be_empty
39
- SS.empty.between(:symbol, :another).should be_empty
40
- end
41
- end
42
-
43
- context "with a 'to' argument lower than the 'from' argument" do
44
- it "returns an empty set" do
45
- result = SS.new(1..100).between(6, 5)
46
- result.class.should be(Immutable::SortedSet)
47
- result.should be_empty
48
- end
49
- end
50
- end
51
- end
@@ -1,43 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#clear" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- context "on #{values}" do
11
- let(:sorted_set) { SS[*values] }
12
-
13
- it "preserves the original" do
14
- sorted_set.clear
15
- sorted_set.should eql(SS[*values])
16
- end
17
-
18
- it "returns an empty set" do
19
- sorted_set.clear.should equal(Immutable::EmptySortedSet)
20
- sorted_set.clear.should be_empty
21
- end
22
- end
23
- end
24
-
25
- context "from a subclass" do
26
- it "returns an empty instance of the subclass" do
27
- subclass = Class.new(Immutable::SortedSet)
28
- instance = subclass.new([:a, :b, :c, :d])
29
- instance.clear.class.should be(subclass)
30
- instance.clear.should be_empty
31
- end
32
- end
33
-
34
- context "with a comparator" do
35
- let(:sorted_set) { SS.new([1, 2, 3]) { |x| -x } }
36
- it "returns an empty instance with same comparator" do
37
- e = sorted_set.clear
38
- e.should be_empty
39
- e.add(4).add(5).add(6).to_a.should == [6, 5, 4]
40
- end
41
- end
42
- end
43
- end
@@ -1,20 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- [:dup, :clone].each do |method|
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- (1..32),
10
- ].each do |values|
11
- describe "on #{values.inspect}" do
12
- let(:sorted_set) { SS[*values] }
13
-
14
- it "returns self" do
15
- sorted_set.send(method).should equal(sorted_set)
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,18 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#delete_at" do
5
- let(:sorted_set) { SS[1,2,3,4,5] }
6
-
7
- it "removes the element at the specified index" do
8
- sorted_set.delete_at(0).should eql(SS[2,3,4,5])
9
- sorted_set.delete_at(2).should eql(SS[1,2,4,5])
10
- sorted_set.delete_at(-1).should eql(SS[1,2,3,4])
11
- end
12
-
13
- it "makes no modification if the index is out of range" do
14
- sorted_set.delete_at(5).should eql(sorted_set)
15
- sorted_set.delete_at(-6).should eql(sorted_set)
16
- end
17
- end
18
- end
@@ -1,89 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- let(:sorted_set) { SS["A", "B", "C"] }
5
-
6
- describe "#delete" do
7
- context "on an empty set" do
8
- it "returns an empty set" do
9
- SS.empty.delete(0).should be(SS.empty)
10
- end
11
- end
12
-
13
- context "with an existing value" do
14
- it "preserves the original" do
15
- sorted_set.delete("B")
16
- sorted_set.should eql(SS["A", "B", "C"])
17
- end
18
-
19
- it "returns a copy with the remaining of values" do
20
- sorted_set.delete("B").should eql(SS["A", "C"])
21
- end
22
- end
23
-
24
- context "with a non-existing value" do
25
- it "preserves the original values" do
26
- sorted_set.delete("D")
27
- sorted_set.should eql(SS["A", "B", "C"])
28
- end
29
-
30
- it "returns self" do
31
- sorted_set.delete("D").should equal(sorted_set)
32
- end
33
- end
34
-
35
- context "when removing the last value in a sorted set" do
36
- it "maintains the set order" do
37
- ss = SS.new(["peanuts", "jam", "milk"]) { |word| word.length }
38
- ss = ss.delete("jam").delete("peanuts").delete("milk")
39
- ss = ss.add("banana").add("sugar").add("spam")
40
- ss.to_a.should == ['spam', 'sugar', 'banana']
41
- end
42
-
43
- context "when the set is in natural order" do
44
- it "returns the canonical empty set" do
45
- sorted_set.delete("B").delete("C").delete("A").should be(Immutable::EmptySortedSet)
46
- end
47
- end
48
- end
49
-
50
- 1.upto(10) do |n|
51
- values = (1..n).to_a
52
- values.combination(3) do |to_delete|
53
- expected = to_delete.reduce(values.dup) { |ary,val| ary.delete(val); ary }
54
- describe "on #{values.inspect}, when deleting #{to_delete.inspect}" do
55
- it "returns #{expected.inspect}" do
56
- set = SS.new(values)
57
- result = to_delete.reduce(set) { |s,val| s.delete(val) }
58
- result.should eql(SS.new(expected))
59
- result.to_a.should eql(expected)
60
- end
61
- end
62
- end
63
- end
64
- end
65
-
66
- describe "#delete?" do
67
- context "with an existing value" do
68
- it "preserves the original" do
69
- sorted_set.delete?("B")
70
- sorted_set.should eql(SS["A", "B", "C"])
71
- end
72
-
73
- it "returns a copy with the remaining values" do
74
- sorted_set.delete?("B").should eql(SS["A", "C"])
75
- end
76
- end
77
-
78
- context "with a non-existing value" do
79
- it "preserves the original values" do
80
- sorted_set.delete?("D")
81
- sorted_set.should eql(SS["A", "B", "C"])
82
- end
83
-
84
- it "returns false" do
85
- sorted_set.delete?("D").should be(false)
86
- end
87
- end
88
- end
89
- end
@@ -1,22 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet 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], %w[B E F G M X], %w[A C D]]
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
- end
20
- end
21
- end
22
- end
@@ -1,25 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#disjoint?" do
5
- [
6
- [[], [], true],
7
- [["A"], [], true],
8
- [[], ["A"], true],
9
- [["A"], ["A"], false],
10
- [%w[A B C], ["B"], false],
11
- [["B"], %w[A B C], false],
12
- [%w[A B C], %w[D E], true],
13
- [%w[F G H I], %w[A B C], true],
14
- [%w[A B C], %w[A B C], false],
15
- [%w[A B C], %w[A B C D], false],
16
- [%w[D E F G], %w[A B C], true],
17
- ].each do |a, b, expected|
18
- context "for #{a.inspect} and #{b.inspect}" do
19
- it "returns #{expected}" do
20
- SS[*a].disjoint?(SS[*b]).should be(expected)
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,55 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#drop" do
5
- [
6
- [[], 0, []],
7
- [[], 10, []],
8
- [["A"], 10, []],
9
- [%w[A B C], 0, %w[A B C]],
10
- [%w[A B C], 1, %w[B C]],
11
- [%w[A B C], 2, ["C"]],
12
- [%w[A B C], 3, []]
13
- ].each do |values, number, expected|
14
- context "#{number} from #{values.inspect}" do
15
- let(:sorted_set) { SS[*values] }
16
-
17
- it "preserves the original" do
18
- sorted_set.drop(number)
19
- sorted_set.should eql(SS[*values])
20
- end
21
-
22
- it "returns #{expected.inspect}" do
23
- sorted_set.drop(number).should eql(SS[*expected])
24
- end
25
- end
26
- end
27
-
28
- context "when argument is zero" do
29
- let(:sorted_set) { SS[6, 7, 8, 9] }
30
- it "returns self" do
31
- sorted_set.drop(0).should be(sorted_set)
32
- end
33
- end
34
-
35
- context "when the set has a custom order" do
36
- let(:sorted_set) { SS.new([1, 2, 3]) { |x| -x }}
37
- it "maintains the custom order" do
38
- sorted_set.drop(1).to_a.should == [2, 1]
39
- sorted_set.drop(2).to_a.should == [1]
40
- end
41
-
42
- it "keeps the comparator even when set is cleared" do
43
- s = sorted_set.drop(3)
44
- s.add(4).add(5).add(6).to_a.should == [6, 5, 4]
45
- end
46
- end
47
-
48
- context "when called on a subclass" do
49
- it "should return an instance of the subclass" do
50
- subclass = Class.new(Immutable::SortedSet)
51
- subclass.new([1,2,3]).drop(1).class.should be(subclass)
52
- end
53
- end
54
- end
55
- end
@@ -1,34 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::SortedSet do
4
- describe "#drop_while" do
5
- [
6
- [[], []],
7
- [["A"], []],
8
- [%w[A B C], ["C"]],
9
- [%w[A B C D E F G], %w[C D E F G]]
10
- ].each do |values, expected|
11
- context "on #{values.inspect}" do
12
- let(:sorted_set) { SS[*values] }
13
-
14
- context "with a block" do
15
- it "preserves the original" do
16
- sorted_set.drop_while { |item| item < "C" }
17
- sorted_set.should eql(SS[*values])
18
- end
19
-
20
- it "returns #{expected.inspect}" do
21
- sorted_set.drop_while { |item| item < "C" }.should eql(SS[*expected])
22
- end
23
- end
24
-
25
- context "without a block" do
26
- it "returns an Enumerator" do
27
- sorted_set.drop_while.class.should be(Enumerator)
28
- sorted_set.drop_while.each { |item| item < "C" }.should eql(SS[*expected])
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end