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,50 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:reject, :delete_if].each do |method|
5
- describe "##{method}" do
6
- let(:set) { S["A", "B", "C"] }
7
-
8
- context "when nothing matches" do
9
- it "returns self" do
10
- set.send(method) { |item| false }.should equal(set)
11
- end
12
- end
13
-
14
- context "when only some things match" do
15
- context "with a block" do
16
- let(:result) { set.send(method) { |item| item == "A" }}
17
-
18
- it "preserves the original" do
19
- result
20
- set.should eql(S["A", "B", "C"])
21
- end
22
-
23
- it "returns a set with the matching values" do
24
- result.should eql(S["B", "C"])
25
- end
26
- end
27
-
28
- context "with no block" do
29
- it "returns self" do
30
- set.send(method).class.should be(Enumerator)
31
- set.send(method).each { |item| item == "A" }.should == S["B", "C"]
32
- end
33
- end
34
- end
35
-
36
- context "on a large set, with many combinations of input" do
37
- it "still works" do
38
- array = (1..1000).to_a
39
- set = S.new(array)
40
- [0, 10, 100, 200, 500, 800, 900, 999, 1000].each do |threshold|
41
- result = set.send(method) { |item| item > threshold }
42
- result.size.should == threshold
43
- 1.upto(threshold) { |n| result.include?(n).should == true }
44
- (threshold+1).upto(1000) { |n| result.include?(n).should == false }
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,38 +0,0 @@
1
- require "spec_helper"
2
- require "set"
3
-
4
- describe Immutable::Set do
5
- let(:set) { S["A", "B", "C"] }
6
-
7
- describe "#reverse_each" do
8
- let(:reverse_each) { set.reverse_each(&block) }
9
-
10
- context "without a block" do
11
- let(:block) { nil }
12
-
13
- it "returns an Enumerator" do
14
- expect(reverse_each.class).to be(Enumerator)
15
- expect(reverse_each.to_a).to eq(set.to_a.reverse)
16
- end
17
- end
18
-
19
- context "with an empty block" do
20
- let(:block) { ->(item) {} }
21
-
22
- it "returns self" do
23
- expect(reverse_each).to be(set)
24
- end
25
- end
26
-
27
- context "with a block" do
28
- let(:items) { ::Set.new }
29
- let(:values) { ::Set.new(%w[A B C]) }
30
- let(:block) { ->(item) { items << item } }
31
- before(:each) { reverse_each }
32
-
33
- it "yields all values" do
34
- expect(items).to eq(values)
35
- end
36
- end
37
- end
38
- end
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#sample" do
5
- let(:set) { S.new(1..10) }
6
-
7
- it "returns a randomly chosen item" do
8
- chosen = 100.times.map { set.sample }
9
- chosen.each { |item| set.include?(item).should == true }
10
- set.each { |item| chosen.include?(item).should == true }
11
- end
12
- end
13
- end
@@ -1,73 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:select, :find_all].each do |method|
5
- describe "##{method}" do
6
- let(:set) { S["A", "B", "C"] }
7
-
8
- context "when everything matches" do
9
- it "returns self" do
10
- set.send(method) { |item| true }.should equal(set)
11
- end
12
- end
13
-
14
- context "when only some things match" do
15
- context "with a block" do
16
- let(:result) { set.send(method) { |item| item == "A" }}
17
-
18
- it "preserves the original" do
19
- result
20
- set.should eql(S["A", "B", "C"])
21
- end
22
-
23
- it "returns a set with the matching values" do
24
- result.should eql(S["A"])
25
- end
26
- end
27
-
28
- context "with no block" do
29
- it "returns an Enumerator" do
30
- set.send(method).class.should be(Enumerator)
31
- set.send(method).each { |item| item == "A" }.should eql(S["A"])
32
- end
33
- end
34
- end
35
-
36
- context "when nothing matches" do
37
- let(:result) { set.send(method) { |item| false }}
38
-
39
- it "preserves the original" do
40
- result
41
- set.should eql(S["A", "B", "C"])
42
- end
43
-
44
- it "returns the canonical empty set" do
45
- result.should equal(Immutable::EmptySet)
46
- end
47
- end
48
-
49
- context "from a subclass" do
50
- it "returns an instance of the same class" do
51
- subclass = Class.new(Immutable::Set)
52
- instance = subclass.new(['A', 'B', 'C'])
53
- instance.send(method) { true }.class.should be(subclass)
54
- instance.send(method) { false }.class.should be(subclass)
55
- instance.send(method) { rand(2) == 0 }.class.should be(subclass)
56
- end
57
- end
58
-
59
- it "works on a large set, with many combinations of input" do
60
- items = (1..1000).to_a
61
- original = S.new(items)
62
- 30.times do
63
- threshold = rand(1000)
64
- result = original.send(method) { |item| item <= threshold }
65
- result.size.should == threshold
66
- result.each { |item| item.should <= threshold }
67
- (threshold+1).upto(1000) { |item| result.include?(item).should == false }
68
- end
69
- original.should eql(S.new(items))
70
- end
71
- end
72
- end
73
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:size, :length].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], 0],
8
- [["A"], 1],
9
- [%w[A B C], 3],
10
- ].each do |values, result|
11
- it "returns #{result} for #{values.inspect}" do
12
- S[*values].send(method).should == result
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,65 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [
5
- [:sort, ->(left, right) { left.length <=> right.length }],
6
- [:sort_by, ->(item) { item.length }],
7
- ].each do |method, comparator|
8
- describe "##{method}" do
9
- [
10
- [[], []],
11
- [["A"], ["A"]],
12
- [%w[Ichi Ni San], %w[Ni San Ichi]],
13
- ].each do |values, expected|
14
- describe "on #{values.inspect}" do
15
- let(:set) { S[*values] }
16
-
17
- describe "with a block" do
18
- let(:result) { set.send(method, &comparator) }
19
-
20
- it "returns #{expected.inspect}" do
21
- result.should eql(SS.new(expected, &comparator))
22
- result.to_a.should == expected
23
- end
24
-
25
- it "doesn't change the original Set" do
26
- result
27
- set.should eql(S.new(values))
28
- end
29
- end
30
-
31
- describe "without a block" do
32
- let(:result) { set.send(method) }
33
-
34
- it "returns #{expected.sort.inspect}" do
35
- result.should eql(SS[*expected])
36
- result.to_a.should == expected.sort
37
- end
38
-
39
- it "doesn't change the original Set" do
40
- result
41
- set.should eql(S.new(values))
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
48
-
49
- describe "#sort_by" do
50
- # originally this test checked that #sort_by only called the block once
51
- # for each item
52
- # however, when initializing a SortedSet, we need to make sure that it
53
- # does not include any duplicates, and we use the block when checking that
54
- # the real point here is that the block should not be called an excessive
55
- # number of times, degrading performance
56
- it "calls the passed block no more than twice for each item" do
57
- count = 0
58
- fn = lambda { |x| count += 1; -x }
59
- items = 100.times.collect { rand(10000) }.uniq
60
-
61
- S[*items].sort_by(&fn).to_a.should == items.sort.reverse
62
- count.should <= (items.length * 2)
63
- end
64
- end
65
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:subset?, :<=].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], [], true],
8
- [["A"], [], false],
9
- [[], ["A"], true],
10
- [["A"], ["A"], true],
11
- [%w[A B C], ["B"], false],
12
- [["B"], %w[A B C], true],
13
- [%w[A B C], %w[A C], false],
14
- [%w[A C], %w[A B C], true],
15
- [%w[A B C], %w[A B C], true],
16
- [%w[A B C], %w[A B C D], true],
17
- [%w[A B C D], %w[A B C], false],
18
- ].each do |a, b, expected|
19
- describe "for #{a.inspect} and #{b.inspect}" do
20
- it "returns #{expected}" do
21
- S[*a].send(method, S[*b]).should == expected
22
- end
23
- end
24
- end
25
- end
26
- end
27
-
28
- [:proper_subset?, :<].each do |method|
29
- describe "##{method}" do
30
- [
31
- [[], [], false],
32
- [["A"], [], false],
33
- [[], ["A"], true],
34
- [["A"], ["A"], false],
35
- [%w[A B C], ["B"], false],
36
- [["B"], %w[A B C], true],
37
- [%w[A B C], %w[A C], false],
38
- [%w[A C], %w[A B C], true],
39
- [%w[A B C], %w[A B C], false],
40
- [%w[A B C], %w[A B C D], true],
41
- [%w[A B C D], %w[A B C], false],
42
- ].each do |a, b, expected|
43
- describe "for #{a.inspect} and #{b.inspect}" do
44
- it "returns #{expected}" do
45
- S[*a].send(method, S[*b]).should == expected
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- describe "#sum" do
5
- [
6
- [[], 0],
7
- [[2], 2],
8
- [[1, 3, 5, 7, 11], 27],
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- let(:set) { S[*values] }
12
-
13
- it "returns #{expected.inspect}" do
14
- set.sum.should == expected
15
- end
16
-
17
- it "doesn't change the original Set" do
18
- set.should eql(S.new(values))
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:superset?, :>=].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], [], true],
8
- [["A"], [], true],
9
- [[], ["A"], false],
10
- [["A"], ["A"], true],
11
- [%w[A B C], ["B"], true],
12
- [["B"], %w[A B C], false],
13
- [%w[A B C], %w[A C], true],
14
- [%w[A C], %w[A B C], false],
15
- [%w[A B C], %w[A B C], true],
16
- [%w[A B C], %w[A B C D], false],
17
- [%w[A B C D], %w[A B C], true],
18
- ].each do |a, b, expected|
19
- describe "for #{a.inspect} and #{b.inspect}" do
20
- it "returns #{expected}" do
21
- S[*a].send(method, S[*b]).should == expected
22
- end
23
- end
24
- end
25
- end
26
- end
27
-
28
- [:proper_superset?, :>].each do |method|
29
- describe "##{method}" do
30
- [
31
- [[], [], false],
32
- [["A"], [], true],
33
- [[], ["A"], false],
34
- [["A"], ["A"], false],
35
- [%w[A B C], ["B"], true],
36
- [["B"], %w[A B C], false],
37
- [%w[A B C], %w[A C], true],
38
- [%w[A C], %w[A B C], false],
39
- [%w[A B C], %w[A B C], false],
40
- [%w[A B C], %w[A B C D], false],
41
- [%w[A B C D], %w[A B C], true],
42
- ].each do |a, b, expected|
43
- describe "for #{a.inspect} and #{b.inspect}" do
44
- it "returns #{expected}" do
45
- S[*a].send(method, S[*b]).should == expected
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Set do
4
- [:to_a, :entries].each do |method|
5
- describe "##{method}" do
6
- ('a'..'z').each do |letter|
7
- let(:values) { ('a'..letter).to_a }
8
- let(:set) { S.new(values) }
9
- let(:result) { set.send(method) }
10
-
11
- context "on 'a'..'#{letter}'" do
12
- it "returns an equivalent array" do
13
- result.sort.should == values.sort
14
- end
15
-
16
- it "doesn't change the original Set" do
17
- result
18
- set.should eql(S[*values])
19
- end
20
-
21
- it "returns a mutable array" do
22
- expect(result.last).to_not eq("The End")
23
- result << "The End"
24
- result.last.should == "The End"
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -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) }.uniq
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) }.uniq
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