hamster 1.0.1.pre.rc3 → 2.0.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.
- checksums.yaml +4 -4
- data/lib/hamster.rb +2 -0
- data/lib/hamster/associable.rb +49 -0
- data/lib/hamster/core_ext/enumerable.rb +3 -13
- data/lib/hamster/core_ext/io.rb +1 -1
- data/lib/hamster/core_ext/struct.rb +9 -0
- data/lib/hamster/deque.rb +57 -38
- data/lib/hamster/enumerable.rb +14 -41
- data/lib/hamster/experimental/mutable_queue.rb +5 -8
- data/lib/hamster/experimental/mutable_set.rb +6 -7
- data/lib/hamster/hash.rb +301 -110
- data/lib/hamster/immutable.rb +1 -1
- data/lib/hamster/list.rb +479 -194
- data/lib/hamster/mutable_hash.rb +6 -7
- data/lib/hamster/nested.rb +78 -0
- data/lib/hamster/read_copy_update.rb +1 -1
- data/lib/hamster/set.rb +198 -88
- data/lib/hamster/sorted_set.rb +706 -261
- data/lib/hamster/trie.rb +134 -15
- data/lib/hamster/vector.rb +571 -140
- data/lib/hamster/version.rb +3 -1
- data/spec/lib/hamster/associable/associable_spec.rb +150 -0
- data/spec/lib/hamster/core_ext/array_spec.rb +1 -1
- data/spec/lib/hamster/core_ext/enumerable_spec.rb +2 -2
- data/spec/lib/hamster/core_ext/io_spec.rb +1 -1
- data/spec/lib/hamster/deque/clear_spec.rb +3 -3
- data/spec/lib/hamster/deque/construction_spec.rb +8 -8
- data/spec/lib/hamster/deque/copying_spec.rb +1 -1
- data/spec/lib/hamster/deque/dequeue_spec.rb +12 -4
- data/spec/lib/hamster/deque/empty_spec.rb +14 -16
- data/spec/lib/hamster/deque/enqueue_spec.rb +4 -4
- data/spec/lib/hamster/deque/first_spec.rb +18 -0
- data/spec/lib/hamster/deque/inspect_spec.rb +1 -1
- data/spec/lib/hamster/deque/last_spec.rb +9 -11
- data/spec/lib/hamster/deque/marshal_spec.rb +6 -6
- data/spec/lib/hamster/deque/new_spec.rb +5 -5
- data/spec/lib/hamster/deque/pop_spec.rb +15 -3
- data/spec/lib/hamster/deque/pretty_print_spec.rb +24 -0
- data/spec/lib/hamster/deque/push_spec.rb +37 -0
- data/spec/lib/hamster/deque/shift_spec.rb +30 -0
- data/spec/lib/hamster/deque/size_spec.rb +1 -1
- data/spec/lib/hamster/deque/to_a_spec.rb +2 -2
- data/spec/lib/hamster/deque/to_ary_spec.rb +1 -1
- data/spec/lib/hamster/deque/to_list_spec.rb +3 -3
- data/spec/lib/hamster/deque/unshift_spec.rb +8 -3
- data/spec/lib/hamster/experimental/mutable_set/add_qm_spec.rb +3 -3
- data/spec/lib/hamster/experimental/mutable_set/add_spec.rb +3 -3
- data/spec/lib/hamster/experimental/mutable_set/delete_qm_spec.rb +3 -3
- data/spec/lib/hamster/experimental/mutable_set/delete_spec.rb +3 -3
- data/spec/lib/hamster/hash/all_spec.rb +32 -34
- data/spec/lib/hamster/hash/any_spec.rb +34 -36
- data/spec/lib/hamster/hash/assoc_spec.rb +3 -3
- data/spec/lib/hamster/hash/clear_spec.rb +4 -4
- data/spec/lib/hamster/hash/construction_spec.rb +8 -8
- data/spec/lib/hamster/hash/copying_spec.rb +1 -1
- data/spec/lib/hamster/hash/default_proc_spec.rb +3 -3
- data/spec/lib/hamster/hash/delete_spec.rb +4 -4
- data/spec/lib/hamster/hash/each_spec.rb +3 -3
- data/spec/lib/hamster/hash/each_with_index_spec.rb +1 -1
- data/spec/lib/hamster/hash/empty_spec.rb +13 -15
- data/spec/lib/hamster/hash/eql_spec.rb +4 -4
- data/spec/lib/hamster/hash/except_spec.rb +7 -7
- data/spec/lib/hamster/hash/fetch_spec.rb +10 -10
- data/spec/lib/hamster/hash/find_spec.rb +2 -2
- data/spec/lib/hamster/hash/flat_map_spec.rb +4 -4
- data/spec/lib/hamster/hash/flatten_spec.rb +13 -13
- data/spec/lib/hamster/hash/get_spec.rb +7 -7
- data/spec/lib/hamster/hash/has_key_spec.rb +3 -3
- data/spec/lib/hamster/hash/has_value_spec.rb +4 -4
- data/spec/lib/hamster/hash/hash_spec.rb +5 -5
- data/spec/lib/hamster/hash/inspect_spec.rb +2 -2
- data/spec/lib/hamster/hash/invert_spec.rb +6 -6
- data/spec/lib/hamster/hash/key_spec.rb +2 -2
- data/spec/lib/hamster/hash/keys_spec.rb +2 -2
- data/spec/lib/hamster/hash/map_spec.rb +4 -4
- data/spec/lib/hamster/hash/marshal_spec.rb +2 -2
- data/spec/lib/hamster/hash/merge_spec.rb +62 -56
- data/spec/lib/hamster/hash/min_max_spec.rb +9 -13
- data/spec/lib/hamster/hash/new_spec.rb +6 -6
- data/spec/lib/hamster/hash/none_spec.rb +3 -3
- data/spec/lib/hamster/hash/partition_spec.rb +2 -2
- data/spec/lib/hamster/hash/put_spec.rb +29 -7
- data/spec/lib/hamster/hash/reduce_spec.rb +4 -4
- data/spec/lib/hamster/hash/{remove_spec.rb → reject_spec.rb} +7 -7
- data/spec/lib/hamster/hash/reverse_each_spec.rb +1 -1
- data/spec/lib/hamster/hash/{filter_spec.rb → select_spec.rb} +6 -6
- data/spec/lib/hamster/hash/size_spec.rb +3 -3
- data/spec/lib/hamster/hash/slice_spec.rb +4 -4
- data/spec/lib/hamster/hash/sort_spec.rb +2 -2
- data/spec/lib/hamster/hash/store_spec.rb +29 -7
- data/spec/lib/hamster/hash/take_spec.rb +2 -2
- data/spec/lib/hamster/hash/to_a_spec.rb +1 -1
- data/spec/lib/hamster/hash/to_hash_spec.rb +4 -4
- data/spec/lib/hamster/hash/values_at_spec.rb +3 -3
- data/spec/lib/hamster/hash/values_spec.rb +2 -2
- data/spec/lib/hamster/immutable/new_spec.rb +14 -0
- data/spec/lib/hamster/list/add_spec.rb +16 -10
- data/spec/lib/hamster/list/all_spec.rb +33 -35
- data/spec/lib/hamster/list/any_spec.rb +29 -31
- data/spec/lib/hamster/list/append_spec.rb +6 -6
- data/spec/lib/hamster/list/at_spec.rb +1 -1
- data/spec/lib/hamster/list/break_spec.rb +4 -4
- data/spec/lib/hamster/list/cadr_spec.rb +9 -9
- data/spec/lib/hamster/list/chunk_spec.rb +5 -5
- data/spec/lib/hamster/list/clear_spec.rb +3 -3
- data/spec/lib/hamster/list/combination_spec.rb +3 -3
- data/spec/lib/hamster/list/compact_spec.rb +3 -3
- data/spec/lib/hamster/list/compare_spec.rb +3 -3
- data/spec/lib/hamster/list/cons_spec.rb +15 -17
- data/spec/lib/hamster/list/construction_spec.rb +20 -27
- data/spec/lib/hamster/list/copying_spec.rb +1 -1
- data/spec/lib/hamster/list/count_spec.rb +1 -1
- data/spec/lib/hamster/list/cycle_spec.rb +4 -4
- data/spec/lib/hamster/list/delete_at_spec.rb +4 -4
- data/spec/lib/hamster/list/drop_spec.rb +3 -3
- data/spec/lib/hamster/list/drop_while_spec.rb +3 -3
- data/spec/lib/hamster/list/each_slice_spec.rb +5 -5
- data/spec/lib/hamster/list/each_spec.rb +26 -28
- data/spec/lib/hamster/list/each_with_index_spec.rb +1 -1
- data/spec/lib/hamster/list/empty_spec.rb +13 -15
- data/spec/lib/hamster/list/eql_spec.rb +21 -21
- data/spec/lib/hamster/list/fill_spec.rb +8 -8
- data/spec/lib/hamster/list/find_all_spec.rb +3 -3
- data/spec/lib/hamster/list/find_index_spec.rb +1 -1
- data/spec/lib/hamster/list/find_spec.rb +1 -1
- data/spec/lib/hamster/list/flat_map_spec.rb +2 -2
- data/spec/lib/hamster/list/flatten_spec.rb +5 -5
- data/spec/lib/hamster/list/grep_spec.rb +4 -4
- data/spec/lib/hamster/list/group_by_spec.rb +6 -6
- data/spec/lib/hamster/list/hash_spec.rb +2 -2
- data/spec/lib/hamster/list/head_spec.rb +1 -1
- data/spec/lib/hamster/list/include_spec.rb +2 -2
- data/spec/lib/hamster/list/index_spec.rb +38 -0
- data/spec/lib/hamster/list/indices_spec.rb +62 -0
- data/spec/lib/hamster/list/init_spec.rb +3 -3
- data/spec/lib/hamster/list/inits_spec.rb +3 -3
- data/spec/lib/hamster/list/insert_spec.rb +1 -1
- data/spec/lib/hamster/list/inspect_spec.rb +1 -1
- data/spec/lib/hamster/list/intersperse_spec.rb +3 -3
- data/spec/lib/hamster/list/join_spec.rb +5 -5
- data/spec/lib/hamster/list/last_spec.rb +1 -1
- data/spec/lib/hamster/list/ltlt_spec.rb +20 -0
- data/spec/lib/hamster/list/map_spec.rb +4 -4
- data/spec/lib/hamster/list/maximum_spec.rb +24 -26
- data/spec/lib/hamster/list/merge_by_spec.rb +10 -10
- data/spec/lib/hamster/list/merge_spec.rb +10 -10
- data/spec/lib/hamster/list/minimum_spec.rb +24 -26
- data/spec/lib/hamster/list/multithreading_spec.rb +6 -6
- data/spec/lib/hamster/list/none_spec.rb +5 -5
- data/spec/lib/hamster/list/one_spec.rb +5 -5
- data/spec/lib/hamster/list/partition_spec.rb +8 -8
- data/spec/lib/hamster/list/permutation_spec.rb +8 -8
- data/spec/lib/hamster/list/pop_spec.rb +3 -3
- data/spec/lib/hamster/list/product_spec.rb +1 -1
- data/spec/lib/hamster/list/reduce_spec.rb +5 -48
- data/spec/lib/hamster/list/{remove_spec.rb → reject_spec.rb} +4 -4
- data/spec/lib/hamster/list/reverse_spec.rb +3 -3
- data/spec/lib/hamster/list/rotate_spec.rb +7 -7
- data/spec/lib/hamster/list/sample_spec.rb +1 -1
- data/spec/lib/hamster/list/select_spec.rb +3 -3
- data/spec/lib/hamster/list/size_spec.rb +1 -1
- data/spec/lib/hamster/list/slice_spec.rb +123 -123
- data/spec/lib/hamster/list/sorting_spec.rb +5 -5
- data/spec/lib/hamster/list/span_spec.rb +5 -5
- data/spec/lib/hamster/list/split_at_spec.rb +4 -4
- data/spec/lib/hamster/list/subsequences_spec.rb +1 -1
- data/spec/lib/hamster/list/sum_spec.rb +1 -1
- data/spec/lib/hamster/list/tail_spec.rb +4 -4
- data/spec/lib/hamster/list/tails_spec.rb +3 -3
- data/spec/lib/hamster/list/take_spec.rb +3 -3
- data/spec/lib/hamster/list/take_while_spec.rb +4 -4
- data/spec/lib/hamster/list/to_a_spec.rb +2 -2
- data/spec/lib/hamster/list/to_ary_spec.rb +1 -1
- data/spec/lib/hamster/list/to_list_spec.rb +1 -1
- data/spec/lib/hamster/list/to_set_spec.rb +1 -1
- data/spec/lib/hamster/list/union_spec.rb +4 -4
- data/spec/lib/hamster/list/uniq_spec.rb +23 -19
- data/spec/lib/hamster/list/zip_spec.rb +5 -5
- data/spec/lib/hamster/nested/construction_spec.rb +103 -0
- data/spec/lib/hamster/set/add_spec.rb +13 -11
- data/spec/lib/hamster/set/all_spec.rb +32 -34
- data/spec/lib/hamster/set/any_spec.rb +32 -34
- data/spec/lib/hamster/set/clear_spec.rb +3 -3
- data/spec/lib/hamster/set/compact_spec.rb +3 -3
- data/spec/lib/hamster/set/construction_spec.rb +3 -3
- data/spec/lib/hamster/set/copying_spec.rb +1 -1
- data/spec/lib/hamster/set/count_spec.rb +1 -1
- data/spec/lib/hamster/set/delete_spec.rb +8 -8
- data/spec/lib/hamster/set/difference_spec.rb +8 -8
- data/spec/lib/hamster/set/disjoint_spec.rb +1 -1
- data/spec/lib/hamster/set/each_spec.rb +2 -2
- data/spec/lib/hamster/set/empty_spec.rb +15 -17
- data/spec/lib/hamster/set/eqeq_spec.rb +3 -3
- data/spec/lib/hamster/set/eql_spec.rb +3 -3
- data/spec/lib/hamster/set/exclusion_spec.rb +7 -7
- data/spec/lib/hamster/set/find_spec.rb +2 -2
- data/spec/lib/hamster/set/first_spec.rb +29 -0
- data/spec/lib/hamster/set/flatten_spec.rb +9 -9
- data/spec/lib/hamster/set/grep_spec.rb +1 -1
- data/spec/lib/hamster/set/group_by_spec.rb +12 -12
- data/spec/lib/hamster/set/hash_spec.rb +3 -3
- data/spec/lib/hamster/set/include_spec.rb +8 -8
- data/spec/lib/hamster/set/inspect_spec.rb +2 -2
- data/spec/lib/hamster/set/intersect_spec.rb +1 -1
- data/spec/lib/hamster/set/intersection_spec.rb +13 -13
- data/spec/lib/hamster/set/join_spec.rb +6 -6
- data/spec/lib/hamster/set/map_spec.rb +7 -7
- data/spec/lib/hamster/set/marshal_spec.rb +2 -2
- data/spec/lib/hamster/set/maximum_spec.rb +22 -24
- data/spec/lib/hamster/set/minimum_spec.rb +22 -24
- data/spec/lib/hamster/set/new_spec.rb +5 -5
- data/spec/lib/hamster/set/none_spec.rb +5 -5
- data/spec/lib/hamster/set/one_spec.rb +6 -6
- data/spec/lib/hamster/set/partition_spec.rb +5 -5
- data/spec/lib/hamster/set/product_spec.rb +2 -2
- data/spec/lib/hamster/set/reduce_spec.rb +5 -5
- data/spec/lib/hamster/set/{remove_spec.rb → reject_spec.rb} +6 -6
- data/spec/lib/hamster/set/reverse_each_spec.rb +1 -1
- data/spec/lib/hamster/set/sample_spec.rb +1 -1
- data/spec/lib/hamster/set/{filter_spec.rb → select_spec.rb} +11 -11
- data/spec/lib/hamster/set/size_spec.rb +1 -1
- data/spec/lib/hamster/set/sorting_spec.rb +16 -5
- data/spec/lib/hamster/set/subset_spec.rb +2 -2
- data/spec/lib/hamster/set/sum_spec.rb +2 -2
- data/spec/lib/hamster/set/superset_spec.rb +2 -2
- data/spec/lib/hamster/set/to_a_spec.rb +2 -2
- data/spec/lib/hamster/set/to_list_spec.rb +2 -2
- data/spec/lib/hamster/set/to_set_spec.rb +1 -1
- data/spec/lib/hamster/set/union_spec.rb +23 -14
- data/spec/lib/hamster/sorted_set/above_spec.rb +11 -11
- data/spec/lib/hamster/sorted_set/add_spec.rb +8 -8
- data/spec/lib/hamster/sorted_set/at_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/below_spec.rb +11 -11
- data/spec/lib/hamster/sorted_set/between_spec.rb +11 -11
- data/spec/lib/hamster/sorted_set/clear_spec.rb +11 -2
- data/spec/lib/hamster/sorted_set/copying_spec.rb +21 -0
- data/spec/lib/hamster/sorted_set/delete_at_spec.rb +4 -4
- data/spec/lib/hamster/sorted_set/delete_spec.rb +21 -12
- data/spec/lib/hamster/sorted_set/difference_spec.rb +2 -2
- data/spec/lib/hamster/sorted_set/disjoint_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/drop_spec.rb +30 -3
- data/spec/lib/hamster/sorted_set/drop_while_spec.rb +4 -4
- data/spec/lib/hamster/sorted_set/each_spec.rb +16 -18
- data/spec/lib/hamster/sorted_set/empty_spec.rb +12 -14
- data/spec/lib/hamster/sorted_set/eql_spec.rb +5 -5
- data/spec/lib/hamster/sorted_set/exclusion_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/fetch_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/find_index_spec.rb +10 -2
- data/spec/lib/hamster/sorted_set/first_spec.rb +10 -12
- data/spec/lib/hamster/sorted_set/from_spec.rb +11 -11
- data/spec/lib/hamster/sorted_set/group_by_spec.rb +10 -10
- data/spec/lib/hamster/sorted_set/include_spec.rb +2 -2
- data/spec/lib/hamster/sorted_set/inspect_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/intersect_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/intersection_spec.rb +3 -3
- data/spec/lib/hamster/sorted_set/last_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/map_spec.rb +13 -5
- data/spec/lib/hamster/sorted_set/marshal_spec.rb +3 -3
- data/spec/lib/hamster/sorted_set/maximum_spec.rb +37 -0
- data/spec/lib/hamster/sorted_set/minimum_spec.rb +11 -13
- data/spec/lib/hamster/sorted_set/new_spec.rb +23 -3
- data/spec/lib/hamster/sorted_set/reverse_each_spec.rb +2 -2
- data/spec/lib/hamster/sorted_set/{filter_spec.rb → select_spec.rb} +10 -10
- data/spec/lib/hamster/sorted_set/size_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/slice_spec.rb +158 -142
- data/spec/lib/hamster/sorted_set/sorting_spec.rb +3 -3
- data/spec/lib/hamster/sorted_set/subset_spec.rb +2 -2
- data/spec/lib/hamster/sorted_set/superset_spec.rb +2 -2
- data/spec/lib/hamster/sorted_set/take_spec.rb +32 -3
- data/spec/lib/hamster/sorted_set/take_while_spec.rb +4 -4
- data/spec/lib/hamster/sorted_set/to_set_spec.rb +1 -1
- data/spec/lib/hamster/sorted_set/union_spec.rb +2 -2
- data/spec/lib/hamster/sorted_set/up_to_spec.rb +12 -11
- data/spec/lib/hamster/sorted_set/values_at_spec.rb +6 -6
- data/spec/lib/hamster/vector/add_spec.rb +3 -3
- data/spec/lib/hamster/vector/any_spec.rb +1 -1
- data/spec/lib/hamster/vector/assoc_spec.rb +11 -1
- data/spec/lib/hamster/vector/bsearch_spec.rb +10 -2
- data/spec/lib/hamster/vector/clear_spec.rb +3 -3
- data/spec/lib/hamster/vector/combination_spec.rb +4 -4
- data/spec/lib/hamster/vector/compact_spec.rb +2 -2
- data/spec/lib/hamster/vector/compare_spec.rb +3 -3
- data/spec/lib/hamster/vector/concat_spec.rb +2 -2
- data/spec/lib/hamster/vector/copying_spec.rb +1 -1
- data/spec/lib/hamster/vector/delete_at_spec.rb +8 -8
- data/spec/lib/hamster/vector/delete_spec.rb +2 -2
- data/spec/lib/hamster/vector/drop_spec.rb +10 -3
- data/spec/lib/hamster/vector/drop_while_spec.rb +5 -5
- data/spec/lib/hamster/vector/each_index_spec.rb +2 -2
- data/spec/lib/hamster/vector/each_spec.rb +27 -29
- data/spec/lib/hamster/vector/each_with_index_spec.rb +2 -2
- data/spec/lib/hamster/vector/empty_spec.rb +11 -13
- data/spec/lib/hamster/vector/eql_spec.rb +6 -6
- data/spec/lib/hamster/vector/fetch_spec.rb +1 -1
- data/spec/lib/hamster/vector/fill_spec.rb +9 -9
- data/spec/lib/hamster/vector/first_spec.rb +10 -12
- data/spec/lib/hamster/vector/flat_map_spec.rb +51 -0
- data/spec/lib/hamster/vector/flatten_spec.rb +15 -0
- data/spec/lib/hamster/vector/get_spec.rb +4 -4
- data/spec/lib/hamster/vector/group_by_spec.rb +12 -12
- data/spec/lib/hamster/vector/include_spec.rb +2 -2
- data/spec/lib/hamster/vector/insert_spec.rb +2 -2
- data/spec/lib/hamster/vector/inspect_spec.rb +1 -1
- data/spec/lib/hamster/vector/join_spec.rb +5 -5
- data/spec/lib/hamster/vector/last_spec.rb +1 -1
- data/spec/lib/hamster/vector/length_spec.rb +1 -1
- data/spec/lib/hamster/vector/ltlt_spec.rb +2 -2
- data/spec/lib/hamster/vector/map_spec.rb +5 -5
- data/spec/lib/hamster/vector/marshal_spec.rb +2 -2
- data/spec/lib/hamster/vector/maximum_spec.rb +20 -22
- data/spec/lib/hamster/vector/minimum_spec.rb +20 -22
- data/spec/lib/hamster/vector/multiply_spec.rb +4 -4
- data/spec/lib/hamster/vector/partition_spec.rb +5 -5
- data/spec/lib/hamster/vector/permutation_spec.rb +4 -4
- data/spec/lib/hamster/vector/pop_spec.rb +3 -3
- data/spec/lib/hamster/vector/product_spec.rb +10 -10
- data/spec/lib/hamster/vector/put_spec.rb +175 -0
- data/spec/lib/hamster/vector/reduce_spec.rb +5 -57
- data/spec/lib/hamster/vector/{remove_spec.rb → reject_spec.rb} +4 -4
- data/spec/lib/hamster/vector/repeated_combination_spec.rb +4 -4
- data/spec/lib/hamster/vector/repeated_permutation_spec.rb +6 -6
- data/spec/lib/hamster/vector/reverse_each_spec.rb +1 -1
- data/spec/lib/hamster/vector/reverse_spec.rb +1 -1
- data/spec/lib/hamster/vector/rindex_spec.rb +1 -1
- data/spec/lib/hamster/vector/rotate_spec.rb +9 -9
- data/spec/lib/hamster/vector/sample_spec.rb +1 -1
- data/spec/lib/hamster/vector/{filter_spec.rb → select_spec.rb} +8 -8
- data/spec/lib/hamster/vector/set_spec.rb +12 -141
- data/spec/lib/hamster/vector/shift_spec.rb +3 -3
- data/spec/lib/hamster/vector/shuffle_spec.rb +2 -2
- data/spec/lib/hamster/vector/slice_spec.rb +137 -137
- data/spec/lib/hamster/vector/sorting_spec.rb +5 -5
- data/spec/lib/hamster/vector/sum_spec.rb +1 -1
- data/spec/lib/hamster/vector/take_spec.rb +17 -3
- data/spec/lib/hamster/vector/take_while_spec.rb +4 -4
- data/spec/lib/hamster/vector/to_a_spec.rb +1 -1
- data/spec/lib/hamster/vector/to_ary_spec.rb +1 -1
- data/spec/lib/hamster/vector/to_list_spec.rb +2 -1
- data/spec/lib/hamster/vector/to_set_spec.rb +1 -1
- data/spec/lib/hamster/vector/uniq_spec.rb +27 -6
- data/spec/lib/hamster/vector/unshift_spec.rb +3 -3
- data/spec/lib/hamster/vector/values_at_spec.rb +6 -6
- data/spec/lib/hamster/vector/zip_spec.rb +2 -2
- data/spec/lib/load_spec.rb +42 -0
- data/spec/spec_helper.rb +25 -0
- metadata +85 -48
- data/spec/lib/hamster/deque/head_spec.rb +0 -20
- data/spec/lib/hamster/hash/uniq_spec.rb +0 -14
- data/spec/lib/hamster/list/elem_index_spec.rb +0 -36
- data/spec/lib/hamster/list/elem_indices_spec.rb +0 -31
- data/spec/lib/hamster/list/filter_spec.rb +0 -71
- data/spec/lib/hamster/list/find_indices_spec.rb +0 -37
- data/spec/lib/hamster/set/foreach_spec.rb +0 -40
- data/spec/lib/hamster/set/head_spec.rb +0 -31
- data/spec/lib/hamster/set/uniq_spec.rb +0 -14
- data/spec/lib/hamster/sorted_set/construction_spec.rb +0 -29
- data/spec/lib/hamster/vector/exist_spec.rb +0 -70
- data/spec/lib/hamster/vector/exists_spec.rb +0 -70
@@ -10,7 +10,7 @@ describe Hamster::List do
|
|
10
10
|
|
11
11
|
it "calls the passed block only once for each item" do
|
12
12
|
count = 0
|
13
|
-
a,b =
|
13
|
+
a,b = L[1, 2, 3].partition { |item| count += 1; item.odd? }
|
14
14
|
(a.size + b.size).should be(3) # force realization of lazy lists
|
15
15
|
count.should be(3)
|
16
16
|
end
|
@@ -20,7 +20,7 @@ describe Hamster::List do
|
|
20
20
|
|
21
21
|
it "returns a lazy list of items for which predicate is true" do
|
22
22
|
count = 0
|
23
|
-
a,b =
|
23
|
+
a,b = L[1, 2, 3, 4].partition { |item| count += 1; item.odd? }
|
24
24
|
a.take(1).should == [1]
|
25
25
|
count.should be(3) # would be 1 if lists were lazier
|
26
26
|
a.take(2).should == [1, 3]
|
@@ -29,7 +29,7 @@ describe Hamster::List do
|
|
29
29
|
|
30
30
|
it "returns a lazy list of items for which predicate is false" do
|
31
31
|
count = 0
|
32
|
-
a,b =
|
32
|
+
a,b = L[1, 2, 3, 4].partition { |item| count += 1; item.odd? }
|
33
33
|
b.take(1).should == [2]
|
34
34
|
count.should be(4) # would be 2 if lists were lazier
|
35
35
|
b.take(2).should == [2, 4]
|
@@ -78,7 +78,7 @@ describe Hamster::List do
|
|
78
78
|
[[4], [], [4]],
|
79
79
|
].each do |values, expected_matches, expected_remainder|
|
80
80
|
context "on #{values.inspect}" do
|
81
|
-
let(:list) {
|
81
|
+
let(:list) { L[*values] }
|
82
82
|
|
83
83
|
context "with a block" do
|
84
84
|
let(:result) { list.partition(&:odd?) }
|
@@ -86,7 +86,7 @@ describe Hamster::List do
|
|
86
86
|
let(:remainder) { result.last }
|
87
87
|
|
88
88
|
it "preserves the original" do
|
89
|
-
list.should eql(
|
89
|
+
list.should eql(L[*values])
|
90
90
|
end
|
91
91
|
|
92
92
|
it "returns a frozen array with two items" do
|
@@ -96,18 +96,18 @@ describe Hamster::List do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
it "correctly identifies the matches" do
|
99
|
-
matches.should eql(
|
99
|
+
matches.should eql(L[*expected_matches])
|
100
100
|
end
|
101
101
|
|
102
102
|
it "correctly identifies the remainder" do
|
103
|
-
remainder.should eql(
|
103
|
+
remainder.should eql(L[*expected_remainder])
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
107
|
context "without a block" do
|
108
108
|
it "returns an Enumerator" do
|
109
109
|
list.partition.class.should be(Enumerator)
|
110
|
-
list.partition.each(&:odd?).should eql([
|
110
|
+
list.partition.each(&:odd?).should eql([L[*expected_matches], L[*expected_remainder]])
|
111
111
|
end
|
112
112
|
end
|
113
113
|
end
|
@@ -3,36 +3,36 @@ require "hamster/list"
|
|
3
3
|
|
4
4
|
describe Hamster::List do
|
5
5
|
describe "#permutation" do
|
6
|
-
let(:list) {
|
6
|
+
let(:list) { L[1,2,3,4] }
|
7
7
|
|
8
8
|
context "with no block" do
|
9
9
|
it "returns an Enumerator" do
|
10
10
|
list.permutation.class.should be(Enumerator)
|
11
|
-
list.permutation.to_a.sort.should == [1,2,3,4
|
11
|
+
list.permutation.to_a.sort.should == [1,2,3,4].permutation.to_a.sort
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
context "with no argument" do
|
16
16
|
it "yields all permutations of the list" do
|
17
17
|
perms = list.permutation.to_a
|
18
|
-
perms.size.should be(
|
19
|
-
perms.sort.should == [1,2,3,4
|
18
|
+
perms.size.should be(24)
|
19
|
+
perms.sort.should == [1,2,3,4].permutation.to_a.sort
|
20
20
|
perms.each { |item| item.should be_kind_of(Hamster::List) }
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
context "with a length argument" do
|
25
25
|
it "yields all N-size permutations of the list" do
|
26
|
-
perms = list.permutation(
|
27
|
-
perms.size.should be(
|
28
|
-
perms.sort.should == [1,2,3,4
|
26
|
+
perms = list.permutation(2).to_a
|
27
|
+
perms.size.should be(12)
|
28
|
+
perms.sort.should == [1,2,3,4].permutation(2).to_a.sort
|
29
29
|
perms.each { |item| item.should be_kind_of(Hamster::List) }
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
context "with a length argument greater than length of list" do
|
34
34
|
it "yields nothing" do
|
35
|
-
list.permutation(
|
35
|
+
list.permutation(5).to_a.should be_empty
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
require "hamster/list"
|
3
3
|
|
4
4
|
describe Hamster::List do
|
5
|
-
let(:list) {
|
5
|
+
let(:list) { L[*values] }
|
6
6
|
|
7
7
|
describe "#pop" do
|
8
8
|
let(:pop) { list.pop }
|
@@ -11,7 +11,7 @@ describe Hamster::List do
|
|
11
11
|
let(:values) { [] }
|
12
12
|
|
13
13
|
it "returns an empty list" do
|
14
|
-
expect(pop).to eq(
|
14
|
+
expect(pop).to eq(L.empty)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -19,7 +19,7 @@ describe Hamster::List do
|
|
19
19
|
let(:values) { %w[a b c] }
|
20
20
|
|
21
21
|
it "removes the last item" do
|
22
|
-
expect(pop).to eq(
|
22
|
+
expect(pop).to eq(L["a", "b"])
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
require "hamster/list"
|
3
3
|
|
4
4
|
describe Hamster::List do
|
5
|
-
[:reduce, :inject
|
5
|
+
[:reduce, :inject].each do |method|
|
6
6
|
describe "##{method}" do
|
7
7
|
context "on a really big list" do
|
8
8
|
it "doesn't run out of stack" do
|
@@ -18,7 +18,7 @@ describe Hamster::List do
|
|
18
18
|
context "on #{values.inspect}" do
|
19
19
|
context "with an initial value of #{initial} and a block" do
|
20
20
|
it "returns #{expected.inspect}" do
|
21
|
-
|
21
|
+
L[*values].send(method, initial) { |memo, item| memo - item }.should == expected
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -32,7 +32,7 @@ describe Hamster::List do
|
|
32
32
|
context "on #{values.inspect}" do
|
33
33
|
context "with no initial value and a block" do
|
34
34
|
it "returns #{expected.inspect}" do
|
35
|
-
|
35
|
+
L[*values].send(method) { |memo, item| memo - item }.should == expected
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -40,58 +40,15 @@ describe Hamster::List do
|
|
40
40
|
|
41
41
|
context "with no block and a symbol argument" do
|
42
42
|
it "uses the symbol as the name of a method to reduce with" do
|
43
|
-
|
43
|
+
L[1, 2, 3].send(method, :+).should == 6
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
47
|
context "with no block and a string argument" do
|
48
48
|
it "uses the string as the name of a method to reduce with" do
|
49
|
-
|
49
|
+
L[1, 2, 3].send(method, '+').should == 6
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
|
-
|
55
|
-
describe "#foldr" do
|
56
|
-
[
|
57
|
-
[[], 10, 10],
|
58
|
-
[[1], 10, 9],
|
59
|
-
[[1, 2, 3], 10, 4],
|
60
|
-
].each do |values, initial, expected|
|
61
|
-
context "on #{values.inspect}" do
|
62
|
-
context "with an initial value of #{initial} and a block" do
|
63
|
-
it "returns #{expected.inspect}" do
|
64
|
-
Hamster.list(*values).foldr(initial) { |memo, item| memo - item }.should == expected
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
[
|
71
|
-
[[], nil],
|
72
|
-
[[1], 1],
|
73
|
-
[[1, 2, 3], 0],
|
74
|
-
[[1, 2, 3, 4], -2]
|
75
|
-
].each do |values, expected|
|
76
|
-
context "on #{values.inspect}" do
|
77
|
-
context "with no initial value and a block" do
|
78
|
-
it "returns #{expected.inspect}" do
|
79
|
-
Hamster.list(*values).foldr { |memo, item| memo - item }.should == expected
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
context "with no block and a symbol argument" do
|
86
|
-
it "uses the symbol as the name of a method to reduce with" do
|
87
|
-
Hamster.list(1, 2, 3).foldr(:+).should == 6
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
context "with no block and a string argument" do
|
92
|
-
it "uses the string as the name of a method to reduce with" do
|
93
|
-
Hamster.list(1, 2, 3).foldr('+').should == 6
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
54
|
end
|
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
require "hamster/list"
|
3
3
|
|
4
4
|
describe Hamster::List do
|
5
|
-
[:
|
5
|
+
[:reject, :delete_if].each do |method|
|
6
6
|
describe "##{method}" do
|
7
7
|
it "is lazy" do
|
8
8
|
-> { Hamster.stream { fail }.send(method) { |item| false } }.should_not raise_error
|
@@ -16,11 +16,11 @@ describe Hamster::List do
|
|
16
16
|
[%w[a b c], []],
|
17
17
|
].each do |values, expected|
|
18
18
|
context "on #{values.inspect}" do
|
19
|
-
let(:list) {
|
19
|
+
let(:list) { L[*values] }
|
20
20
|
|
21
21
|
context "with a block" do
|
22
22
|
it "returns #{expected.inspect}" do
|
23
|
-
list.send(method) { |item| item == item.downcase }.should eql(
|
23
|
+
list.send(method) { |item| item == item.downcase }.should eql(L[*expected])
|
24
24
|
end
|
25
25
|
|
26
26
|
it "is lazy" do
|
@@ -36,7 +36,7 @@ describe Hamster::List do
|
|
36
36
|
context "without a block" do
|
37
37
|
it "returns an Enumerator" do
|
38
38
|
list.send(method).class.should be(Enumerator)
|
39
|
-
list.send(method).each { |item| item == item.downcase }.should eql(
|
39
|
+
list.send(method).each { |item| item == item.downcase }.should eql(L[*expected])
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -19,15 +19,15 @@ describe Hamster::List do
|
|
19
19
|
[%w[A B C], %w[C B A]],
|
20
20
|
].each do |values, expected|
|
21
21
|
context "on #{values.inspect}" do
|
22
|
-
let(:list) {
|
22
|
+
let(:list) { L[*values] }
|
23
23
|
|
24
24
|
it "preserves the original" do
|
25
25
|
list.reverse { |item| item.downcase }
|
26
|
-
list.should eql(
|
26
|
+
list.should eql(L[*values])
|
27
27
|
end
|
28
28
|
|
29
29
|
it "returns #{expected.inspect}" do
|
30
|
-
list.reverse { |item| item.downcase }.should ==
|
30
|
+
list.reverse { |item| item.downcase }.should == L[*expected]
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -3,21 +3,21 @@ require "hamster/list"
|
|
3
3
|
|
4
4
|
describe Hamster::List do
|
5
5
|
describe "#rotate" do
|
6
|
-
let(:list) {
|
6
|
+
let(:list) { L[1,2,3,4,5] }
|
7
7
|
|
8
8
|
context "when passed no argument" do
|
9
9
|
it "returns a new list with the first element moved to the end" do
|
10
|
-
list.rotate.should eql(
|
10
|
+
list.rotate.should eql(L[2,3,4,5,1])
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
context "with an integral argument n" do
|
15
15
|
it "returns a new list with the first (n % size) elements moved to the end" do
|
16
|
-
list.rotate(2).should eql(
|
17
|
-
list.rotate(3).should eql(
|
18
|
-
list.rotate(4).should eql(
|
19
|
-
list.rotate(5).should eql(
|
20
|
-
list.rotate(-1).should eql(
|
16
|
+
list.rotate(2).should eql(L[3,4,5,1,2])
|
17
|
+
list.rotate(3).should eql(L[4,5,1,2,3])
|
18
|
+
list.rotate(4).should eql(L[5,1,2,3,4])
|
19
|
+
list.rotate(5).should eql(L[1,2,3,4,5])
|
20
|
+
list.rotate(-1).should eql(L[5,1,2,3,4])
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -2,8 +2,8 @@ require "spec_helper"
|
|
2
2
|
require "hamster/list"
|
3
3
|
|
4
4
|
describe Hamster::List do
|
5
|
-
let(:list) {
|
6
|
-
let(:selected_list) {
|
5
|
+
let(:list) { L[*values] }
|
6
|
+
let(:selected_list) { L[*selected_values] }
|
7
7
|
|
8
8
|
describe "#select" do
|
9
9
|
it "is lazy" do
|
@@ -15,7 +15,7 @@ describe Hamster::List do
|
|
15
15
|
let(:select) { list.select { |item| item == item.upcase } }
|
16
16
|
|
17
17
|
it "preserves the original" do
|
18
|
-
expect(list).to eq(
|
18
|
+
expect(list).to eq(L[*values])
|
19
19
|
end
|
20
20
|
|
21
21
|
it "returns the selected list" do
|
@@ -2,8 +2,8 @@ require "spec_helper"
|
|
2
2
|
require "hamster/list"
|
3
3
|
|
4
4
|
describe Hamster::List do
|
5
|
-
let(:list) {
|
6
|
-
let(:big) {
|
5
|
+
let(:list) { L[1,2,3,4] }
|
6
|
+
let(:big) { (1..10000).to_list }
|
7
7
|
|
8
8
|
[:slice, :[]].each do |method|
|
9
9
|
describe "##{method}" do
|
@@ -21,7 +21,7 @@ describe Hamster::List do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "leaves the original unchanged" do
|
24
|
-
list.should eql(
|
24
|
+
list.should eql(L[1,2,3,4])
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -41,21 +41,21 @@ describe Hamster::List do
|
|
41
41
|
|
42
42
|
context "when passed a positive integral index and count" do
|
43
43
|
it "returns 'count' elements starting from 'index'" do
|
44
|
-
list.send(method, 0, 0).should eql(
|
45
|
-
list.send(method, 0, 1).should eql(
|
46
|
-
list.send(method, 0, 2).should eql(
|
47
|
-
list.send(method, 0, 4).should eql(
|
48
|
-
list.send(method, 0, 6).should eql(
|
44
|
+
list.send(method, 0, 0).should eql(L.empty)
|
45
|
+
list.send(method, 0, 1).should eql(L[1])
|
46
|
+
list.send(method, 0, 2).should eql(L[1,2])
|
47
|
+
list.send(method, 0, 4).should eql(L[1,2,3,4])
|
48
|
+
list.send(method, 0, 6).should eql(L[1,2,3,4])
|
49
49
|
list.send(method, 0, -1).should be_nil
|
50
50
|
list.send(method, 0, -2).should be_nil
|
51
51
|
list.send(method, 0, -4).should be_nil
|
52
|
-
list.send(method, 2, 0).should eql(
|
53
|
-
list.send(method, 2, 1).should eql(
|
54
|
-
list.send(method, 2, 2).should eql(
|
55
|
-
list.send(method, 2, 4).should eql(
|
52
|
+
list.send(method, 2, 0).should eql(L.empty)
|
53
|
+
list.send(method, 2, 1).should eql(L[3])
|
54
|
+
list.send(method, 2, 2).should eql(L[3,4])
|
55
|
+
list.send(method, 2, 4).should eql(L[3,4])
|
56
56
|
list.send(method, 2, -1).should be_nil
|
57
|
-
list.send(method, 4, 0).should eql(
|
58
|
-
list.send(method, 4, 2).should eql(
|
57
|
+
list.send(method, 4, 0).should eql(L.empty)
|
58
|
+
list.send(method, 4, 2).should eql(L.empty)
|
59
59
|
list.send(method, 4, -1).should be_nil
|
60
60
|
list.send(method, 5, 0).should be_nil
|
61
61
|
list.send(method, 5, 2).should be_nil
|
@@ -64,145 +64,145 @@ describe Hamster::List do
|
|
64
64
|
list.send(method, 6, 2).should be_nil
|
65
65
|
list.send(method, 6, -1).should be_nil
|
66
66
|
|
67
|
-
big.send(method, 0, 3).should eql(
|
68
|
-
big.send(method, 1023, 4).should eql(
|
69
|
-
big.send(method, 1024, 4).should eql(
|
67
|
+
big.send(method, 0, 3).should eql(L[1,2,3])
|
68
|
+
big.send(method, 1023, 4).should eql(L[1024,1025,1026,1027])
|
69
|
+
big.send(method, 1024, 4).should eql(L[1025,1026,1027,1028])
|
70
70
|
end
|
71
71
|
|
72
72
|
it "leaves the original unchanged" do
|
73
|
-
list.should eql(
|
73
|
+
list.should eql(L[1,2,3,4])
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
77
|
context "when passed a negative integral index and count" do
|
78
78
|
it "returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array" do
|
79
|
-
list.send(method, -1, 0).should eql(
|
80
|
-
list.send(method, -1, 1).should eql(
|
81
|
-
list.send(method, -1, 2).should eql(
|
79
|
+
list.send(method, -1, 0).should eql(L.empty)
|
80
|
+
list.send(method, -1, 1).should eql(L[4])
|
81
|
+
list.send(method, -1, 2).should eql(L[4])
|
82
82
|
list.send(method, -1, -1).should be_nil
|
83
|
-
list.send(method, -2, 0).should eql(
|
84
|
-
list.send(method, -2, 1).should eql(
|
85
|
-
list.send(method, -2, 2).should eql(
|
86
|
-
list.send(method, -2, 4).should eql(
|
83
|
+
list.send(method, -2, 0).should eql(L.empty)
|
84
|
+
list.send(method, -2, 1).should eql(L[3])
|
85
|
+
list.send(method, -2, 2).should eql(L[3,4])
|
86
|
+
list.send(method, -2, 4).should eql(L[3,4])
|
87
87
|
list.send(method, -2, -1).should be_nil
|
88
|
-
list.send(method, -4, 0).should eql(
|
89
|
-
list.send(method, -4, 1).should eql(
|
90
|
-
list.send(method, -4, 2).should eql(
|
91
|
-
list.send(method, -4, 4).should eql(
|
92
|
-
list.send(method, -4, 6).should eql(
|
88
|
+
list.send(method, -4, 0).should eql(L.empty)
|
89
|
+
list.send(method, -4, 1).should eql(L[1])
|
90
|
+
list.send(method, -4, 2).should eql(L[1,2])
|
91
|
+
list.send(method, -4, 4).should eql(L[1,2,3,4])
|
92
|
+
list.send(method, -4, 6).should eql(L[1,2,3,4])
|
93
93
|
list.send(method, -4, -1).should be_nil
|
94
94
|
list.send(method, -5, 0).should be_nil
|
95
95
|
list.send(method, -5, 1).should be_nil
|
96
96
|
list.send(method, -5, 10).should be_nil
|
97
97
|
list.send(method, -5, -1).should be_nil
|
98
98
|
|
99
|
-
big.send(method, -1, 1).should eql(
|
100
|
-
big.send(method, -1, 2).should eql(
|
101
|
-
big.send(method, -6, 2).should eql(
|
99
|
+
big.send(method, -1, 1).should eql(L[10000])
|
100
|
+
big.send(method, -1, 2).should eql(L[10000])
|
101
|
+
big.send(method, -6, 2).should eql(L[9995,9996])
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
105
|
context "when passed a Range" do
|
106
106
|
it "returns the elements whose indexes are within the given Range" do
|
107
|
-
list.send(method, 0..-1).should eql(
|
108
|
-
list.send(method, 0..-10).should eql(
|
109
|
-
list.send(method, 0..0).should eql(
|
110
|
-
list.send(method, 0..1).should eql(
|
111
|
-
list.send(method, 0..2).should eql(
|
112
|
-
list.send(method, 0..3).should eql(
|
113
|
-
list.send(method, 0..4).should eql(
|
114
|
-
list.send(method, 0..10).should eql(
|
115
|
-
list.send(method, 2..-10).should eql(
|
116
|
-
list.send(method, 2..0).should eql(
|
117
|
-
list.send(method, 2..2).should eql(
|
118
|
-
list.send(method, 2..3).should eql(
|
119
|
-
list.send(method, 2..4).should eql(
|
120
|
-
list.send(method, 3..0).should eql(
|
121
|
-
list.send(method, 3..3).should eql(
|
122
|
-
list.send(method, 3..4).should eql(
|
123
|
-
list.send(method, 4..0).should eql(
|
124
|
-
list.send(method, 4..4).should eql(
|
125
|
-
list.send(method, 4..5).should eql(
|
107
|
+
list.send(method, 0..-1).should eql(L[1,2,3,4])
|
108
|
+
list.send(method, 0..-10).should eql(L.empty)
|
109
|
+
list.send(method, 0..0).should eql(L[1])
|
110
|
+
list.send(method, 0..1).should eql(L[1,2])
|
111
|
+
list.send(method, 0..2).should eql(L[1,2,3])
|
112
|
+
list.send(method, 0..3).should eql(L[1,2,3,4])
|
113
|
+
list.send(method, 0..4).should eql(L[1,2,3,4])
|
114
|
+
list.send(method, 0..10).should eql(L[1,2,3,4])
|
115
|
+
list.send(method, 2..-10).should eql(L.empty)
|
116
|
+
list.send(method, 2..0).should eql(L.empty)
|
117
|
+
list.send(method, 2..2).should eql(L[3])
|
118
|
+
list.send(method, 2..3).should eql(L[3,4])
|
119
|
+
list.send(method, 2..4).should eql(L[3,4])
|
120
|
+
list.send(method, 3..0).should eql(L.empty)
|
121
|
+
list.send(method, 3..3).should eql(L[4])
|
122
|
+
list.send(method, 3..4).should eql(L[4])
|
123
|
+
list.send(method, 4..0).should eql(L.empty)
|
124
|
+
list.send(method, 4..4).should eql(L.empty)
|
125
|
+
list.send(method, 4..5).should eql(L.empty)
|
126
126
|
list.send(method, 5..0).should be_nil
|
127
127
|
list.send(method, 5..5).should be_nil
|
128
128
|
list.send(method, 5..6).should be_nil
|
129
129
|
|
130
|
-
big.send(method, 159..162).should eql(
|
131
|
-
big.send(method, 160..162).should eql(
|
132
|
-
big.send(method, 161..162).should eql(
|
133
|
-
big.send(method, 9999..10100).should eql(
|
134
|
-
big.send(method, 10000..10100).should eql(
|
130
|
+
big.send(method, 159..162).should eql(L[160,161,162,163])
|
131
|
+
big.send(method, 160..162).should eql(L[161,162,163])
|
132
|
+
big.send(method, 161..162).should eql(L[162,163])
|
133
|
+
big.send(method, 9999..10100).should eql(L[10000])
|
134
|
+
big.send(method, 10000..10100).should eql(L.empty)
|
135
135
|
big.send(method, 10001..10100).should be_nil
|
136
136
|
|
137
|
-
list.send(method, 0...-1).should eql(
|
138
|
-
list.send(method, 0...-10).should eql(
|
139
|
-
list.send(method, 0...0).should eql(
|
140
|
-
list.send(method, 0...1).should eql(
|
141
|
-
list.send(method, 0...2).should eql(
|
142
|
-
list.send(method, 0...3).should eql(
|
143
|
-
list.send(method, 0...4).should eql(
|
144
|
-
list.send(method, 0...10).should eql(
|
145
|
-
list.send(method, 2...-10).should eql(
|
146
|
-
list.send(method, 2...0).should eql(
|
147
|
-
list.send(method, 2...2).should eql(
|
148
|
-
list.send(method, 2...3).should eql(
|
149
|
-
list.send(method, 2...4).should eql(
|
150
|
-
list.send(method, 3...0).should eql(
|
151
|
-
list.send(method, 3...3).should eql(
|
152
|
-
list.send(method, 3...4).should eql(
|
153
|
-
list.send(method, 4...0).should eql(
|
154
|
-
list.send(method, 4...4).should eql(
|
155
|
-
list.send(method, 4...5).should eql(
|
137
|
+
list.send(method, 0...-1).should eql(L[1,2,3])
|
138
|
+
list.send(method, 0...-10).should eql(L.empty)
|
139
|
+
list.send(method, 0...0).should eql(L.empty)
|
140
|
+
list.send(method, 0...1).should eql(L[1])
|
141
|
+
list.send(method, 0...2).should eql(L[1,2])
|
142
|
+
list.send(method, 0...3).should eql(L[1,2,3])
|
143
|
+
list.send(method, 0...4).should eql(L[1,2,3,4])
|
144
|
+
list.send(method, 0...10).should eql(L[1,2,3,4])
|
145
|
+
list.send(method, 2...-10).should eql(L.empty)
|
146
|
+
list.send(method, 2...0).should eql(L.empty)
|
147
|
+
list.send(method, 2...2).should eql(L.empty)
|
148
|
+
list.send(method, 2...3).should eql(L[3])
|
149
|
+
list.send(method, 2...4).should eql(L[3,4])
|
150
|
+
list.send(method, 3...0).should eql(L.empty)
|
151
|
+
list.send(method, 3...3).should eql(L.empty)
|
152
|
+
list.send(method, 3...4).should eql(L[4])
|
153
|
+
list.send(method, 4...0).should eql(L.empty)
|
154
|
+
list.send(method, 4...4).should eql(L.empty)
|
155
|
+
list.send(method, 4...5).should eql(L.empty)
|
156
156
|
list.send(method, 5...0).should be_nil
|
157
157
|
list.send(method, 5...5).should be_nil
|
158
158
|
list.send(method, 5...6).should be_nil
|
159
159
|
|
160
|
-
big.send(method, 159...162).should eql(
|
161
|
-
big.send(method, 160...162).should eql(
|
162
|
-
big.send(method, 161...162).should eql(
|
163
|
-
big.send(method, 9999...10100).should eql(
|
164
|
-
big.send(method, 10000...10100).should eql(
|
160
|
+
big.send(method, 159...162).should eql(L[160,161,162])
|
161
|
+
big.send(method, 160...162).should eql(L[161,162])
|
162
|
+
big.send(method, 161...162).should eql(L[162])
|
163
|
+
big.send(method, 9999...10100).should eql(L[10000])
|
164
|
+
big.send(method, 10000...10100).should eql(L.empty)
|
165
165
|
big.send(method, 10001...10100).should be_nil
|
166
166
|
|
167
|
-
list.send(method, -1..-1).should eql(
|
168
|
-
list.send(method, -1...-1).should eql(
|
169
|
-
list.send(method, -1..3).should eql(
|
170
|
-
list.send(method, -1...3).should eql(
|
171
|
-
list.send(method, -1..4).should eql(
|
172
|
-
list.send(method, -1...4).should eql(
|
173
|
-
list.send(method, -1..10).should eql(
|
174
|
-
list.send(method, -1...10).should eql(
|
175
|
-
list.send(method, -1..0).should eql(
|
176
|
-
list.send(method, -1..-4).should eql(
|
177
|
-
list.send(method, -1...-4).should eql(
|
178
|
-
list.send(method, -1..-6).should eql(
|
179
|
-
list.send(method, -1...-6).should eql(
|
180
|
-
list.send(method, -2..-2).should eql(
|
181
|
-
list.send(method, -2...-2).should eql(
|
182
|
-
list.send(method, -2..-1).should eql(
|
183
|
-
list.send(method, -2...-1).should eql(
|
184
|
-
list.send(method, -2..10).should eql(
|
185
|
-
list.send(method, -2...10).should eql(
|
186
|
-
|
187
|
-
big.send(method, -1..-1).should eql(
|
188
|
-
big.send(method, -1..9999).should eql(
|
189
|
-
big.send(method, -1...9999).should eql(
|
190
|
-
big.send(method, -2...9999).should eql(
|
191
|
-
big.send(method, -2..-1).should eql(
|
192
|
-
|
193
|
-
list.send(method, -4..-4).should eql(
|
194
|
-
list.send(method, -4..-2).should eql(
|
195
|
-
list.send(method, -4...-2).should eql(
|
196
|
-
list.send(method, -4..-1).should eql(
|
197
|
-
list.send(method, -4...-1).should eql(
|
198
|
-
list.send(method, -4..3).should eql(
|
199
|
-
list.send(method, -4...3).should eql(
|
200
|
-
list.send(method, -4..4).should eql(
|
201
|
-
list.send(method, -4...4).should eql(
|
202
|
-
list.send(method, -4..0).should eql(
|
203
|
-
list.send(method, -4...0).should eql(
|
204
|
-
list.send(method, -4..1).should eql(
|
205
|
-
list.send(method, -4...1).should eql(
|
167
|
+
list.send(method, -1..-1).should eql(L[4])
|
168
|
+
list.send(method, -1...-1).should eql(L.empty)
|
169
|
+
list.send(method, -1..3).should eql(L[4])
|
170
|
+
list.send(method, -1...3).should eql(L.empty)
|
171
|
+
list.send(method, -1..4).should eql(L[4])
|
172
|
+
list.send(method, -1...4).should eql(L[4])
|
173
|
+
list.send(method, -1..10).should eql(L[4])
|
174
|
+
list.send(method, -1...10).should eql(L[4])
|
175
|
+
list.send(method, -1..0).should eql(L.empty)
|
176
|
+
list.send(method, -1..-4).should eql(L.empty)
|
177
|
+
list.send(method, -1...-4).should eql(L.empty)
|
178
|
+
list.send(method, -1..-6).should eql(L.empty)
|
179
|
+
list.send(method, -1...-6).should eql(L.empty)
|
180
|
+
list.send(method, -2..-2).should eql(L[3])
|
181
|
+
list.send(method, -2...-2).should eql(L.empty)
|
182
|
+
list.send(method, -2..-1).should eql(L[3,4])
|
183
|
+
list.send(method, -2...-1).should eql(L[3])
|
184
|
+
list.send(method, -2..10).should eql(L[3,4])
|
185
|
+
list.send(method, -2...10).should eql(L[3,4])
|
186
|
+
|
187
|
+
big.send(method, -1..-1).should eql(L[10000])
|
188
|
+
big.send(method, -1..9999).should eql(L[10000])
|
189
|
+
big.send(method, -1...9999).should eql(L.empty)
|
190
|
+
big.send(method, -2...9999).should eql(L[9999])
|
191
|
+
big.send(method, -2..-1).should eql(L[9999,10000])
|
192
|
+
|
193
|
+
list.send(method, -4..-4).should eql(L[1])
|
194
|
+
list.send(method, -4..-2).should eql(L[1,2,3])
|
195
|
+
list.send(method, -4...-2).should eql(L[1,2])
|
196
|
+
list.send(method, -4..-1).should eql(L[1,2,3,4])
|
197
|
+
list.send(method, -4...-1).should eql(L[1,2,3])
|
198
|
+
list.send(method, -4..3).should eql(L[1,2,3,4])
|
199
|
+
list.send(method, -4...3).should eql(L[1,2,3])
|
200
|
+
list.send(method, -4..4).should eql(L[1,2,3,4])
|
201
|
+
list.send(method, -4...4).should eql(L[1,2,3,4])
|
202
|
+
list.send(method, -4..0).should eql(L[1])
|
203
|
+
list.send(method, -4...0).should eql(L.empty)
|
204
|
+
list.send(method, -4..1).should eql(L[1,2])
|
205
|
+
list.send(method, -4...1).should eql(L[1])
|
206
206
|
|
207
207
|
list.send(method, -5..-5).should be_nil
|
208
208
|
list.send(method, -5...-5).should be_nil
|
@@ -214,7 +214,7 @@ describe Hamster::List do
|
|
214
214
|
end
|
215
215
|
|
216
216
|
it "leaves the original unchanged" do
|
217
|
-
list.should eql(
|
217
|
+
list.should eql(L[1,2,3,4])
|
218
218
|
end
|
219
219
|
end
|
220
220
|
end
|
@@ -222,8 +222,8 @@ describe Hamster::List do
|
|
222
222
|
context "when passed a subclass of Range" do
|
223
223
|
it "works the same as with a Range" do
|
224
224
|
subclass = Class.new(Range)
|
225
|
-
list.send(method, subclass.new(1,2)).should eql(
|
226
|
-
list.send(method, subclass.new(-3,-1,true)).should eql(
|
225
|
+
list.send(method, subclass.new(1,2)).should eql(L[2,3])
|
226
|
+
list.send(method, subclass.new(-3,-1,true)).should eql(L[2,3])
|
227
227
|
end
|
228
228
|
end
|
229
229
|
end
|