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,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#sum" do
5
- [
6
- [[], 0],
7
- [[2], 2],
8
- [[1, 3, 5, 7, 11], 27],
9
- ].each do |values, expected|
10
- describe "on #{values.inspect}" do
11
- it "returns #{expected.inspect}" do
12
- V[*values].sum.should == expected
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,42 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#take" do
5
- [
6
- [[], 10, []],
7
- [["A"], 10, ["A"]],
8
- [%w[A B C], 0, []],
9
- [%w[A B C], 2, %w[A B]],
10
- [(1..32), 1, [1]],
11
- [(1..33), 32, (1..32)],
12
- [(1..100), 40, (1..40)]
13
- ].each do |values, number, expected|
14
- describe "#{number} from #{values.inspect}" do
15
- let(:vector) { V[*values] }
16
-
17
- it "preserves the original" do
18
- vector.take(number)
19
- vector.should eql(V[*values])
20
- end
21
-
22
- it "returns #{expected.inspect}" do
23
- vector.take(number).should eql(V[*expected])
24
- end
25
- end
26
- end
27
-
28
- context "when number of elements specified is identical to size" do
29
- let(:vector) { V[1, 2, 3, 4, 5, 6] }
30
- it "returns self" do
31
- vector.take(vector.size).should be(vector)
32
- end
33
- end
34
-
35
- context "when number of elements specified is bigger than size" do
36
- let(:vector) { V[1, 2, 3, 4, 5, 6] }
37
- it "returns self" do
38
- vector.take(vector.size + 1).should be(vector)
39
- end
40
- end
41
- end
42
- end
@@ -1,34 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#take_while" do
5
- [
6
- [[], []],
7
- [["A"], ["A"]],
8
- [%w[A B C], %w[A B]]
9
- ].each do |values, expected|
10
- describe "on #{values.inspect}" do
11
- let(:vector) { V[*values] }
12
- let(:result) { vector.take_while { |item| item < "C" }}
13
-
14
- describe "with a block" do
15
- it "returns #{expected.inspect}" do
16
- result.should eql(V[*expected])
17
- end
18
-
19
- it "preserves the original" do
20
- result
21
- vector.should eql(V[*values])
22
- end
23
- end
24
-
25
- describe "without a block" do
26
- it "returns an Enumerator" do
27
- vector.take_while.class.should be(Enumerator)
28
- vector.take_while.each { |item| item < "C" }.should eql(V[*expected])
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,41 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- let(:vector) { V[*values] }
5
-
6
- describe "#to_a" do
7
- let(:to_a) { vector.to_a }
8
-
9
- shared_examples "checking to_a values" do
10
- it "returns the values" do
11
- expect(to_a).to eq(values)
12
- end
13
- end
14
-
15
- context "with an empty vector" do
16
- let(:values) { [] }
17
-
18
- include_examples "checking to_a values"
19
- end
20
-
21
- context "with an single item vector" do
22
- let(:values) { %w[A] }
23
-
24
- include_examples "checking to_a values"
25
- end
26
-
27
- context "with an multi-item vector" do
28
- let(:values) { %w[A B] }
29
-
30
- include_examples "checking to_a values"
31
- end
32
-
33
- [10, 31, 32, 33, 1000, 1023, 1024, 1025].each do |size|
34
- context "with a #{size}-item vector" do
35
- let(:values) { (1..size).to_a }
36
-
37
- include_examples "checking to_a values"
38
- end
39
- end
40
- end
41
- end
@@ -1,34 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- let(:vector) { V[*values] }
5
-
6
- describe "#to_ary" do
7
- let(:values) { %w[A B C D] }
8
-
9
- it "converts using block parameters" do
10
- def expectations(&block)
11
- yield(vector)
12
- end
13
- expectations 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 "converts using method arguments" do
21
- def expectations(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
- expectations(*vector)
27
- end
28
-
29
- it "converts using splat" do
30
- array = *vector
31
- expect(array).to eq(%w[A B C D])
32
- end
33
- end
34
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#to_list" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- ].each do |values|
10
- describe "on #{values.inspect}" do
11
- let(:vector) { V.new(values) }
12
- let(:list) { vector.to_list }
13
-
14
- it "returns a list" do
15
- list.is_a?(Immutable::List).should == true
16
- end
17
-
18
- describe "the returned list" do
19
- it "has the correct length" do
20
- list.size.should == values.size
21
- end
22
-
23
- it "contains all values" do
24
- list.to_a.should == values
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,21 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#to_set" do
5
- [
6
- [],
7
- ["A"],
8
- %w[A B C],
9
- (1..10),
10
- (1..32),
11
- (1..33),
12
- (1..1000)
13
- ].each do |values|
14
- describe "on #{values.inspect}" do
15
- it "returns a set with the same values" do
16
- V[*values].to_set.should eql(S[*values])
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,48 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#transpose" do
5
- it "takes a vector of vectors and transposes rows and columns" do
6
- V[V[1, 'a'], V[2, 'b'], V[3, 'c']].transpose.should eql(V[V[1, 2, 3], V["a", "b", "c"]])
7
- V[V[1, 2, 3], V["a", "b", "c"]].transpose.should eql(V[V[1, 'a'], V[2, 'b'], V[3, 'c']])
8
- V[].transpose.should eql(V[])
9
- V[V[]].transpose.should eql(V[])
10
- V[V[], V[]].transpose.should eql(V[])
11
- V[V[0]].transpose.should eql(V[V[0]])
12
- V[V[0], V[1]].transpose.should eql(V[V[0, 1]])
13
- end
14
-
15
- it "raises an IndexError if the vectors are not of the same length" do
16
- -> { V[V[1,2], V[:a]].transpose }.should raise_error(IndexError)
17
- end
18
-
19
- it "also works on Vectors of Arrays" do
20
- V[[1,2,3], [4,5,6]].transpose.should eql(V[V[1,4], V[2,5], V[3,6]])
21
- end
22
-
23
- [10, 31, 32, 33, 1000, 1023, 1024, 1025, 2000].each do |size|
24
- context "on #{size}-item vectors" do
25
- it "behaves like Array#transpose" do
26
- array = rand(10).times.map { size.times.map { rand(10000) }}
27
- vector = V.new(array)
28
- result = vector.transpose
29
- # Array#== uses Object#== to compare corresponding elements,
30
- # so although Vector#== does type coercion, it does not consider
31
- # nested Arrays and corresponding nested Vectors to be equal
32
- # That is why the following ".map { |a| V.new(a) }" is needed
33
- result.should == array.transpose.map { |a| V.new(a) }
34
- result.each { |v| v.class.should be(Immutable::Vector) }
35
- end
36
- end
37
- end
38
-
39
- context "on a subclass of Vector" do
40
- it "returns instances of the subclass" do
41
- subclass = Class.new(V)
42
- instance = subclass.new([[1,2,3], [4,5,6]])
43
- instance.transpose.class.should be(subclass)
44
- instance.transpose.each { |v| v.class.should be(subclass) }
45
- end
46
- end
47
- end
48
- end
@@ -1,76 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#uniq" do
5
- let(:vector) { V['a', 'b', 'a', 'a', 'c', 'b'] }
6
-
7
- it "returns a vector with no duplicates" do
8
- vector.uniq.should eql(V['a', 'b', 'c'])
9
- end
10
-
11
- it "leaves the original unmodified" do
12
- vector.uniq
13
- vector.should eql(V['a', 'b', 'a', 'a', 'c', 'b'])
14
- end
15
-
16
- it "uses #eql? semantics" do
17
- V[1.0, 1].uniq.should eql(V[1.0, 1])
18
- end
19
-
20
- it "also uses #hash when determining which values are duplicates" do
21
- x = double(1)
22
- x.should_receive(:hash).at_least(1).times.and_return(1)
23
- y = double(2)
24
- y.should_receive(:hash).at_least(1).times.and_return(2)
25
- V[x, y].uniq
26
- end
27
-
28
- it "keeps the first of each group of duplicate values" do
29
- x, y, z = 'a', 'a', 'a'
30
- result = V[x, y, z].uniq
31
- result.size.should == 1
32
- result[0].should be(x)
33
- end
34
-
35
- context "when passed a block" do
36
- it "uses the return value of the block to determine which items are duplicate" do
37
- v = V['a', 'A', 'B', 'b']
38
- v.uniq(&:upcase).should == V['a', 'B']
39
- end
40
- end
41
-
42
- context "on a vector with no duplicates" do
43
- it "returns an unchanged vector" do
44
- V[1, 2, 3].uniq.should eql(V[1, 2, 3])
45
- end
46
-
47
- context "if the vector has more than 32 elements and is initialized with Vector.new" do
48
- # Regression test for GitHub issue #182
49
- it "returns an unchanged vector" do
50
- vector1,vector2 = 2.times.collect { V.new(0..36) }
51
- vector1.uniq.should eql(vector2)
52
- end
53
- end
54
- end
55
-
56
- [10, 31, 32, 33, 1000, 1023, 1024, 1025, 2000].each do |size|
57
- context "on a #{size}-item vector" do
58
- it "behaves like Array#uniq" do
59
- array = size.times.map { rand(size*2) }
60
- vector = V.new(array)
61
- result = vector.uniq
62
- result.should == array.uniq
63
- result.class.should be(Immutable::Vector)
64
- end
65
- end
66
- end
67
-
68
- context "from a subclass" do
69
- it "returns an instance of the subclass" do
70
- subclass = Class.new(Immutable::Vector)
71
- instance = subclass.new([1,2,3])
72
- instance.uniq.class.should be(subclass)
73
- end
74
- end
75
- end
76
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#unshift" do
5
- [
6
- [[], "A", ["A"]],
7
- [["A"], "B", %w[B A]],
8
- [["A"], "A", %w[A A]],
9
- [%w[A B C], "D", %w[D A B C]],
10
- [1..31, 0, 0..31],
11
- [1..32, 0, 0..32],
12
- [1..33, 0, 0..33]
13
- ].each do |values, new_value, expected|
14
- context "on #{values.inspect} with #{new_value.inspect}" do
15
- let(:vector) { V[*values] }
16
-
17
- it "preserves the original" do
18
- vector.unshift(new_value)
19
- vector.should eql(V[*values])
20
- end
21
-
22
- it "returns #{expected.inspect}" do
23
- vector.unshift(new_value).should eql(V[*expected])
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,82 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#update_in" do
5
- let(:vector) {
6
- Immutable::Vector[
7
- 100,
8
- 101,
9
- 102,
10
- Immutable::Vector[200, 201, Immutable::Vector[300, 301, 302]],
11
- Immutable::Hash["A" => "alpha", "B" => "bravo"],
12
- [400, 401, 402]
13
- ]
14
- }
15
-
16
- context "with one level on existing key" do
17
- it "passes the value to the block" do
18
- vector.update_in(1) { |value| value.should == 101 }
19
- end
20
-
21
- it "replaces the value with the result of the block" do
22
- result = vector.update_in(1) { |value| "FLIBBLE" }
23
- result.get(1).should == "FLIBBLE"
24
- end
25
-
26
- it "should preserve the original" do
27
- result = vector.update_in(1) { |value| "FLIBBLE" }
28
- vector.get(1).should == 101
29
- end
30
- end
31
-
32
- context "with multi-level vectors on existing keys" do
33
- it "passes the value to the block" do
34
- vector.update_in(3, 2, 0) { |value| value.should == 300 }
35
- end
36
-
37
- it "replaces the value with the result of the block" do
38
- result = vector.update_in(3, 2, 0) { |value| "FLIBBLE" }
39
- result[3][2][0].should == "FLIBBLE"
40
- end
41
-
42
- it "should preserve the original" do
43
- result = vector.update_in(3, 2, 0) { |value| "FLIBBLE" }
44
- vector[3][2][0].should == 300
45
- end
46
- end
47
-
48
- context "with multi-level creating sub-hashes when keys don't exist" do
49
- it "passes nil to the block" do
50
- vector.update_in(3, 3, "X", "Y") { |value| value.should be_nil }
51
- end
52
-
53
- it "creates subhashes on the way to set the value" do
54
- result = vector.update_in(3, 3, "X", "Y") { |value| "NEWVALUE" }
55
- result[3][3]["X"]["Y"].should == "NEWVALUE"
56
- result[3][2][0].should == 300
57
- end
58
- end
59
-
60
- context "with multi-level including hash with existing keys" do
61
- it "passes the value to the block" do
62
- vector.update_in(4, "B") { |value| value.should == "bravo" }
63
- end
64
-
65
- it "replaces the value with the result of the block" do
66
- result = vector.update_in(4, "B") { |value| "FLIBBLE" }
67
- result[4]["B"].should == "FLIBBLE"
68
- end
69
-
70
- it "should preserve the original" do
71
- result = vector.update_in(4, "B") { |value| "FLIBBLE" }
72
- vector[4]["B"].should == "bravo"
73
- end
74
- end
75
-
76
- context "with empty key_path" do
77
- it "raises ArguemntError" do
78
- expect { vector.update_in() { |v| 42 } }.to raise_error(ArgumentError)
79
- end
80
- end
81
- end
82
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#values_at" do
5
- let(:vector) { V['a', 'b', 'c'] }
6
-
7
- it "accepts any number of indices, and returns a vector of items at those indices" do
8
- vector.values_at(0).should eql(V['a'])
9
- vector.values_at(1,2).should eql(V['b', 'c'])
10
- end
11
-
12
- context "when passed invalid indices" do
13
- it "fills in with nils" do
14
- vector.values_at(1,2,3).should eql(V['b', 'c', nil])
15
- vector.values_at(-10,10).should eql(V[nil, nil])
16
- end
17
- end
18
-
19
- context "when passed no arguments" do
20
- it "returns an empty vector" do
21
- vector.values_at.should eql(V.empty)
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::Vector)
28
- instance = subclass.new([1,2,3])
29
- instance.values_at(1,2).class.should be(subclass)
30
- end
31
- end
32
- end
33
- end
@@ -1,57 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Immutable::Vector do
4
- describe "#zip" do
5
- let(:vector) { V[1,2,3,4] }
6
-
7
- context "with a block" do
8
- it "yields arrays of one corresponding element from each input sequence" do
9
- result = []
10
- vector.zip(['a', 'b', 'c', 'd']) { |obj| result << obj }
11
- result.should eql([[1,'a'], [2,'b'], [3,'c'], [4,'d']])
12
- end
13
-
14
- it "fills in the missing values with nils" do
15
- result = []
16
- vector.zip(['a', 'b']) { |obj| result << obj }
17
- result.should eql([[1,'a'], [2,'b'], [3,nil], [4,nil]])
18
- end
19
-
20
- it "returns nil" do
21
- vector.zip([2,3,4]) {}.should be_nil
22
- end
23
-
24
- it "can handle multiple inputs, of different classes" do
25
- result = []
26
- vector.zip(V[2,3,4,5], [5,6,7,8]) { |obj| result << obj }
27
- result.should eql([[1,2,5], [2,3,6], [3,4,7], [4,5,8]])
28
- end
29
- end
30
-
31
- context "without a block" do
32
- it "returns a vector of arrays (one corresponding element from each input sequence)" do
33
- vector.zip([2,3,4,5]).should eql(V[[1,2], [2,3], [3,4], [4,5]])
34
- end
35
- end
36
-
37
- [10, 31, 32, 33, 1000, 1023, 1024, 1025].each do |size|
38
- context "on #{size}-item vectors" do
39
- it "behaves like Array#zip" do
40
- array = (rand(9)+1).times.map { size.times.map { rand(10000) }}
41
- vectors = array.map { |a| V.new(a) }
42
- result = vectors.first.zip(*vectors.drop(1))
43
- result.class.should be(Immutable::Vector)
44
- result.should == array[0].zip(*array.drop(1))
45
- end
46
- end
47
- end
48
-
49
- context "from a subclass" do
50
- it "returns an instance of the subclass" do
51
- subclass = Class.new(Immutable::Vector)
52
- instance = subclass.new([1,2,3])
53
- instance.zip([4,5,6]).class.should be(subclass)
54
- end
55
- end
56
- end
57
- end
@@ -1,42 +0,0 @@
1
- # It should be possible to require any one Immutable structure,
2
- # without loading all the others
3
-
4
- immutable_lib_dir = File.join(File.dirname(__FILE__), "..", "..", 'lib')
5
-
6
- describe :Immutable do
7
- describe :Hash do
8
- it "can be loaded separately" do
9
- system(%{ruby -e "$:.unshift('#{immutable_lib_dir}'); require 'immutable/hash'; Immutable::Hash.new"}).should be(true)
10
- end
11
- end
12
-
13
- describe :Set do
14
- it "can be loaded separately" do
15
- system(%{ruby -e "$:.unshift('#{immutable_lib_dir}'); require 'immutable/set'; Immutable::Set.new"}).should be(true)
16
- end
17
- end
18
-
19
- describe :Vector do
20
- it "can be loaded separately" do
21
- system(%{ruby -e "$:.unshift('#{immutable_lib_dir}'); require 'immutable/vector'; Immutable::Vector.new"}).should be(true)
22
- end
23
- end
24
-
25
- describe :List do
26
- it "can be loaded separately" do
27
- system(%{ruby -e "$:.unshift('#{immutable_lib_dir}'); require 'immutable/list'; Immutable::List[]"}).should be(true)
28
- end
29
- end
30
-
31
- describe :SortedSet do
32
- it "can be loaded separately" do
33
- system(%{ruby -e "$:.unshift('#{immutable_lib_dir}'); require 'immutable/sorted_set'; Immutable::SortedSet.new"}).should be(true)
34
- end
35
- end
36
-
37
- describe :Deque do
38
- it "can be loaded separately" do
39
- system(%{ruby -e "$:.unshift('#{immutable_lib_dir}'); require 'immutable/deque'; Immutable::Deque.new"}).should be(true)
40
- end
41
- end
42
- end
data/spec/spec_helper.rb DELETED
@@ -1,96 +0,0 @@
1
- require "pry"
2
- require "rspec"
3
- require "immutable/hash"
4
- require "immutable/set"
5
- require "immutable/vector"
6
- require "immutable/sorted_set"
7
- require "immutable/list"
8
- require "immutable/deque"
9
- require "immutable/core_ext"
10
- require "immutable/nested"
11
-
12
- # Suppress warnings from use of old RSpec expectation and mock syntax
13
- # If all tests are eventually updated to use the new syntax, this can be removed
14
- RSpec.configure do |config|
15
- config.expect_with :rspec do |c|
16
- c.syntax = [:should, :expect]
17
- end
18
- config.mock_with :rspec do |c|
19
- c.syntax = [:should, :expect]
20
- end
21
- end
22
-
23
- V = Immutable::Vector
24
- L = Immutable::List
25
- H = Immutable::Hash
26
- S = Immutable::Set
27
- SS = Immutable::SortedSet
28
- D = Immutable::Deque
29
- EmptyList = Immutable::EmptyList
30
-
31
- Struct.new("Customer", :name, :address)
32
-
33
- def fixture(name)
34
- File.read(fixture_path(name))
35
- end
36
-
37
- def fixture_path(name)
38
- File.join("spec", "fixtures", name)
39
- end
40
-
41
- if RUBY_ENGINE == "ruby"
42
- def calculate_stack_overflow_depth(n)
43
- calculate_stack_overflow_depth(n + 1)
44
- rescue SystemStackError
45
- n
46
- end
47
- STACK_OVERFLOW_DEPTH = calculate_stack_overflow_depth(2)
48
- else
49
- STACK_OVERFLOW_DEPTH = 16_384
50
- end
51
-
52
- BigList = Immutable.interval(0, STACK_OVERFLOW_DEPTH)
53
-
54
- class DeterministicHash
55
- attr_reader :hash, :value
56
-
57
- def initialize(value, hash)
58
- @value = value
59
- @hash = hash
60
- end
61
-
62
- def to_s
63
- @value.to_s
64
- end
65
-
66
- def inspect
67
- @value.inspect
68
- end
69
-
70
- def ==(other)
71
- other.is_a?(DeterministicHash) && self.value == other.value
72
- end
73
- alias :eql? :==
74
-
75
- def <=>(other)
76
- self.value <=> other.value
77
- end
78
- end
79
-
80
- class EqualNotEql
81
- def ==(other)
82
- true
83
- end
84
- def eql?(other)
85
- false
86
- end
87
- end
88
-
89
- class EqlNotEqual
90
- def ==(other)
91
- false
92
- end
93
- def eql?(other)
94
- true
95
- end
96
- end