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
@@ -2,42 +2,42 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
[:
|
5
|
+
[:select, :find_all].each do |method|
|
6
6
|
describe "##{method}" do
|
7
|
-
let(:vector) {
|
7
|
+
let(:vector) { V["A", "B", "C"] }
|
8
8
|
|
9
9
|
describe "with a block" do
|
10
10
|
it "preserves the original" do
|
11
11
|
vector.send(method) { |item| item == "A" }
|
12
|
-
vector.should eql(
|
12
|
+
vector.should eql(V["A", "B", "C"])
|
13
13
|
end
|
14
14
|
|
15
15
|
it "returns a vector with the matching values" do
|
16
|
-
vector.send(method) { |item| item == "A" }.should eql(
|
16
|
+
vector.send(method) { |item| item == "A" }.should eql(V["A"])
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
describe "with no block" do
|
21
21
|
it "returns an Enumerator" do
|
22
22
|
vector.send(method).class.should be(Enumerator)
|
23
|
-
vector.send(method).each { |item| item == "A" }.should eql(
|
23
|
+
vector.send(method).each { |item| item == "A" }.should eql(V["A"])
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
describe "when nothing matches" do
|
28
28
|
it "preserves the original" do
|
29
29
|
vector.send(method) { |item| false }
|
30
|
-
vector.should eql(
|
30
|
+
vector.should eql(V["A", "B", "C"])
|
31
31
|
end
|
32
32
|
|
33
33
|
it "returns an empty vector" do
|
34
|
-
vector.send(method) { |item| false }.should equal(
|
34
|
+
vector.send(method) { |item| false }.should equal(V.empty)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
context "on an empty vector" do
|
39
39
|
it "returns self" do
|
40
|
-
|
40
|
+
V.empty.send(method) { |item| true }.should be(V.empty)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -2,153 +2,24 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
let(:vector) { Hamster.vector(*values) }
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
let(:vector) { Hamster.vector }
|
10
|
-
|
11
|
-
it "always raises an error" do
|
12
|
-
(-1..1).each do |i|
|
13
|
-
expect { vector.set(i) }.to raise_error
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context "when not empty" do
|
19
|
-
let(:vector) { Hamster.vector("A", "B", "C") }
|
20
|
-
|
21
|
-
context "with a block" do
|
22
|
-
context "and a positive index" do
|
23
|
-
context "within the absolute bounds of the vector" do
|
24
|
-
it "passes the current value to the block" do
|
25
|
-
vector.set(1) { |value| value.should == "B" }
|
26
|
-
end
|
27
|
-
|
28
|
-
it "replaces the value with the result of the block" do
|
29
|
-
result = vector.set(1) { |value| "FLIBBLE" }
|
30
|
-
result.should eql(Hamster.vector("A", "FLIBBLE", "C"))
|
31
|
-
end
|
32
|
-
|
33
|
-
it "supports to_proc methods" do
|
34
|
-
result = vector.set(1, &:downcase)
|
35
|
-
result.should eql(Hamster.vector("A", "b", "C"))
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "just past the end of the vector" do
|
40
|
-
it "passes nil to the block and adds a new value" do
|
41
|
-
result = vector.set(3) { |value| value.should be_nil; "D" }
|
42
|
-
result.should eql(Hamster.vector("A", "B", "C", "D"))
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "further outside the bounds of the vector" do
|
47
|
-
it "raises an error" do
|
48
|
-
expect { vector.set(4) {} }.to raise_error
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context "and a negative index" do
|
54
|
-
context "within the absolute bounds of the vector" do
|
55
|
-
it "passes the current value to the block" do
|
56
|
-
vector.set(-2) { |value| value.should == "B" }
|
57
|
-
end
|
58
|
-
|
59
|
-
it "replaces the value with the result of the block" do
|
60
|
-
result = vector.set(-2) { |value| "FLIBBLE" }
|
61
|
-
result.should eql(Hamster.vector("A", "FLIBBLE", "C"))
|
62
|
-
end
|
63
|
-
|
64
|
-
it "supports to_proc methods" do
|
65
|
-
result = vector.set(-2, &:downcase)
|
66
|
-
result.should eql(Hamster.vector("A", "b", "C"))
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "outside the absolute bounds of the vector" do
|
71
|
-
it "raises an error" do
|
72
|
-
expect { vector.set(-vector.size.next) {} }.to raise_error
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context "with a value" do
|
79
|
-
context "and a positive index" do
|
80
|
-
context "within the absolute bounds of the vector" do
|
81
|
-
let(:set) { vector.set(1, "FLIBBLE") }
|
82
|
-
|
83
|
-
it "preserves the original" do
|
84
|
-
vector.should eql(Hamster.vector("A", "B", "C"))
|
85
|
-
end
|
86
|
-
|
87
|
-
it "sets the new value at the specified index" do
|
88
|
-
set.should eql(Hamster.vector("A", "FLIBBLE", "C"))
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
context "just past the end of the vector" do
|
93
|
-
it "adds a new value" do
|
94
|
-
result = vector.set(3, "FLIBBLE")
|
95
|
-
result.should eql(Hamster.vector("A", "B", "C", "FLIBBLE"))
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
context "outside the absolute bounds of the vector" do
|
100
|
-
it "raises an error" do
|
101
|
-
expect { vector.set(4, "FLIBBLE") }.to raise_error
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
context "with a negative index" do
|
107
|
-
let(:set) { vector.set(-2, "FLIBBLE") }
|
6
|
+
# Note: Vector#set will be deprecated; use Vector#put instead. See
|
7
|
+
# `spec/lib/hamster/vector/put_spec.rb` for the full specs of Vector#put.
|
108
8
|
|
109
|
-
|
110
|
-
|
111
|
-
vector.should eql(Hamster.vector("A", "B", "C"))
|
112
|
-
end
|
113
|
-
|
114
|
-
it "sets the new value at the specified index" do
|
115
|
-
set.should eql(Hamster.vector("A", "FLIBBLE", "C"))
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context "outside the absolute bounds of the vector" do
|
120
|
-
it "raises an error" do
|
121
|
-
expect { vector.set(-vector.size.next, "FLIBBLE") }.to raise_error
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
9
|
+
describe "#set" do
|
10
|
+
let(:vector) { V[5, 6, 7] }
|
126
11
|
|
127
|
-
context "
|
128
|
-
it "
|
129
|
-
|
130
|
-
|
131
|
-
instance.set(1, 2.5).class.should be(subclass)
|
12
|
+
context "without block" do
|
13
|
+
it "replaces the element" do
|
14
|
+
result = vector.set(1, 100)
|
15
|
+
result.should eql(V[5, 100, 7])
|
132
16
|
end
|
133
17
|
end
|
134
18
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
vector = V.new(array)
|
140
|
-
|
141
|
-
[0, 1, 10, 31, 32, 33, 100, 500, 1000, 1023, 1024, 1025, 1998, 1999].select { |n| n < size }.each do |i|
|
142
|
-
value = rand(10000)
|
143
|
-
array[i] = value
|
144
|
-
vector = vector.set(i, value)
|
145
|
-
vector[i].should be(value)
|
146
|
-
end
|
147
|
-
|
148
|
-
0.upto(size-1) do |i|
|
149
|
-
vector.get(i).should == array[i]
|
150
|
-
end
|
151
|
-
end
|
19
|
+
context "with block" do
|
20
|
+
it "passes the existing element to the block and replaces the result" do
|
21
|
+
result = vector.set(1) { |e| e + 100 }
|
22
|
+
result.should eql(V[5, 106, 7])
|
152
23
|
end
|
153
24
|
end
|
154
25
|
end
|
@@ -12,15 +12,15 @@ describe Hamster::Vector do
|
|
12
12
|
[1..33, 2..33]
|
13
13
|
].each do |values, expected|
|
14
14
|
context "on #{values.inspect}" do
|
15
|
-
let(:vector) {
|
15
|
+
let(:vector) { V[*values] }
|
16
16
|
|
17
17
|
it "preserves the original" do
|
18
18
|
vector.shift
|
19
|
-
vector.should eql(
|
19
|
+
vector.should eql(V[*values])
|
20
20
|
end
|
21
21
|
|
22
22
|
it "returns #{expected.inspect}" do
|
23
|
-
vector.shift.should eql(
|
23
|
+
vector.shift.should eql(V[*expected])
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -3,7 +3,7 @@ require "hamster/vector"
|
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
5
|
describe "#shuffle" do
|
6
|
-
let(:vector) {
|
6
|
+
let(:vector) { V[1,2,3,4] }
|
7
7
|
|
8
8
|
it "returns the same values, in a usually different order" do
|
9
9
|
different = false
|
@@ -17,7 +17,7 @@ describe Hamster::Vector do
|
|
17
17
|
|
18
18
|
it "leaves the original unchanged" do
|
19
19
|
vector.shuffle
|
20
|
-
vector.should eql(
|
20
|
+
vector.should eql(V[1,2,3,4])
|
21
21
|
end
|
22
22
|
|
23
23
|
context "from a subclass" do
|
@@ -2,8 +2,8 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
let(:vector) {
|
6
|
-
let(:big) {
|
5
|
+
let(:vector) { V[1,2,3,4] }
|
6
|
+
let(:big) { V.new(1..10000) }
|
7
7
|
|
8
8
|
[:slice, :[]].each do |method|
|
9
9
|
describe "##{method}" do
|
@@ -21,7 +21,7 @@ describe Hamster::Vector do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "leaves the original unchanged" do
|
24
|
-
vector.should eql(
|
24
|
+
vector.should eql(V[1,2,3,4])
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -41,168 +41,168 @@ describe Hamster::Vector 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
|
-
vector.send(method, 0, 0).should
|
45
|
-
vector.send(method, 0, 1).should
|
46
|
-
vector.send(method, 0, 2).should
|
47
|
-
vector.send(method, 0, 4).should
|
48
|
-
vector.send(method, 0, 6).should
|
44
|
+
vector.send(method, 0, 0).should eql(V.empty)
|
45
|
+
vector.send(method, 0, 1).should eql(V[1])
|
46
|
+
vector.send(method, 0, 2).should eql(V[1,2])
|
47
|
+
vector.send(method, 0, 4).should eql(V[1,2,3,4])
|
48
|
+
vector.send(method, 0, 6).should eql(V[1,2,3,4])
|
49
49
|
vector.send(method, 0, -1).should be_nil
|
50
50
|
vector.send(method, 0, -2).should be_nil
|
51
51
|
vector.send(method, 0, -4).should be_nil
|
52
|
-
vector.send(method, 2, 0).should
|
53
|
-
vector.send(method, 2, 1).should
|
54
|
-
vector.send(method, 2, 2).should
|
55
|
-
vector.send(method, 2, 4).should
|
52
|
+
vector.send(method, 2, 0).should eql(V.empty)
|
53
|
+
vector.send(method, 2, 1).should eql(V[3])
|
54
|
+
vector.send(method, 2, 2).should eql(V[3,4])
|
55
|
+
vector.send(method, 2, 4).should eql(V[3,4])
|
56
56
|
vector.send(method, 2, -1).should be_nil
|
57
|
-
vector.send(method, 4, 0).should
|
58
|
-
vector.send(method, 4, 2).should
|
57
|
+
vector.send(method, 4, 0).should eql(V.empty)
|
58
|
+
vector.send(method, 4, 2).should eql(V.empty)
|
59
59
|
vector.send(method, 4, -1).should be_nil
|
60
|
-
vector.send(method, 5, 0).should
|
61
|
-
vector.send(method, 5, 2).should
|
60
|
+
vector.send(method, 5, 0).should be_nil
|
61
|
+
vector.send(method, 5, 2).should be_nil
|
62
62
|
vector.send(method, 5, -1).should be_nil
|
63
|
-
vector.send(method, 6, 0).should
|
64
|
-
vector.send(method, 6, 2).should
|
63
|
+
vector.send(method, 6, 0).should be_nil
|
64
|
+
vector.send(method, 6, 2).should be_nil
|
65
65
|
vector.send(method, 6, -1).should be_nil
|
66
66
|
|
67
|
-
big.send(method, 0, 3).should
|
68
|
-
big.send(method, 1023, 4).should eql(
|
69
|
-
big.send(method, 1024, 4).should eql(
|
67
|
+
big.send(method, 0, 3).should eql(V[1,2,3])
|
68
|
+
big.send(method, 1023, 4).should eql(V[1024,1025,1026,1027])
|
69
|
+
big.send(method, 1024, 4).should eql(V[1025,1026,1027,1028])
|
70
70
|
end
|
71
71
|
|
72
72
|
it "leaves the original unchanged" do
|
73
|
-
vector.should eql(
|
73
|
+
vector.should eql(V[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
|
-
vector.send(method, -1, 0).should
|
80
|
-
vector.send(method, -1, 1).should
|
81
|
-
vector.send(method, -1, 2).should
|
79
|
+
vector.send(method, -1, 0).should eql(V.empty)
|
80
|
+
vector.send(method, -1, 1).should eql(V[4])
|
81
|
+
vector.send(method, -1, 2).should eql(V[4])
|
82
82
|
vector.send(method, -1, -1).should be_nil
|
83
|
-
vector.send(method, -2, 0).should
|
84
|
-
vector.send(method, -2, 1).should
|
85
|
-
vector.send(method, -2, 2).should
|
86
|
-
vector.send(method, -2, 4).should
|
83
|
+
vector.send(method, -2, 0).should eql(V.empty)
|
84
|
+
vector.send(method, -2, 1).should eql(V[3])
|
85
|
+
vector.send(method, -2, 2).should eql(V[3,4])
|
86
|
+
vector.send(method, -2, 4).should eql(V[3,4])
|
87
87
|
vector.send(method, -2, -1).should be_nil
|
88
|
-
vector.send(method, -4, 0).should
|
89
|
-
vector.send(method, -4, 1).should
|
90
|
-
vector.send(method, -4, 2).should
|
91
|
-
vector.send(method, -4, 4).should
|
92
|
-
vector.send(method, -4, 6).should
|
88
|
+
vector.send(method, -4, 0).should eql(V.empty)
|
89
|
+
vector.send(method, -4, 1).should eql(V[1])
|
90
|
+
vector.send(method, -4, 2).should eql(V[1,2])
|
91
|
+
vector.send(method, -4, 4).should eql(V[1,2,3,4])
|
92
|
+
vector.send(method, -4, 6).should eql(V[1,2,3,4])
|
93
93
|
vector.send(method, -4, -1).should be_nil
|
94
|
-
vector.send(method, -5, 0).should
|
95
|
-
vector.send(method, -5, 1).should
|
94
|
+
vector.send(method, -5, 0).should be_nil
|
95
|
+
vector.send(method, -5, 1).should be_nil
|
96
96
|
vector.send(method, -5, 10).should be_nil
|
97
97
|
vector.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(V[10000])
|
100
|
+
big.send(method, -1, 2).should eql(V[10000])
|
101
|
+
big.send(method, -6, 2).should eql(V[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
|
-
vector.send(method, 0..-1).should
|
108
|
-
vector.send(method, 0..-10).should eql(
|
109
|
-
vector.send(method, 0..0).should
|
110
|
-
vector.send(method, 0..1).should
|
111
|
-
vector.send(method, 0..2).should
|
112
|
-
vector.send(method, 0..3).should
|
113
|
-
vector.send(method, 0..4).should
|
114
|
-
vector.send(method, 0..10).should
|
115
|
-
vector.send(method, 2..-10).should eql(
|
116
|
-
vector.send(method, 2..0).should
|
117
|
-
vector.send(method, 2..2).should
|
118
|
-
vector.send(method, 2..3).should
|
119
|
-
vector.send(method, 2..4).should
|
120
|
-
vector.send(method, 3..0).should
|
121
|
-
vector.send(method, 3..3).should
|
122
|
-
vector.send(method, 3..4).should
|
123
|
-
vector.send(method, 4..0).should
|
124
|
-
vector.send(method, 4..4).should
|
125
|
-
vector.send(method, 4..5).should
|
126
|
-
vector.send(method, 5..0).should
|
127
|
-
vector.send(method, 5..5).should
|
128
|
-
vector.send(method, 5..6).should
|
129
|
-
|
130
|
-
big.send(method, 159..162).should
|
131
|
-
big.send(method, 160..162).should
|
132
|
-
big.send(method, 161..162).should
|
133
|
-
big.send(method, 9999..10100).should
|
134
|
-
big.send(method, 10000..10100).should eql(
|
107
|
+
vector.send(method, 0..-1).should eql(V[1,2,3,4])
|
108
|
+
vector.send(method, 0..-10).should eql(V.empty)
|
109
|
+
vector.send(method, 0..0).should eql(V[1])
|
110
|
+
vector.send(method, 0..1).should eql(V[1,2])
|
111
|
+
vector.send(method, 0..2).should eql(V[1,2,3])
|
112
|
+
vector.send(method, 0..3).should eql(V[1,2,3,4])
|
113
|
+
vector.send(method, 0..4).should eql(V[1,2,3,4])
|
114
|
+
vector.send(method, 0..10).should eql(V[1,2,3,4])
|
115
|
+
vector.send(method, 2..-10).should eql(V.empty)
|
116
|
+
vector.send(method, 2..0).should eql(V.empty)
|
117
|
+
vector.send(method, 2..2).should eql(V[3])
|
118
|
+
vector.send(method, 2..3).should eql(V[3,4])
|
119
|
+
vector.send(method, 2..4).should eql(V[3,4])
|
120
|
+
vector.send(method, 3..0).should eql(V.empty)
|
121
|
+
vector.send(method, 3..3).should eql(V[4])
|
122
|
+
vector.send(method, 3..4).should eql(V[4])
|
123
|
+
vector.send(method, 4..0).should eql(V.empty)
|
124
|
+
vector.send(method, 4..4).should eql(V.empty)
|
125
|
+
vector.send(method, 4..5).should eql(V.empty)
|
126
|
+
vector.send(method, 5..0).should be_nil
|
127
|
+
vector.send(method, 5..5).should be_nil
|
128
|
+
vector.send(method, 5..6).should be_nil
|
129
|
+
|
130
|
+
big.send(method, 159..162).should eql(V[160,161,162,163])
|
131
|
+
big.send(method, 160..162).should eql(V[161,162,163])
|
132
|
+
big.send(method, 161..162).should eql(V[162,163])
|
133
|
+
big.send(method, 9999..10100).should eql(V[10000])
|
134
|
+
big.send(method, 10000..10100).should eql(V.empty)
|
135
135
|
big.send(method, 10001..10100).should be_nil
|
136
136
|
|
137
|
-
vector.send(method, 0...-1).should
|
138
|
-
vector.send(method, 0...-10).should eql(
|
139
|
-
vector.send(method, 0...0).should
|
140
|
-
vector.send(method, 0...1).should
|
141
|
-
vector.send(method, 0...2).should
|
142
|
-
vector.send(method, 0...3).should
|
143
|
-
vector.send(method, 0...4).should
|
144
|
-
vector.send(method, 0...10).should
|
145
|
-
vector.send(method, 2...-10).should eql(
|
146
|
-
vector.send(method, 2...0).should
|
147
|
-
vector.send(method, 2...2).should
|
148
|
-
vector.send(method, 2...3).should
|
149
|
-
vector.send(method, 2...4).should
|
150
|
-
vector.send(method, 3...0).should
|
151
|
-
vector.send(method, 3...3).should
|
152
|
-
vector.send(method, 3...4).should
|
153
|
-
vector.send(method, 4...0).should
|
154
|
-
vector.send(method, 4...4).should
|
155
|
-
vector.send(method, 4...5).should
|
156
|
-
vector.send(method, 5...0).should
|
157
|
-
vector.send(method, 5...5).should
|
158
|
-
vector.send(method, 5...6).should
|
159
|
-
|
160
|
-
big.send(method, 159...162).should
|
161
|
-
big.send(method, 160...162).should
|
162
|
-
big.send(method, 161...162).should
|
163
|
-
big.send(method, 9999...10100).should
|
164
|
-
big.send(method, 10000...10100).should eql(
|
137
|
+
vector.send(method, 0...-1).should eql(V[1,2,3])
|
138
|
+
vector.send(method, 0...-10).should eql(V.empty)
|
139
|
+
vector.send(method, 0...0).should eql(V.empty)
|
140
|
+
vector.send(method, 0...1).should eql(V[1])
|
141
|
+
vector.send(method, 0...2).should eql(V[1,2])
|
142
|
+
vector.send(method, 0...3).should eql(V[1,2,3])
|
143
|
+
vector.send(method, 0...4).should eql(V[1,2,3,4])
|
144
|
+
vector.send(method, 0...10).should eql(V[1,2,3,4])
|
145
|
+
vector.send(method, 2...-10).should eql(V.empty)
|
146
|
+
vector.send(method, 2...0).should eql(V.empty)
|
147
|
+
vector.send(method, 2...2).should eql(V.empty)
|
148
|
+
vector.send(method, 2...3).should eql(V[3])
|
149
|
+
vector.send(method, 2...4).should eql(V[3,4])
|
150
|
+
vector.send(method, 3...0).should eql(V.empty)
|
151
|
+
vector.send(method, 3...3).should eql(V.empty)
|
152
|
+
vector.send(method, 3...4).should eql(V[4])
|
153
|
+
vector.send(method, 4...0).should eql(V.empty)
|
154
|
+
vector.send(method, 4...4).should eql(V.empty)
|
155
|
+
vector.send(method, 4...5).should eql(V.empty)
|
156
|
+
vector.send(method, 5...0).should be_nil
|
157
|
+
vector.send(method, 5...5).should be_nil
|
158
|
+
vector.send(method, 5...6).should be_nil
|
159
|
+
|
160
|
+
big.send(method, 159...162).should eql(V[160,161,162])
|
161
|
+
big.send(method, 160...162).should eql(V[161,162])
|
162
|
+
big.send(method, 161...162).should eql(V[162])
|
163
|
+
big.send(method, 9999...10100).should eql(V[10000])
|
164
|
+
big.send(method, 10000...10100).should eql(V.empty)
|
165
165
|
big.send(method, 10001...10100).should be_nil
|
166
166
|
|
167
|
-
vector.send(method, -1..-1).should
|
168
|
-
vector.send(method, -1...-1).should eql(
|
169
|
-
vector.send(method, -1..3).should
|
170
|
-
vector.send(method, -1...3).should
|
171
|
-
vector.send(method, -1..4).should
|
172
|
-
vector.send(method, -1...4).should
|
173
|
-
vector.send(method, -1..10).should
|
174
|
-
vector.send(method, -1...10).should eql(
|
175
|
-
vector.send(method, -1..0).should
|
176
|
-
vector.send(method, -1..-4).should
|
177
|
-
vector.send(method, -1...-4).should eql(
|
178
|
-
vector.send(method, -1..-6).should
|
179
|
-
vector.send(method, -1...-6).should eql(
|
180
|
-
vector.send(method, -2..-2).should
|
181
|
-
vector.send(method, -2...-2).should eql(
|
182
|
-
vector.send(method, -2..-1).should
|
183
|
-
vector.send(method, -2...-1).should eql(
|
184
|
-
vector.send(method, -2..10).should
|
185
|
-
vector.send(method, -2...10).should eql(
|
186
|
-
|
187
|
-
big.send(method, -1..-1).should
|
188
|
-
big.send(method, -1..9999).should
|
189
|
-
big.send(method, -1...9999).should eql(
|
190
|
-
big.send(method, -2...9999).should eql(
|
191
|
-
big.send(method, -2..-1).should
|
192
|
-
|
193
|
-
vector.send(method, -4..-4).should
|
194
|
-
vector.send(method, -4..-2).should
|
195
|
-
vector.send(method, -4...-2).should eql(
|
196
|
-
vector.send(method, -4..-1).should
|
197
|
-
vector.send(method, -4...-1).should eql(
|
198
|
-
vector.send(method, -4..3).should
|
199
|
-
vector.send(method, -4...3).should
|
200
|
-
vector.send(method, -4..4).should
|
201
|
-
vector.send(method, -4...4).should
|
202
|
-
vector.send(method, -4..0).should
|
203
|
-
vector.send(method, -4...0).should
|
204
|
-
vector.send(method, -4..1).should
|
205
|
-
vector.send(method, -4...1).should
|
167
|
+
vector.send(method, -1..-1).should eql(V[4])
|
168
|
+
vector.send(method, -1...-1).should eql(V.empty)
|
169
|
+
vector.send(method, -1..3).should eql(V[4])
|
170
|
+
vector.send(method, -1...3).should eql(V.empty)
|
171
|
+
vector.send(method, -1..4).should eql(V[4])
|
172
|
+
vector.send(method, -1...4).should eql(V[4])
|
173
|
+
vector.send(method, -1..10).should eql(V[4])
|
174
|
+
vector.send(method, -1...10).should eql(V[4])
|
175
|
+
vector.send(method, -1..0).should eql(V.empty)
|
176
|
+
vector.send(method, -1..-4).should eql(V.empty)
|
177
|
+
vector.send(method, -1...-4).should eql(V.empty)
|
178
|
+
vector.send(method, -1..-6).should eql(V.empty)
|
179
|
+
vector.send(method, -1...-6).should eql(V.empty)
|
180
|
+
vector.send(method, -2..-2).should eql(V[3])
|
181
|
+
vector.send(method, -2...-2).should eql(V.empty)
|
182
|
+
vector.send(method, -2..-1).should eql(V[3,4])
|
183
|
+
vector.send(method, -2...-1).should eql(V[3])
|
184
|
+
vector.send(method, -2..10).should eql(V[3,4])
|
185
|
+
vector.send(method, -2...10).should eql(V[3,4])
|
186
|
+
|
187
|
+
big.send(method, -1..-1).should eql(V[10000])
|
188
|
+
big.send(method, -1..9999).should eql(V[10000])
|
189
|
+
big.send(method, -1...9999).should eql(V.empty)
|
190
|
+
big.send(method, -2...9999).should eql(V[9999])
|
191
|
+
big.send(method, -2..-1).should eql(V[9999,10000])
|
192
|
+
|
193
|
+
vector.send(method, -4..-4).should eql(V[1])
|
194
|
+
vector.send(method, -4..-2).should eql(V[1,2,3])
|
195
|
+
vector.send(method, -4...-2).should eql(V[1,2])
|
196
|
+
vector.send(method, -4..-1).should eql(V[1,2,3,4])
|
197
|
+
vector.send(method, -4...-1).should eql(V[1,2,3])
|
198
|
+
vector.send(method, -4..3).should eql(V[1,2,3,4])
|
199
|
+
vector.send(method, -4...3).should eql(V[1,2,3])
|
200
|
+
vector.send(method, -4..4).should eql(V[1,2,3,4])
|
201
|
+
vector.send(method, -4...4).should eql(V[1,2,3,4])
|
202
|
+
vector.send(method, -4..0).should eql(V[1])
|
203
|
+
vector.send(method, -4...0).should eql(V.empty)
|
204
|
+
vector.send(method, -4..1).should eql(V[1,2])
|
205
|
+
vector.send(method, -4...1).should eql(V[1])
|
206
206
|
|
207
207
|
vector.send(method, -5..-5).should be_nil
|
208
208
|
vector.send(method, -5...-5).should be_nil
|
@@ -214,7 +214,7 @@ describe Hamster::Vector do
|
|
214
214
|
end
|
215
215
|
|
216
216
|
it "leaves the original unchanged" do
|
217
|
-
vector.should eql(
|
217
|
+
vector.should eql(V[1,2,3,4])
|
218
218
|
end
|
219
219
|
end
|
220
220
|
end
|
@@ -222,8 +222,8 @@ describe Hamster::Vector 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
|
-
vector.send(method, subclass.new(1,2)).should eql(
|
226
|
-
vector.send(method, subclass.new(-3,-1,true)).should eql(
|
225
|
+
vector.send(method, subclass.new(1,2)).should eql(V[2,3])
|
226
|
+
vector.send(method, subclass.new(-3,-1,true)).should eql(V[2,3])
|
227
227
|
end
|
228
228
|
end
|
229
229
|
|