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,3 +0,0 @@
1
- A
2
- B
3
- C
@@ -1,13 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Array do
4
- let(:array) { %w[A B C] }
5
-
6
- describe "#to_list" do
7
- let(:to_list) { array.to_list }
8
-
9
- it "returns an equivalent Immutable list" do
10
- expect(to_list).to eq(L["A", "B", "C"])
11
- end
12
- end
13
- end
@@ -1,29 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Enumerable do
4
- class TestEnumerable
5
- include Enumerable
6
-
7
- def initialize(*values)
8
- @values = values
9
- end
10
-
11
- def each(&block)
12
- @values.each(&block)
13
- end
14
- end
15
-
16
- let(:enumerable) { TestEnumerable.new("A", "B", "C") }
17
-
18
- describe "#to_list" do
19
- let(:to_list) { enumerable.to_list }
20
-
21
- it "returns an equivalent list" do
22
- expect(to_list).to eq(L["A", "B", "C"])
23
- end
24
-
25
- it "works on Ranges" do
26
- expect((1..3).to_list).to eq(L[1, 2, 3])
27
- end
28
- end
29
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe IO do
4
- describe "#to_list" do
5
- let(:list) { L["A\n", "B\n", "C\n"] }
6
- let(:to_list) { io.to_list }
7
-
8
- after(:each) do
9
- io.close
10
- end
11
-
12
- context "with a File" do
13
- let(:io) { File.new(fixture_path("io_spec.txt")) }
14
-
15
- it "returns an equivalent list" do
16
- expect(to_list).to eq(list)
17
- end
18
- end
19
-
20
- context "with a StringIO" do
21
- let(:io) { StringIO.new(fixture("io_spec.txt")) }
22
-
23
- it "returns an equivalent list" do
24
- expect(to_list).to eq(list)
25
- end
26
- end
27
- end
28
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque 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(:deque) { D[*values] }
12
-
13
- it "preserves the original" do
14
- deque.clear
15
- deque.should eql(D[*values])
16
- end
17
-
18
- it "returns an empty deque" do
19
- deque.clear.should equal(D.empty)
20
- end
21
- end
22
- end
23
- end
24
-
25
- context "from a subclass" do
26
- it "returns an instance of the subclass" do
27
- subclass = Class.new(Immutable::Deque)
28
- instance = subclass.new([1,2])
29
- instance.clear.should be_empty
30
- instance.clear.class.should be(subclass)
31
- end
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe ".[]" do
5
- context "with no arguments" do
6
- it "always returns the same instance" do
7
- D[].class.should be(Immutable::Deque)
8
- D[].should equal(D[])
9
- end
10
-
11
- it "returns an empty, frozen deque" do
12
- D[].should be_empty
13
- D[].should be_frozen
14
- end
15
- end
16
-
17
- context "with a number of items" do
18
- let(:deque) { D["A", "B", "C"] }
19
-
20
- it "always returns a different instance" do
21
- deque.should_not equal(D["A", "B", "C"])
22
- end
23
-
24
- it "is the same as repeatedly using #endeque" do
25
- deque.should eql(D.empty.enqueue("A").enqueue("B").enqueue("C"))
26
- end
27
- end
28
- end
29
- end
@@ -1,19 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- [:dup, :clone].each do |method|
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- context "on #{values.inspect}" do
11
- let(:deque) { D[*values] }
12
-
13
- it "returns self" do
14
- deque.send(method).should equal(deque)
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,34 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- [:dequeue, :shift].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], []],
8
- [["A"], []],
9
- [%w[A B C], %w[B C]],
10
- ].each do |values, expected|
11
- context "on #{values.inspect}" do
12
- let(:deque) { D[*values] }
13
-
14
- it "preserves the original" do
15
- deque.send(method)
16
- deque.should eql(D[*values])
17
- end
18
-
19
- it "returns #{expected.inspect}" do
20
- deque.send(method).should eql(D[*expected])
21
- end
22
- end
23
- end
24
- end
25
-
26
- context "on empty subclass" do
27
- let(:subclass) { Class.new(Immutable::Deque) }
28
- let(:empty_instance) { subclass.new }
29
- it "returns emtpy object of same class" do
30
- empty_instance.send(method).class.should be subclass
31
- end
32
- end
33
- end
34
- end
@@ -1,39 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#empty?" do
5
- [
6
- [[], true],
7
- [["A"], false],
8
- [%w[A B C], false],
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- it "returns #{expected.inspect}" do
12
- D[*values].empty?.should == expected
13
- end
14
- end
15
- end
16
-
17
- context "after dedequeing an item from #{%w[A B C].inspect}" do
18
- it "returns false" do
19
- D["A", "B", "C"].dequeue.should_not be_empty
20
- end
21
- end
22
- end
23
-
24
- describe ".empty" do
25
- it "returns the canonical empty deque" do
26
- D.empty.size.should be(0)
27
- D.empty.class.should be(Immutable::Deque)
28
- D.empty.object_id.should be(Immutable::EmptyDeque.object_id)
29
- end
30
-
31
- context "from a subclass" do
32
- it "returns an empty instance of the subclass" do
33
- subclass = Class.new(Immutable::Deque)
34
- subclass.empty.class.should be(subclass)
35
- subclass.empty.should be_empty
36
- end
37
- end
38
- end
39
- end
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- [:enqueue, :push].each do |method|
5
- describe "##{method}" do
6
- [
7
- [[], "A", ["A"]],
8
- [["A"], "B", %w[A B]],
9
- [["A"], "A", %w[A A]],
10
- [%w[A B C], "D", %w[A B C D]],
11
- ].each do |values, new_value, expected|
12
- describe "on #{values.inspect} with #{new_value.inspect}" do
13
- let(:deque) { D[*values] }
14
-
15
- it "preserves the original" do
16
- deque.send(method, new_value)
17
- deque.should eql(D[*values])
18
- end
19
-
20
- it "returns #{expected.inspect}" do
21
- deque.send(method, new_value).should eql(D[*expected])
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#first" do
5
- [
6
- [[], nil],
7
- [["A"], "A"],
8
- [%w[A B C], "A"],
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- it "returns #{expected.inspect}" do
12
- D[*values].first.should == expected
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#inspect" do
5
- [
6
- [[], 'Immutable::Deque[]'],
7
- [["A"], 'Immutable::Deque["A"]'],
8
- [%w[A B C], 'Immutable::Deque["A", "B", "C"]']
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- let(:deque) { D[*values] }
12
-
13
- it "returns #{expected.inspect}" do
14
- deque.inspect.should == expected
15
- end
16
-
17
- it "returns a string which can be eval'd to get an equivalent object" do
18
- eval(deque.inspect).should eql(deque)
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#last" do
5
- [
6
- [[], nil],
7
- [["A"], "A"],
8
- [%w[A B C], "C"],
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- it "returns #{expected.inspect}" do
12
- D[*values].last.should eql(expected)
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque 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 'deque = Immutable::Deque[5, 10, 15]; $stdout.write(Marshal.dump(deque))'|
10
- end
11
-
12
- let(:reloaded_deque) do
13
- IO.popen(child_cmd, "r+") do |child|
14
- reloaded_deque = Marshal.load(child)
15
- child.close
16
- reloaded_deque
17
- end
18
- end
19
-
20
- it "can survive dumping and loading into a new process" do
21
- expect(reloaded_deque).to eql(D[5, 10, 15])
22
- end
23
-
24
- it "is still possible to push and pop items after loading" do
25
- expect(reloaded_deque.first).to eq(5)
26
- expect(reloaded_deque.last).to eq(15)
27
- expect(reloaded_deque.push(20)).to eql(D[5, 10, 15, 20])
28
- expect(reloaded_deque.pop).to eql(D[5, 10])
29
- expect(reloaded_deque.unshift(1)).to eql(D[1, 5, 10, 15])
30
- expect(reloaded_deque.shift).to eql(D[10, 15])
31
- end
32
- end
33
- end
@@ -1,43 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe ".new" do
5
- it "accepts a single enumerable argument and creates a new deque" do
6
- deque = Immutable::Deque.new([1,2,3])
7
- deque.size.should be(3)
8
- deque.first.should be(1)
9
- deque.dequeue.first.should be(2)
10
- deque.dequeue.dequeue.first.should be(3)
11
- end
12
-
13
- it "is amenable to overriding of #initialize" do
14
- class SnazzyDeque < Immutable::Deque
15
- def initialize
16
- super(['SNAZZY!!!'])
17
- end
18
- end
19
-
20
- deque = SnazzyDeque.new
21
- deque.size.should be(1)
22
- deque.to_a.should == ['SNAZZY!!!']
23
- end
24
-
25
- context "from a subclass" do
26
- it "returns a frozen instance of the subclass" do
27
- subclass = Class.new(Immutable::Deque)
28
- instance = subclass.new(["some", "values"])
29
- instance.class.should be subclass
30
- instance.frozen?.should be true
31
- end
32
- end
33
- end
34
-
35
- describe ".[]" do
36
- it "accepts a variable number of items and creates a new deque" do
37
- deque = Immutable::Deque['a', 'b']
38
- deque.size.should be(2)
39
- deque.first.should == 'a'
40
- deque.dequeue.first.should == 'b'
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#pop" do
5
- [
6
- [[], []],
7
- [["A"], []],
8
- [%w[A B C], %w[A B]],
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- let(:deque) { D[*values] }
12
-
13
- it "preserves the original" do
14
- deque.pop
15
- deque.should eql(D[*values])
16
- end
17
-
18
- it "returns #{expected.inspect}" do
19
- deque.pop.should eql(D[*expected])
20
- end
21
-
22
- it "returns a frozen instance" do
23
- deque.pop.should be_frozen
24
- end
25
- end
26
- end
27
-
28
- context "on empty subclass" do
29
- let(:subclass) { Class.new(Immutable::Deque) }
30
- let(:empty_instance) { subclass.new }
31
- it "returns an empty object of the same class" do
32
- empty_instance.pop.class.should be subclass
33
- end
34
- end
35
- end
36
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
- require "pp"
3
- require "stringio"
4
-
5
- describe Immutable::Deque do
6
- describe "#pretty_print" do
7
- let(:deque) { Immutable::Deque["AAAA", "BBBB", "CCCC"] }
8
- let(:stringio) { StringIO.new }
9
-
10
- it "prints the whole Deque on one line if it fits" do
11
- PP.pp(deque, stringio, 80)
12
- stringio.string.chomp.should == 'Immutable::Deque["AAAA", "BBBB", "CCCC"]'
13
- end
14
-
15
- it "prints each item on its own line, if not" do
16
- PP.pp(deque, stringio, 10)
17
- stringio.string.chomp.should == 'Immutable::Deque[
18
- "AAAA",
19
- "BBBB",
20
- "CCCC"]'
21
- end
22
- end
23
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#push" do
5
- [
6
- [[], "A", ["A"]],
7
- [["A"], "B", %w[A B]],
8
- [%w[A B C], "D", %w[A B C D]],
9
- ].each do |original, item, expected|
10
- context "pushing #{item.inspect} into #{original.inspect}" do
11
- let(:deque) { D.new(original) }
12
-
13
- it "preserves the original" do
14
- deque.push(item)
15
- deque.should eql(D.new(original))
16
- end
17
-
18
- it "returns #{expected.inspect}" do
19
- deque.push(item).should eql(D.new(expected))
20
- end
21
-
22
- it "returns a frozen instance" do
23
- deque.push(item).should be_frozen
24
- end
25
- end
26
- end
27
-
28
- context "on a subclass" do
29
- let(:subclass) { Class.new(Immutable::Deque) }
30
- let(:empty_instance) { subclass.new }
31
- it "returns an object of same class" do
32
- empty_instance.push(1).class.should be subclass
33
- end
34
- end
35
- end
36
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "modification (using #push, #pop, #shift, and #unshift)" do
5
- it "works when applied in many random combinations" do
6
- array = [1,2,3]
7
- deque = Immutable::Deque.new(array)
8
- 1000.times do
9
- case [:push, :pop, :shift, :unshift].sample
10
- when :push
11
- value = rand(10000)
12
- array.push(value)
13
- deque = deque.push(value)
14
- when :pop
15
- array.pop
16
- deque = deque.pop
17
- when :shift
18
- array.shift
19
- deque = deque.shift
20
- when :unshift
21
- value = rand(10000)
22
- array.unshift(value)
23
- deque = deque.unshift(value)
24
- end
25
-
26
- deque.to_a.should eql(array)
27
- deque.size.should == array.size
28
- deque.first.should == array.first
29
- deque.last.should == array.last
30
- end
31
- end
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- describe "#shift" do
5
- [
6
- [[], []],
7
- [["A"], []],
8
- [%w[A B C], %w[B C]],
9
- ].each do |values, expected|
10
- context "on #{values.inspect}" do
11
- let(:deque) { D.new(values) }
12
-
13
- it "preserves the original" do
14
- deque.shift
15
- deque.should eql(D.new(values))
16
- end
17
-
18
- it "returns #{expected.inspect}" do
19
- deque.shift.should eql(D.new(expected))
20
- end
21
-
22
-
23
- it "returns a frozen instance" do
24
- deque.shift.should be_frozen
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,19 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque 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, expected|
11
- context "on #{values.inspect}" do
12
- it "returns #{expected.inspect}" do
13
- D[*values].send(method).should == expected
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,26 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- [:to_a, :entries].each do |method|
5
- describe "##{method}" do
6
- [
7
- [],
8
- ["A"],
9
- %w[A B C],
10
- ].each do |values|
11
- context "on #{values.inspect}" do
12
- it "returns #{values.inspect}" do
13
- D[*values].send(method).should == values
14
- end
15
-
16
- it "returns a mutable array" do
17
- result = D[*values].send(method)
18
- expect(result.last).to_not eq("The End")
19
- result << "The End"
20
- result.last.should == "The End"
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque do
4
- let(:deque) { D["A", "B", "C", "D"] }
5
-
6
- describe "#to_ary" do
7
- context "enables implicit conversion to" do
8
- it "block parameters" do
9
- def func(&block)
10
- yield(deque)
11
- end
12
-
13
- func do |a, b, *c|
14
- expect(a).to eq("A")
15
- expect(b).to eq("B")
16
- expect(c).to eq(%w[C D])
17
- end
18
- end
19
-
20
- it "method arguments" do
21
- def func(a, b, *c)
22
- expect(a).to eq("A")
23
- expect(b).to eq("B")
24
- expect(c).to eq(%w[C D])
25
- end
26
- func(*deque)
27
- end
28
-
29
- it "works with splat" do
30
- array = *deque
31
- expect(array).to eq(%w[A B C D])
32
- end
33
- end
34
- end
35
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Deque 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
- it "returns a list containing #{values.inspect}" do
12
- D[*values].to_list.should eql(L[*values])
13
- end
14
- end
15
- end
16
-
17
- context "after dedequeing an item from #{%w[A B C].inspect}" do
18
- it "returns a list containing #{%w[B C].inspect}" do
19
- list = D["A", "B", "C"].dequeue.to_list
20
- list.should eql(L["B", "C"])
21
- end
22
- end
23
- end
24
- end