immutable-ruby 0.0.4 → 0.2.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/immutable/_core.rb +3067 -0
- data/lib/immutable/core_ext/enumerable.rb +1 -1
- data/lib/immutable/core_ext/io.rb +1 -1
- data/lib/immutable/core_ext.rb +2 -2
- data/lib/immutable/deque.rb +17 -17
- data/lib/immutable/enumerable.rb +10 -10
- data/lib/immutable/hash.rb +4 -941
- data/lib/immutable/list.rb +36 -36
- data/lib/immutable/nested.rb +8 -8
- data/lib/immutable/set.rb +3 -583
- data/lib/immutable/sorted_set.rb +29 -27
- data/lib/immutable/trie.rb +2 -2
- data/lib/immutable/vector.rb +3 -1549
- data/lib/immutable/version.rb +1 -1
- data/lib/immutable.rb +9 -9
- metadata +34 -696
- data/lib/immutable/core_ext/struct.rb +0 -9
- data/spec/fixtures/io_spec.txt +0 -3
- data/spec/lib/immutable/core_ext/array_spec.rb +0 -13
- data/spec/lib/immutable/core_ext/enumerable_spec.rb +0 -29
- data/spec/lib/immutable/core_ext/io_spec.rb +0 -28
- data/spec/lib/immutable/deque/clear_spec.rb +0 -33
- data/spec/lib/immutable/deque/construction_spec.rb +0 -29
- data/spec/lib/immutable/deque/copying_spec.rb +0 -19
- data/spec/lib/immutable/deque/dequeue_spec.rb +0 -34
- data/spec/lib/immutable/deque/empty_spec.rb +0 -39
- data/spec/lib/immutable/deque/enqueue_spec.rb +0 -27
- data/spec/lib/immutable/deque/first_spec.rb +0 -17
- data/spec/lib/immutable/deque/inspect_spec.rb +0 -23
- data/spec/lib/immutable/deque/last_spec.rb +0 -17
- data/spec/lib/immutable/deque/marshal_spec.rb +0 -33
- data/spec/lib/immutable/deque/new_spec.rb +0 -43
- data/spec/lib/immutable/deque/pop_spec.rb +0 -36
- data/spec/lib/immutable/deque/pretty_print_spec.rb +0 -23
- data/spec/lib/immutable/deque/push_spec.rb +0 -36
- data/spec/lib/immutable/deque/random_modification_spec.rb +0 -33
- data/spec/lib/immutable/deque/rotate_spec.rb +0 -68
- data/spec/lib/immutable/deque/shift_spec.rb +0 -29
- data/spec/lib/immutable/deque/size_spec.rb +0 -19
- data/spec/lib/immutable/deque/to_a_spec.rb +0 -26
- data/spec/lib/immutable/deque/to_ary_spec.rb +0 -35
- data/spec/lib/immutable/deque/to_list_spec.rb +0 -24
- data/spec/lib/immutable/deque/unshift_spec.rb +0 -30
- data/spec/lib/immutable/hash/all_spec.rb +0 -53
- data/spec/lib/immutable/hash/any_spec.rb +0 -53
- data/spec/lib/immutable/hash/assoc_spec.rb +0 -51
- data/spec/lib/immutable/hash/clear_spec.rb +0 -42
- data/spec/lib/immutable/hash/construction_spec.rb +0 -38
- data/spec/lib/immutable/hash/copying_spec.rb +0 -13
- data/spec/lib/immutable/hash/default_proc_spec.rb +0 -72
- data/spec/lib/immutable/hash/delete_spec.rb +0 -39
- data/spec/lib/immutable/hash/dig_spec.rb +0 -34
- data/spec/lib/immutable/hash/each_spec.rb +0 -77
- data/spec/lib/immutable/hash/each_with_index_spec.rb +0 -29
- data/spec/lib/immutable/hash/empty_spec.rb +0 -43
- data/spec/lib/immutable/hash/eql_spec.rb +0 -75
- data/spec/lib/immutable/hash/except_spec.rb +0 -42
- data/spec/lib/immutable/hash/fetch_spec.rb +0 -57
- data/spec/lib/immutable/hash/fetch_values_spec.rb +0 -22
- data/spec/lib/immutable/hash/find_spec.rb +0 -43
- data/spec/lib/immutable/hash/flat_map_spec.rb +0 -35
- data/spec/lib/immutable/hash/flatten_spec.rb +0 -98
- data/spec/lib/immutable/hash/get_spec.rb +0 -79
- data/spec/lib/immutable/hash/has_key_spec.rb +0 -31
- data/spec/lib/immutable/hash/has_value_spec.rb +0 -27
- data/spec/lib/immutable/hash/hash_spec.rb +0 -29
- data/spec/lib/immutable/hash/inspect_spec.rb +0 -30
- data/spec/lib/immutable/hash/invert_spec.rb +0 -30
- data/spec/lib/immutable/hash/key_spec.rb +0 -27
- data/spec/lib/immutable/hash/keys_spec.rb +0 -15
- data/spec/lib/immutable/hash/map_spec.rb +0 -45
- data/spec/lib/immutable/hash/marshal_spec.rb +0 -28
- data/spec/lib/immutable/hash/merge_spec.rb +0 -82
- data/spec/lib/immutable/hash/min_max_spec.rb +0 -45
- data/spec/lib/immutable/hash/new_spec.rb +0 -70
- data/spec/lib/immutable/hash/none_spec.rb +0 -48
- data/spec/lib/immutable/hash/partition_spec.rb +0 -35
- data/spec/lib/immutable/hash/pretty_print_spec.rb +0 -34
- data/spec/lib/immutable/hash/put_spec.rb +0 -111
- data/spec/lib/immutable/hash/reduce_spec.rb +0 -35
- data/spec/lib/immutable/hash/reject_spec.rb +0 -61
- data/spec/lib/immutable/hash/reverse_each_spec.rb +0 -27
- data/spec/lib/immutable/hash/sample_spec.rb +0 -13
- data/spec/lib/immutable/hash/select_spec.rb +0 -57
- data/spec/lib/immutable/hash/size_spec.rb +0 -51
- data/spec/lib/immutable/hash/slice_spec.rb +0 -44
- data/spec/lib/immutable/hash/sort_spec.rb +0 -26
- data/spec/lib/immutable/hash/store_spec.rb +0 -75
- data/spec/lib/immutable/hash/subset_spec.rb +0 -42
- data/spec/lib/immutable/hash/superset_spec.rb +0 -42
- data/spec/lib/immutable/hash/take_spec.rb +0 -35
- data/spec/lib/immutable/hash/to_a_spec.rb +0 -13
- data/spec/lib/immutable/hash/to_hash_spec.rb +0 -21
- data/spec/lib/immutable/hash/to_proc_spec.rb +0 -39
- data/spec/lib/immutable/hash/update_in_spec.rb +0 -79
- data/spec/lib/immutable/hash/values_at_spec.rb +0 -33
- data/spec/lib/immutable/hash/values_spec.rb +0 -23
- data/spec/lib/immutable/list/add_spec.rb +0 -25
- data/spec/lib/immutable/list/all_spec.rb +0 -57
- data/spec/lib/immutable/list/any_spec.rb +0 -49
- data/spec/lib/immutable/list/append_spec.rb +0 -38
- data/spec/lib/immutable/list/at_spec.rb +0 -29
- data/spec/lib/immutable/list/break_spec.rb +0 -69
- data/spec/lib/immutable/list/cadr_spec.rb +0 -38
- data/spec/lib/immutable/list/chunk_spec.rb +0 -28
- data/spec/lib/immutable/list/clear_spec.rb +0 -24
- data/spec/lib/immutable/list/combination_spec.rb +0 -33
- data/spec/lib/immutable/list/compact_spec.rb +0 -34
- data/spec/lib/immutable/list/compare_spec.rb +0 -30
- data/spec/lib/immutable/list/cons_spec.rb +0 -25
- data/spec/lib/immutable/list/construction_spec.rb +0 -110
- data/spec/lib/immutable/list/copying_spec.rb +0 -19
- data/spec/lib/immutable/list/count_spec.rb +0 -36
- data/spec/lib/immutable/list/cycle_spec.rb +0 -28
- data/spec/lib/immutable/list/delete_at_spec.rb +0 -18
- data/spec/lib/immutable/list/delete_spec.rb +0 -16
- data/spec/lib/immutable/list/drop_spec.rb +0 -30
- data/spec/lib/immutable/list/drop_while_spec.rb +0 -38
- data/spec/lib/immutable/list/each_slice_spec.rb +0 -51
- data/spec/lib/immutable/list/each_spec.rb +0 -40
- data/spec/lib/immutable/list/each_with_index_spec.rb +0 -28
- data/spec/lib/immutable/list/empty_spec.rb +0 -23
- data/spec/lib/immutable/list/eql_spec.rb +0 -61
- data/spec/lib/immutable/list/fill_spec.rb +0 -49
- data/spec/lib/immutable/list/find_all_spec.rb +0 -70
- data/spec/lib/immutable/list/find_index_spec.rb +0 -35
- data/spec/lib/immutable/list/find_spec.rb +0 -42
- data/spec/lib/immutable/list/flat_map_spec.rb +0 -51
- data/spec/lib/immutable/list/flatten_spec.rb +0 -30
- data/spec/lib/immutable/list/grep_spec.rb +0 -46
- data/spec/lib/immutable/list/group_by_spec.rb +0 -41
- data/spec/lib/immutable/list/hash_spec.rb +0 -21
- data/spec/lib/immutable/list/head_spec.rb +0 -19
- data/spec/lib/immutable/list/include_spec.rb +0 -35
- data/spec/lib/immutable/list/index_spec.rb +0 -37
- data/spec/lib/immutable/list/indices_spec.rb +0 -61
- data/spec/lib/immutable/list/init_spec.rb +0 -28
- data/spec/lib/immutable/list/inits_spec.rb +0 -28
- data/spec/lib/immutable/list/insert_spec.rb +0 -46
- data/spec/lib/immutable/list/inspect_spec.rb +0 -29
- data/spec/lib/immutable/list/intersperse_spec.rb +0 -28
- data/spec/lib/immutable/list/join_spec.rb +0 -63
- data/spec/lib/immutable/list/last_spec.rb +0 -23
- data/spec/lib/immutable/list/ltlt_spec.rb +0 -19
- data/spec/lib/immutable/list/map_spec.rb +0 -45
- data/spec/lib/immutable/list/maximum_spec.rb +0 -39
- data/spec/lib/immutable/list/merge_by_spec.rb +0 -51
- data/spec/lib/immutable/list/merge_spec.rb +0 -59
- data/spec/lib/immutable/list/minimum_spec.rb +0 -39
- data/spec/lib/immutable/list/multithreading_spec.rb +0 -47
- data/spec/lib/immutable/list/none_spec.rb +0 -47
- data/spec/lib/immutable/list/one_spec.rb +0 -49
- data/spec/lib/immutable/list/partition_spec.rb +0 -115
- data/spec/lib/immutable/list/permutation_spec.rb +0 -55
- data/spec/lib/immutable/list/pop_spec.rb +0 -25
- data/spec/lib/immutable/list/product_spec.rb +0 -23
- data/spec/lib/immutable/list/reduce_spec.rb +0 -53
- data/spec/lib/immutable/list/reject_spec.rb +0 -45
- data/spec/lib/immutable/list/reverse_spec.rb +0 -34
- data/spec/lib/immutable/list/rotate_spec.rb +0 -36
- data/spec/lib/immutable/list/sample_spec.rb +0 -13
- data/spec/lib/immutable/list/select_spec.rb +0 -70
- data/spec/lib/immutable/list/size_spec.rb +0 -25
- data/spec/lib/immutable/list/slice_spec.rb +0 -229
- data/spec/lib/immutable/list/sorting_spec.rb +0 -46
- data/spec/lib/immutable/list/span_spec.rb +0 -76
- data/spec/lib/immutable/list/split_at_spec.rb +0 -43
- data/spec/lib/immutable/list/subsequences_spec.rb +0 -23
- data/spec/lib/immutable/list/sum_spec.rb +0 -23
- data/spec/lib/immutable/list/tail_spec.rb +0 -30
- data/spec/lib/immutable/list/tails_spec.rb +0 -28
- data/spec/lib/immutable/list/take_spec.rb +0 -30
- data/spec/lib/immutable/list/take_while_spec.rb +0 -46
- data/spec/lib/immutable/list/to_a_spec.rb +0 -39
- data/spec/lib/immutable/list/to_ary_spec.rb +0 -41
- data/spec/lib/immutable/list/to_list_spec.rb +0 -19
- data/spec/lib/immutable/list/to_set_spec.rb +0 -17
- data/spec/lib/immutable/list/transpose_spec.rb +0 -19
- data/spec/lib/immutable/list/union_spec.rb +0 -31
- data/spec/lib/immutable/list/uniq_spec.rb +0 -35
- data/spec/lib/immutable/list/zip_spec.rb +0 -23
- data/spec/lib/immutable/nested/construction_spec.rb +0 -101
- data/spec/lib/immutable/set/add_spec.rb +0 -77
- data/spec/lib/immutable/set/all_spec.rb +0 -51
- data/spec/lib/immutable/set/any_spec.rb +0 -51
- data/spec/lib/immutable/set/clear_spec.rb +0 -33
- data/spec/lib/immutable/set/compact_spec.rb +0 -30
- data/spec/lib/immutable/set/construction_spec.rb +0 -18
- data/spec/lib/immutable/set/copying_spec.rb +0 -13
- data/spec/lib/immutable/set/count_spec.rb +0 -36
- data/spec/lib/immutable/set/delete_spec.rb +0 -71
- data/spec/lib/immutable/set/difference_spec.rb +0 -49
- data/spec/lib/immutable/set/disjoint_spec.rb +0 -25
- data/spec/lib/immutable/set/each_spec.rb +0 -45
- data/spec/lib/immutable/set/empty_spec.rb +0 -44
- data/spec/lib/immutable/set/eqeq_spec.rb +0 -103
- data/spec/lib/immutable/set/eql_spec.rb +0 -109
- data/spec/lib/immutable/set/exclusion_spec.rb +0 -47
- data/spec/lib/immutable/set/find_spec.rb +0 -35
- data/spec/lib/immutable/set/first_spec.rb +0 -28
- data/spec/lib/immutable/set/flatten_spec.rb +0 -46
- data/spec/lib/immutable/set/grep_spec.rb +0 -57
- data/spec/lib/immutable/set/grep_v_spec.rb +0 -59
- data/spec/lib/immutable/set/group_by_spec.rb +0 -59
- data/spec/lib/immutable/set/hash_spec.rb +0 -22
- data/spec/lib/immutable/set/include_spec.rb +0 -60
- data/spec/lib/immutable/set/inspect_spec.rb +0 -47
- data/spec/lib/immutable/set/intersect_spec.rb +0 -25
- data/spec/lib/immutable/set/intersection_spec.rb +0 -52
- data/spec/lib/immutable/set/join_spec.rb +0 -64
- data/spec/lib/immutable/set/map_spec.rb +0 -59
- data/spec/lib/immutable/set/marshal_spec.rb +0 -28
- data/spec/lib/immutable/set/maximum_spec.rb +0 -36
- data/spec/lib/immutable/set/minimum_spec.rb +0 -36
- data/spec/lib/immutable/set/new_spec.rb +0 -53
- data/spec/lib/immutable/set/none_spec.rb +0 -47
- data/spec/lib/immutable/set/one_spec.rb +0 -47
- data/spec/lib/immutable/set/partition_spec.rb +0 -52
- data/spec/lib/immutable/set/product_spec.rb +0 -23
- data/spec/lib/immutable/set/reduce_spec.rb +0 -55
- data/spec/lib/immutable/set/reject_spec.rb +0 -50
- data/spec/lib/immutable/set/reverse_each_spec.rb +0 -38
- data/spec/lib/immutable/set/sample_spec.rb +0 -13
- data/spec/lib/immutable/set/select_spec.rb +0 -73
- data/spec/lib/immutable/set/size_spec.rb +0 -17
- data/spec/lib/immutable/set/sorting_spec.rb +0 -65
- data/spec/lib/immutable/set/subset_spec.rb +0 -51
- data/spec/lib/immutable/set/sum_spec.rb +0 -23
- data/spec/lib/immutable/set/superset_spec.rb +0 -51
- data/spec/lib/immutable/set/to_a_spec.rb +0 -30
- data/spec/lib/immutable/set/to_list_spec.rb +0 -35
- data/spec/lib/immutable/set/to_set_spec.rb +0 -19
- data/spec/lib/immutable/set/union_spec.rb +0 -63
- data/spec/lib/immutable/sorted_set/above_spec.rb +0 -51
- data/spec/lib/immutable/sorted_set/add_spec.rb +0 -62
- data/spec/lib/immutable/sorted_set/at_spec.rb +0 -24
- data/spec/lib/immutable/sorted_set/below_spec.rb +0 -51
- data/spec/lib/immutable/sorted_set/between_spec.rb +0 -51
- data/spec/lib/immutable/sorted_set/clear_spec.rb +0 -43
- data/spec/lib/immutable/sorted_set/copying_spec.rb +0 -20
- data/spec/lib/immutable/sorted_set/delete_at_spec.rb +0 -18
- data/spec/lib/immutable/sorted_set/delete_spec.rb +0 -89
- data/spec/lib/immutable/sorted_set/difference_spec.rb +0 -22
- data/spec/lib/immutable/sorted_set/disjoint_spec.rb +0 -25
- data/spec/lib/immutable/sorted_set/drop_spec.rb +0 -55
- data/spec/lib/immutable/sorted_set/drop_while_spec.rb +0 -34
- data/spec/lib/immutable/sorted_set/each_spec.rb +0 -28
- data/spec/lib/immutable/sorted_set/empty_spec.rb +0 -34
- data/spec/lib/immutable/sorted_set/eql_spec.rb +0 -120
- data/spec/lib/immutable/sorted_set/exclusion_spec.rb +0 -22
- data/spec/lib/immutable/sorted_set/fetch_spec.rb +0 -64
- data/spec/lib/immutable/sorted_set/find_index_spec.rb +0 -40
- data/spec/lib/immutable/sorted_set/first_spec.rb +0 -18
- data/spec/lib/immutable/sorted_set/from_spec.rb +0 -51
- data/spec/lib/immutable/sorted_set/group_by_spec.rb +0 -57
- data/spec/lib/immutable/sorted_set/include_spec.rb +0 -23
- data/spec/lib/immutable/sorted_set/inspect_spec.rb +0 -37
- data/spec/lib/immutable/sorted_set/intersect_spec.rb +0 -25
- data/spec/lib/immutable/sorted_set/intersection_spec.rb +0 -28
- data/spec/lib/immutable/sorted_set/last_spec.rb +0 -36
- data/spec/lib/immutable/sorted_set/map_spec.rb +0 -51
- data/spec/lib/immutable/sorted_set/marshal_spec.rb +0 -36
- data/spec/lib/immutable/sorted_set/maximum_spec.rb +0 -36
- data/spec/lib/immutable/sorted_set/minimum_spec.rb +0 -19
- data/spec/lib/immutable/sorted_set/new_spec.rb +0 -137
- data/spec/lib/immutable/sorted_set/reverse_each_spec.rb +0 -28
- data/spec/lib/immutable/sorted_set/sample_spec.rb +0 -13
- data/spec/lib/immutable/sorted_set/select_spec.rb +0 -61
- data/spec/lib/immutable/sorted_set/size_spec.rb +0 -17
- data/spec/lib/immutable/sorted_set/slice_spec.rb +0 -256
- data/spec/lib/immutable/sorted_set/sorting_spec.rb +0 -56
- data/spec/lib/immutable/sorted_set/subset_spec.rb +0 -47
- data/spec/lib/immutable/sorted_set/superset_spec.rb +0 -47
- data/spec/lib/immutable/sorted_set/take_spec.rb +0 -54
- data/spec/lib/immutable/sorted_set/take_while_spec.rb +0 -33
- data/spec/lib/immutable/sorted_set/to_set_spec.rb +0 -17
- data/spec/lib/immutable/sorted_set/union_spec.rb +0 -58
- data/spec/lib/immutable/sorted_set/up_to_spec.rb +0 -52
- data/spec/lib/immutable/sorted_set/util_spec.rb +0 -48
- data/spec/lib/immutable/sorted_set/values_at_spec.rb +0 -33
- data/spec/lib/immutable/vector/add_spec.rb +0 -67
- data/spec/lib/immutable/vector/any_spec.rb +0 -69
- data/spec/lib/immutable/vector/assoc_spec.rb +0 -45
- data/spec/lib/immutable/vector/bsearch_spec.rb +0 -65
- data/spec/lib/immutable/vector/clear_spec.rb +0 -33
- data/spec/lib/immutable/vector/combination_spec.rb +0 -81
- data/spec/lib/immutable/vector/compact_spec.rb +0 -29
- data/spec/lib/immutable/vector/compare_spec.rb +0 -31
- data/spec/lib/immutable/vector/concat_spec.rb +0 -34
- data/spec/lib/immutable/vector/copying_spec.rb +0 -20
- data/spec/lib/immutable/vector/count_spec.rb +0 -17
- data/spec/lib/immutable/vector/delete_at_spec.rb +0 -53
- data/spec/lib/immutable/vector/delete_spec.rb +0 -30
- data/spec/lib/immutable/vector/dig_spec.rb +0 -30
- data/spec/lib/immutable/vector/drop_spec.rb +0 -41
- data/spec/lib/immutable/vector/drop_while_spec.rb +0 -54
- data/spec/lib/immutable/vector/each_index_spec.rb +0 -40
- data/spec/lib/immutable/vector/each_spec.rb +0 -44
- data/spec/lib/immutable/vector/each_with_index_spec.rb +0 -39
- data/spec/lib/immutable/vector/empty_spec.rb +0 -41
- data/spec/lib/immutable/vector/eql_spec.rb +0 -76
- data/spec/lib/immutable/vector/fetch_spec.rb +0 -64
- data/spec/lib/immutable/vector/fill_spec.rb +0 -88
- data/spec/lib/immutable/vector/first_spec.rb +0 -18
- data/spec/lib/immutable/vector/flat_map_spec.rb +0 -50
- data/spec/lib/immutable/vector/flatten_spec.rb +0 -58
- data/spec/lib/immutable/vector/get_spec.rb +0 -74
- data/spec/lib/immutable/vector/group_by_spec.rb +0 -57
- data/spec/lib/immutable/vector/include_spec.rb +0 -30
- data/spec/lib/immutable/vector/insert_spec.rb +0 -68
- data/spec/lib/immutable/vector/inspect_spec.rb +0 -49
- data/spec/lib/immutable/vector/join_spec.rb +0 -58
- data/spec/lib/immutable/vector/last_spec.rb +0 -45
- data/spec/lib/immutable/vector/length_spec.rb +0 -45
- data/spec/lib/immutable/vector/ltlt_spec.rb +0 -65
- data/spec/lib/immutable/vector/map_spec.rb +0 -51
- data/spec/lib/immutable/vector/marshal_spec.rb +0 -31
- data/spec/lib/immutable/vector/maximum_spec.rb +0 -33
- data/spec/lib/immutable/vector/minimum_spec.rb +0 -33
- data/spec/lib/immutable/vector/multiply_spec.rb +0 -47
- data/spec/lib/immutable/vector/new_spec.rb +0 -50
- data/spec/lib/immutable/vector/partition_spec.rb +0 -52
- data/spec/lib/immutable/vector/permutation_spec.rb +0 -91
- data/spec/lib/immutable/vector/pop_spec.rb +0 -26
- data/spec/lib/immutable/vector/product_spec.rb +0 -70
- data/spec/lib/immutable/vector/reduce_spec.rb +0 -55
- data/spec/lib/immutable/vector/reject_spec.rb +0 -43
- data/spec/lib/immutable/vector/repeated_combination_spec.rb +0 -77
- data/spec/lib/immutable/vector/repeated_permutation_spec.rb +0 -93
- data/spec/lib/immutable/vector/reverse_each_spec.rb +0 -31
- data/spec/lib/immutable/vector/reverse_spec.rb +0 -21
- data/spec/lib/immutable/vector/rindex_spec.rb +0 -36
- data/spec/lib/immutable/vector/rotate_spec.rb +0 -73
- data/spec/lib/immutable/vector/sample_spec.rb +0 -13
- data/spec/lib/immutable/vector/select_spec.rb +0 -63
- data/spec/lib/immutable/vector/set_spec.rb +0 -174
- data/spec/lib/immutable/vector/shift_spec.rb +0 -27
- data/spec/lib/immutable/vector/shuffle_spec.rb +0 -43
- data/spec/lib/immutable/vector/slice_spec.rb +0 -240
- data/spec/lib/immutable/vector/sorting_spec.rb +0 -56
- data/spec/lib/immutable/vector/sum_spec.rb +0 -17
- data/spec/lib/immutable/vector/take_spec.rb +0 -42
- data/spec/lib/immutable/vector/take_while_spec.rb +0 -34
- data/spec/lib/immutable/vector/to_a_spec.rb +0 -41
- data/spec/lib/immutable/vector/to_ary_spec.rb +0 -34
- data/spec/lib/immutable/vector/to_list_spec.rb +0 -30
- data/spec/lib/immutable/vector/to_set_spec.rb +0 -21
- data/spec/lib/immutable/vector/transpose_spec.rb +0 -48
- data/spec/lib/immutable/vector/uniq_spec.rb +0 -76
- data/spec/lib/immutable/vector/unshift_spec.rb +0 -28
- data/spec/lib/immutable/vector/update_in_spec.rb +0 -82
- data/spec/lib/immutable/vector/values_at_spec.rb +0 -33
- data/spec/lib/immutable/vector/zip_spec.rb +0 -57
- data/spec/lib/load_spec.rb +0 -42
- data/spec/spec_helper.rb +0 -96
@@ -1,61 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
[:select, :find_all].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
let(:sorted_set) { SS["A", "B", "C"] }
|
7
|
-
|
8
|
-
context "when everything matches" do
|
9
|
-
it "preserves the original" do
|
10
|
-
sorted_set.send(method) { true }
|
11
|
-
sorted_set.should eql(SS["A", "B", "C"])
|
12
|
-
end
|
13
|
-
|
14
|
-
it "returns self" do
|
15
|
-
sorted_set.send(method) { |item| true }.should equal(sorted_set)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "when only some things match" do
|
20
|
-
context "with a block" do
|
21
|
-
it "preserves the original" do
|
22
|
-
sorted_set.send(method) { |item| item == "A" }
|
23
|
-
sorted_set.should eql(SS["A", "B", "C"])
|
24
|
-
end
|
25
|
-
|
26
|
-
it "returns a set with the matching values" do
|
27
|
-
sorted_set.send(method) { |item| item == "A" }.should eql(SS["A"])
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "with no block" do
|
32
|
-
it "returns an Enumerator" do
|
33
|
-
sorted_set.send(method).class.should be(Enumerator)
|
34
|
-
sorted_set.send(method).each { |item| item == "A" }.should eql(SS["A"])
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "when nothing matches" do
|
40
|
-
it "preserves the original" do
|
41
|
-
sorted_set.send(method) { |item| false }
|
42
|
-
sorted_set.should eql(SS["A", "B", "C"])
|
43
|
-
end
|
44
|
-
|
45
|
-
it "returns the canonical empty set" do
|
46
|
-
sorted_set.send(method) { |item| false }.should equal(Immutable::EmptySortedSet)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context "from a subclass" do
|
51
|
-
it "returns an instance of the same class" do
|
52
|
-
subclass = Class.new(Immutable::SortedSet)
|
53
|
-
instance = subclass.new(['A', 'B', 'C'])
|
54
|
-
instance.send(method) { true }.class.should be(subclass)
|
55
|
-
instance.send(method) { false }.class.should be(subclass)
|
56
|
-
instance.send(method) { rand(2) == 0 }.class.should be(subclass)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
[:size, :length].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
[
|
7
|
-
[[], 0],
|
8
|
-
[["A"], 1],
|
9
|
-
[%w[A B C], 3],
|
10
|
-
].each do |values, result|
|
11
|
-
it "returns #{result} for #{values.inspect}" do
|
12
|
-
SS[*values].send(method).should == result
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,256 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
let(:sorted_set) { SS[1,2,3,4] }
|
5
|
-
let(:big) { SS.new(1..10000) }
|
6
|
-
|
7
|
-
[:slice, :[]].each do |method|
|
8
|
-
describe "##{method}" do
|
9
|
-
context "when passed a positive integral index" do
|
10
|
-
it "returns the element at that index" do
|
11
|
-
sorted_set.send(method, 0).should be(1)
|
12
|
-
sorted_set.send(method, 1).should be(2)
|
13
|
-
sorted_set.send(method, 2).should be(3)
|
14
|
-
sorted_set.send(method, 3).should be(4)
|
15
|
-
sorted_set.send(method, 4).should be(nil)
|
16
|
-
sorted_set.send(method, 10).should be(nil)
|
17
|
-
|
18
|
-
big.send(method, 0).should be(1)
|
19
|
-
big.send(method, 9999).should be(10000)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "leaves the original unchanged" do
|
23
|
-
sorted_set.should eql(SS[1,2,3,4])
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context "when passed a negative integral index" do
|
28
|
-
it "returns the element which is number (index.abs) counting from the end of the sorted_set" do
|
29
|
-
sorted_set.send(method, -1).should be(4)
|
30
|
-
sorted_set.send(method, -2).should be(3)
|
31
|
-
sorted_set.send(method, -3).should be(2)
|
32
|
-
sorted_set.send(method, -4).should be(1)
|
33
|
-
sorted_set.send(method, -5).should be(nil)
|
34
|
-
sorted_set.send(method, -10).should be(nil)
|
35
|
-
|
36
|
-
big.send(method, -1).should be(10000)
|
37
|
-
big.send(method, -10000).should be(1)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context "when passed a positive integral index and count" do
|
42
|
-
it "returns 'count' elements starting from 'index'" do
|
43
|
-
sorted_set.send(method, 0, 0).should eql(SS.empty)
|
44
|
-
sorted_set.send(method, 0, 1).should eql(SS[1])
|
45
|
-
sorted_set.send(method, 0, 2).should eql(SS[1,2])
|
46
|
-
sorted_set.send(method, 0, 4).should eql(SS[1,2,3,4])
|
47
|
-
sorted_set.send(method, 0, 6).should eql(SS[1,2,3,4])
|
48
|
-
sorted_set.send(method, 0, -1).should be_nil
|
49
|
-
sorted_set.send(method, 0, -2).should be_nil
|
50
|
-
sorted_set.send(method, 0, -4).should be_nil
|
51
|
-
sorted_set.send(method, 2, 0).should eql(SS.empty)
|
52
|
-
sorted_set.send(method, 2, 1).should eql(SS[3])
|
53
|
-
sorted_set.send(method, 2, 2).should eql(SS[3,4])
|
54
|
-
sorted_set.send(method, 2, 4).should eql(SS[3,4])
|
55
|
-
sorted_set.send(method, 2, -1).should be_nil
|
56
|
-
sorted_set.send(method, 4, 0).should eql(SS.empty)
|
57
|
-
sorted_set.send(method, 4, 2).should eql(SS.empty)
|
58
|
-
sorted_set.send(method, 4, -1).should be_nil
|
59
|
-
sorted_set.send(method, 5, 0).should be_nil
|
60
|
-
sorted_set.send(method, 5, 2).should be_nil
|
61
|
-
sorted_set.send(method, 5, -1).should be_nil
|
62
|
-
sorted_set.send(method, 6, 0).should be_nil
|
63
|
-
sorted_set.send(method, 6, 2).should be_nil
|
64
|
-
sorted_set.send(method, 6, -1).should be_nil
|
65
|
-
|
66
|
-
big.send(method, 0, 3).should eql(SS[1,2,3])
|
67
|
-
big.send(method, 1023, 4).should eql(SS[1024,1025,1026,1027])
|
68
|
-
big.send(method, 1024, 4).should eql(SS[1025,1026,1027,1028])
|
69
|
-
end
|
70
|
-
|
71
|
-
it "leaves the original unchanged" do
|
72
|
-
sorted_set.should eql(SS[1,2,3,4])
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
context "when passed a negative integral index and count" do
|
77
|
-
it "returns 'count' elements, starting from index which is number 'index.abs' counting from the end of the array" do
|
78
|
-
sorted_set.send(method, -1, 0).should eql(SS.empty)
|
79
|
-
sorted_set.send(method, -1, 1).should eql(SS[4])
|
80
|
-
sorted_set.send(method, -1, 2).should eql(SS[4])
|
81
|
-
sorted_set.send(method, -1, -1).should be_nil
|
82
|
-
sorted_set.send(method, -2, 0).should eql(SS.empty)
|
83
|
-
sorted_set.send(method, -2, 1).should eql(SS[3])
|
84
|
-
sorted_set.send(method, -2, 2).should eql(SS[3,4])
|
85
|
-
sorted_set.send(method, -2, 4).should eql(SS[3,4])
|
86
|
-
sorted_set.send(method, -2, -1).should be_nil
|
87
|
-
sorted_set.send(method, -4, 0).should eql(SS.empty)
|
88
|
-
sorted_set.send(method, -4, 1).should eql(SS[1])
|
89
|
-
sorted_set.send(method, -4, 2).should eql(SS[1,2])
|
90
|
-
sorted_set.send(method, -4, 4).should eql(SS[1,2,3,4])
|
91
|
-
sorted_set.send(method, -4, 6).should eql(SS[1,2,3,4])
|
92
|
-
sorted_set.send(method, -4, -1).should be_nil
|
93
|
-
sorted_set.send(method, -5, 0).should be_nil
|
94
|
-
sorted_set.send(method, -5, 1).should be_nil
|
95
|
-
sorted_set.send(method, -5, 10).should be_nil
|
96
|
-
sorted_set.send(method, -5, -1).should be_nil
|
97
|
-
|
98
|
-
big.send(method, -1, 1).should eql(SS[10000])
|
99
|
-
big.send(method, -1, 2).should eql(SS[10000])
|
100
|
-
big.send(method, -6, 2).should eql(SS[9995,9996])
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
context "when passed a Range" do
|
105
|
-
it "returns the elements whose indexes are within the given Range" do
|
106
|
-
sorted_set.send(method, 0..-1).should eql(SS[1,2,3,4])
|
107
|
-
sorted_set.send(method, 0..-10).should eql(SS.empty)
|
108
|
-
sorted_set.send(method, 0..0).should eql(SS[1])
|
109
|
-
sorted_set.send(method, 0..1).should eql(SS[1,2])
|
110
|
-
sorted_set.send(method, 0..2).should eql(SS[1,2,3])
|
111
|
-
sorted_set.send(method, 0..3).should eql(SS[1,2,3,4])
|
112
|
-
sorted_set.send(method, 0..4).should eql(SS[1,2,3,4])
|
113
|
-
sorted_set.send(method, 0..10).should eql(SS[1,2,3,4])
|
114
|
-
sorted_set.send(method, 2..-10).should eql(SS.empty)
|
115
|
-
sorted_set.send(method, 2..0).should eql(SS.empty)
|
116
|
-
sorted_set.send(method, 2..2).should eql(SS[3])
|
117
|
-
sorted_set.send(method, 2..3).should eql(SS[3,4])
|
118
|
-
sorted_set.send(method, 2..4).should eql(SS[3,4])
|
119
|
-
sorted_set.send(method, 3..0).should eql(SS.empty)
|
120
|
-
sorted_set.send(method, 3..3).should eql(SS[4])
|
121
|
-
sorted_set.send(method, 3..4).should eql(SS[4])
|
122
|
-
sorted_set.send(method, 4..0).should eql(SS.empty)
|
123
|
-
sorted_set.send(method, 4..4).should eql(SS.empty)
|
124
|
-
sorted_set.send(method, 4..5).should eql(SS.empty)
|
125
|
-
sorted_set.send(method, 5..0).should be_nil
|
126
|
-
sorted_set.send(method, 5..5).should be_nil
|
127
|
-
sorted_set.send(method, 5..6).should be_nil
|
128
|
-
|
129
|
-
big.send(method, 159..162).should eql(SS[160,161,162,163])
|
130
|
-
big.send(method, 160..162).should eql(SS[161,162,163])
|
131
|
-
big.send(method, 161..162).should eql(SS[162,163])
|
132
|
-
big.send(method, 9999..10100).should eql(SS[10000])
|
133
|
-
big.send(method, 10000..10100).should eql(SS.empty)
|
134
|
-
big.send(method, 10001..10100).should be_nil
|
135
|
-
|
136
|
-
sorted_set.send(method, 0...-1).should eql(SS[1,2,3])
|
137
|
-
sorted_set.send(method, 0...-10).should eql(SS.empty)
|
138
|
-
sorted_set.send(method, 0...0).should eql(SS.empty)
|
139
|
-
sorted_set.send(method, 0...1).should eql(SS[1])
|
140
|
-
sorted_set.send(method, 0...2).should eql(SS[1,2])
|
141
|
-
sorted_set.send(method, 0...3).should eql(SS[1,2,3])
|
142
|
-
sorted_set.send(method, 0...4).should eql(SS[1,2,3,4])
|
143
|
-
sorted_set.send(method, 0...10).should eql(SS[1,2,3,4])
|
144
|
-
sorted_set.send(method, 2...-10).should eql(SS.empty)
|
145
|
-
sorted_set.send(method, 2...0).should eql(SS.empty)
|
146
|
-
sorted_set.send(method, 2...2).should eql(SS.empty)
|
147
|
-
sorted_set.send(method, 2...3).should eql(SS[3])
|
148
|
-
sorted_set.send(method, 2...4).should eql(SS[3,4])
|
149
|
-
sorted_set.send(method, 3...0).should eql(SS.empty)
|
150
|
-
sorted_set.send(method, 3...3).should eql(SS.empty)
|
151
|
-
sorted_set.send(method, 3...4).should eql(SS[4])
|
152
|
-
sorted_set.send(method, 4...0).should eql(SS.empty)
|
153
|
-
sorted_set.send(method, 4...4).should eql(SS.empty)
|
154
|
-
sorted_set.send(method, 4...5).should eql(SS.empty)
|
155
|
-
sorted_set.send(method, 5...0).should be_nil
|
156
|
-
sorted_set.send(method, 5...5).should be_nil
|
157
|
-
sorted_set.send(method, 5...6).should be_nil
|
158
|
-
|
159
|
-
big.send(method, 159...162).should eql(SS[160,161,162])
|
160
|
-
big.send(method, 160...162).should eql(SS[161,162])
|
161
|
-
big.send(method, 161...162).should eql(SS[162])
|
162
|
-
big.send(method, 9999...10100).should eql(SS[10000])
|
163
|
-
big.send(method, 10000...10100).should eql(SS.empty)
|
164
|
-
big.send(method, 10001...10100).should be_nil
|
165
|
-
|
166
|
-
sorted_set.send(method, -1..-1).should eql(SS[4])
|
167
|
-
sorted_set.send(method, -1...-1).should eql(SS.empty)
|
168
|
-
sorted_set.send(method, -1..3).should eql(SS[4])
|
169
|
-
sorted_set.send(method, -1...3).should eql(SS.empty)
|
170
|
-
sorted_set.send(method, -1..4).should eql(SS[4])
|
171
|
-
sorted_set.send(method, -1...4).should eql(SS[4])
|
172
|
-
sorted_set.send(method, -1..10).should eql(SS[4])
|
173
|
-
sorted_set.send(method, -1...10).should eql(SS[4])
|
174
|
-
sorted_set.send(method, -1..0).should eql(SS.empty)
|
175
|
-
sorted_set.send(method, -1..-4).should eql(SS.empty)
|
176
|
-
sorted_set.send(method, -1...-4).should eql(SS.empty)
|
177
|
-
sorted_set.send(method, -1..-6).should eql(SS.empty)
|
178
|
-
sorted_set.send(method, -1...-6).should eql(SS.empty)
|
179
|
-
sorted_set.send(method, -2..-2).should eql(SS[3])
|
180
|
-
sorted_set.send(method, -2...-2).should eql(SS.empty)
|
181
|
-
sorted_set.send(method, -2..-1).should eql(SS[3,4])
|
182
|
-
sorted_set.send(method, -2...-1).should eql(SS[3])
|
183
|
-
sorted_set.send(method, -2..10).should eql(SS[3,4])
|
184
|
-
sorted_set.send(method, -2...10).should eql(SS[3,4])
|
185
|
-
|
186
|
-
big.send(method, -1..-1).should eql(SS[10000])
|
187
|
-
big.send(method, -1..9999).should eql(SS[10000])
|
188
|
-
big.send(method, -1...9999).should eql(SS.empty)
|
189
|
-
big.send(method, -2...9999).should eql(SS[9999])
|
190
|
-
big.send(method, -2..-1).should eql(SS[9999,10000])
|
191
|
-
|
192
|
-
sorted_set.send(method, -4..-4).should eql(SS[1])
|
193
|
-
sorted_set.send(method, -4..-2).should eql(SS[1,2,3])
|
194
|
-
sorted_set.send(method, -4...-2).should eql(SS[1,2])
|
195
|
-
sorted_set.send(method, -4..-1).should eql(SS[1,2,3,4])
|
196
|
-
sorted_set.send(method, -4...-1).should eql(SS[1,2,3])
|
197
|
-
sorted_set.send(method, -4..3).should eql(SS[1,2,3,4])
|
198
|
-
sorted_set.send(method, -4...3).should eql(SS[1,2,3])
|
199
|
-
sorted_set.send(method, -4..4).should eql(SS[1,2,3,4])
|
200
|
-
sorted_set.send(method, -4...4).should eql(SS[1,2,3,4])
|
201
|
-
sorted_set.send(method, -4..0).should eql(SS[1])
|
202
|
-
sorted_set.send(method, -4...0).should eql(SS.empty)
|
203
|
-
sorted_set.send(method, -4..1).should eql(SS[1,2])
|
204
|
-
sorted_set.send(method, -4...1).should eql(SS[1])
|
205
|
-
|
206
|
-
sorted_set.send(method, -5..-5).should be_nil
|
207
|
-
sorted_set.send(method, -5...-5).should be_nil
|
208
|
-
sorted_set.send(method, -5..-4).should be_nil
|
209
|
-
sorted_set.send(method, -5..-1).should be_nil
|
210
|
-
sorted_set.send(method, -5..10).should be_nil
|
211
|
-
|
212
|
-
big.send(method, -10001..-1).should be_nil
|
213
|
-
end
|
214
|
-
|
215
|
-
it "leaves the original unchanged" do
|
216
|
-
sorted_set.should eql(SS[1,2,3,4])
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
220
|
-
|
221
|
-
context "when passed an empty Range" do
|
222
|
-
it "does not lose custom sort order" do
|
223
|
-
ss = SS.new(["yogurt", "cake", "pistachios"]) { |word| word.length }
|
224
|
-
ss = ss.send(method, 1...1).add("tea").add("fruitcake").add("toast")
|
225
|
-
ss.to_a.should == ["tea", "toast", "fruitcake"]
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
context "when passed a length of zero" do
|
230
|
-
it "does not lose custom sort order" do
|
231
|
-
ss = SS.new(["yogurt", "cake", "pistachios"]) { |word| word.length }
|
232
|
-
ss = ss.send(method, 0, 0).add("tea").add("fruitcake").add("toast")
|
233
|
-
ss.to_a.should == ["tea", "toast", "fruitcake"]
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
context "when passed a subclass of Range" do
|
238
|
-
it "works the same as with a Range" do
|
239
|
-
subclass = Class.new(Range)
|
240
|
-
sorted_set.send(method, subclass.new(1,2)).should eql(SS[2,3])
|
241
|
-
sorted_set.send(method, subclass.new(-3,-1,true)).should eql(SS[2,3])
|
242
|
-
end
|
243
|
-
end
|
244
|
-
|
245
|
-
context "on a subclass of SortedSet" do
|
246
|
-
it "with index and count or a range, returns an instance of the subclass" do
|
247
|
-
subclass = Class.new(Immutable::SortedSet)
|
248
|
-
instance = subclass.new([1,2,3])
|
249
|
-
instance.send(method, 0, 0).class.should be(subclass)
|
250
|
-
instance.send(method, 0, 2).class.should be(subclass)
|
251
|
-
instance.send(method, 0..0).class.should be(subclass)
|
252
|
-
instance.send(method, 1..-1).class.should be(subclass)
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
[
|
5
|
-
[:sort, ->(left, right) { left.length <=> right.length }],
|
6
|
-
[:sort_by, ->(item) { item.length }],
|
7
|
-
].each do |method, comparator|
|
8
|
-
describe "##{method}" do
|
9
|
-
[
|
10
|
-
[[], []],
|
11
|
-
[["A"], ["A"]],
|
12
|
-
[%w[Ichi Ni San], %w[Ni San Ichi]],
|
13
|
-
].each do |values, expected|
|
14
|
-
describe "on #{values.inspect}" do
|
15
|
-
let(:sorted_set) { SS.new(values) { |item| item.reverse }}
|
16
|
-
|
17
|
-
context "with a block" do
|
18
|
-
it "preserves the original" do
|
19
|
-
sorted_set.send(method, &comparator)
|
20
|
-
sorted_set.to_a.should == SS.new(values) { |item| item.reverse }
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns #{expected.inspect}" do
|
24
|
-
sorted_set.send(method, &comparator).class.should be(Immutable::SortedSet)
|
25
|
-
sorted_set.send(method, &comparator).to_a.should == expected
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context "without a block" do
|
30
|
-
it "preserves the original" do
|
31
|
-
sorted_set.send(method)
|
32
|
-
sorted_set.to_a.should == SS.new(values) { |item| item.reverse }
|
33
|
-
end
|
34
|
-
|
35
|
-
it "returns #{expected.sort.inspect}" do
|
36
|
-
sorted_set.send(method).class.should be(Immutable::SortedSet)
|
37
|
-
sorted_set.send(method).to_a.should == expected.sort
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe :sort do
|
46
|
-
context "on a SortedSet with custom sort order" do
|
47
|
-
let(:sorted_set) { SS.new([1,2,3,4]) { |x,y| y <=> x }}
|
48
|
-
|
49
|
-
it "returns a SortedSet with the natural sort order" do
|
50
|
-
result = sorted_set.sort
|
51
|
-
expect(sorted_set.to_a).to eq([4,3,2,1])
|
52
|
-
expect(result.to_a).to eq([1,2,3,4])
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#subset?" do
|
5
|
-
[
|
6
|
-
[[], [], true],
|
7
|
-
[["A"], [], false],
|
8
|
-
[[], ["A"], true],
|
9
|
-
[["A"], ["A"], true],
|
10
|
-
[%w[A B C], ["B"], false],
|
11
|
-
[["B"], %w[A B C], true],
|
12
|
-
[%w[A B C], %w[A C], false],
|
13
|
-
[%w[A C], %w[A B C], true],
|
14
|
-
[%w[A B C], %w[A B C], true],
|
15
|
-
[%w[A B C], %w[A B C D], true],
|
16
|
-
[%w[A B C D], %w[A B C], false],
|
17
|
-
].each do |a, b, expected|
|
18
|
-
context "for #{a.inspect} and #{b.inspect}" do
|
19
|
-
it "returns #{expected}" do
|
20
|
-
SS[*a].subset?(SS[*b]).should == expected
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#proper_subset?" do
|
27
|
-
[
|
28
|
-
[[], [], false],
|
29
|
-
[["A"], [], false],
|
30
|
-
[[], ["A"], true],
|
31
|
-
[["A"], ["A"], false],
|
32
|
-
[%w[A B C], ["B"], false],
|
33
|
-
[["B"], %w[A B C], true],
|
34
|
-
[%w[A B C], %w[A C], false],
|
35
|
-
[%w[A C], %w[A B C], true],
|
36
|
-
[%w[A B C], %w[A B C], false],
|
37
|
-
[%w[A B C], %w[A B C D], true],
|
38
|
-
[%w[A B C D], %w[A B C], false],
|
39
|
-
].each do |a, b, expected|
|
40
|
-
context "for #{a.inspect} and #{b.inspect}" do
|
41
|
-
it "returns #{expected}" do
|
42
|
-
SS[*a].proper_subset?(SS[*b]).should == expected
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#superset?" do
|
5
|
-
[
|
6
|
-
[[], [], true],
|
7
|
-
[["A"], [], true],
|
8
|
-
[[], ["A"], false],
|
9
|
-
[["A"], ["A"], true],
|
10
|
-
[%w[A B C], ["B"], true],
|
11
|
-
[["B"], %w[A B C], false],
|
12
|
-
[%w[A B C], %w[A C], true],
|
13
|
-
[%w[A C], %w[A B C], false],
|
14
|
-
[%w[A B C], %w[A B C], true],
|
15
|
-
[%w[A B C], %w[A B C D], false],
|
16
|
-
[%w[A B C D], %w[A B C], true],
|
17
|
-
].each do |a, b, expected|
|
18
|
-
context "for #{a.inspect} and #{b.inspect}" do
|
19
|
-
it "returns #{expected}" do
|
20
|
-
SS[*a].superset?(SS[*b]).should == expected
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#proper_superset?" do
|
27
|
-
[
|
28
|
-
[[], [], false],
|
29
|
-
[["A"], [], true],
|
30
|
-
[[], ["A"], false],
|
31
|
-
[["A"], ["A"], false],
|
32
|
-
[%w[A B C], ["B"], true],
|
33
|
-
[["B"], %w[A B C], false],
|
34
|
-
[%w[A B C], %w[A C], true],
|
35
|
-
[%w[A C], %w[A B C], false],
|
36
|
-
[%w[A B C], %w[A B C], false],
|
37
|
-
[%w[A B C], %w[A B C D], false],
|
38
|
-
[%w[A B C D], %w[A B C], true],
|
39
|
-
].each do |a, b, expected|
|
40
|
-
context "for #{a.inspect} and #{b.inspect}" do
|
41
|
-
it "returns #{expected}" do
|
42
|
-
SS[*a].proper_superset?(SS[*b]).should == expected
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet 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
|
-
].each do |values, number, expected|
|
11
|
-
context "#{number} from #{values.inspect}" do
|
12
|
-
let(:sorted_set) { SS[*values] }
|
13
|
-
|
14
|
-
it "preserves the original" do
|
15
|
-
sorted_set.take(number)
|
16
|
-
sorted_set.should eql(SS[*values])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "returns #{expected.inspect}" do
|
20
|
-
sorted_set.take(number).should eql(SS[*expected])
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context "when argument is at least size of receiver" do
|
26
|
-
let(:sorted_set) { SS[6, 7, 8, 9] }
|
27
|
-
it "returns self" do
|
28
|
-
sorted_set.take(sorted_set.size).should be(sorted_set)
|
29
|
-
sorted_set.take(sorted_set.size + 1).should be(sorted_set)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "when the set has a custom order" do
|
34
|
-
let(:sorted_set) { SS.new([1, 2, 3]) { |x| -x }}
|
35
|
-
it "maintains the custom order" do
|
36
|
-
sorted_set.take(1).to_a.should == [3]
|
37
|
-
sorted_set.take(2).to_a.should == [3, 2]
|
38
|
-
sorted_set.take(3).to_a.should == [3, 2, 1]
|
39
|
-
end
|
40
|
-
|
41
|
-
it "keeps the comparator even when set is cleared" do
|
42
|
-
s = sorted_set.take(0)
|
43
|
-
s.add(4).add(5).add(6).to_a.should == [6, 5, 4]
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "when called on a subclass" do
|
48
|
-
it "should return an instance of the subclass" do
|
49
|
-
subclass = Class.new(Immutable::SortedSet)
|
50
|
-
subclass.new([1,2,3]).take(1).class.should be(subclass)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet 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
|
-
context "on #{values.inspect}" do
|
11
|
-
let(:sorted_set) { SS[*values] }
|
12
|
-
|
13
|
-
context "with a block" do
|
14
|
-
it "returns #{expected.inspect}" do
|
15
|
-
sorted_set.take_while { |item| item < "C" }.should eql(SS[*expected])
|
16
|
-
end
|
17
|
-
|
18
|
-
it "preserves the original" do
|
19
|
-
sorted_set.take_while { |item| item < "C" }
|
20
|
-
sorted_set.should eql(SS[*values])
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "without a block" do
|
25
|
-
it "returns an Enumerator" do
|
26
|
-
sorted_set.take_while.class.should be(Enumerator)
|
27
|
-
sorted_set.take_while.each { |item| item < "C" }.should eql(SS[*expected])
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#to_set" do
|
5
|
-
[
|
6
|
-
[],
|
7
|
-
["A"],
|
8
|
-
%w[A B C],
|
9
|
-
].each do |values|
|
10
|
-
context "on #{values.inspect}" do
|
11
|
-
it "returns a set with the same values" do
|
12
|
-
SS[*values].to_set.should eql(S[*values])
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
[:union, :|, :+, :merge].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
[
|
7
|
-
[[], [], []],
|
8
|
-
[["A"], [], ["A"]],
|
9
|
-
[["A"], ["A"], ["A"]],
|
10
|
-
[%w[A B C], [], %w[A B C]],
|
11
|
-
[%w[A C E G X], %w[B C D E H M], %w[A B C D E G H M X]]
|
12
|
-
].each do |a, b, expected|
|
13
|
-
context "for #{a.inspect} and #{b.inspect}" do
|
14
|
-
it "returns #{expected.inspect}" do
|
15
|
-
SS[*a].send(method, SS[*b]).should eql(SS[*expected])
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "for #{b.inspect} and #{a.inspect}" do
|
20
|
-
it "returns #{expected.inspect}" do
|
21
|
-
SS[*b].send(method, SS[*a]).should eql(SS[*expected])
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe :union do
|
29
|
-
it "filters out duplicates when passed an Array" do
|
30
|
-
sorted_set = SS['A', 'B', 'C', 'D'].union(['A', 'A', 'A', 'C', 'A', 'B', 'E'])
|
31
|
-
expect(sorted_set.to_a).to eq(['A', 'B', 'C', 'D', 'E'])
|
32
|
-
end
|
33
|
-
|
34
|
-
it "doesn't mutate an Array which is passed in" do
|
35
|
-
array = [3,2,1,3]
|
36
|
-
sorted_set = SS[1,2,5].union(array)
|
37
|
-
expect(array).to eq([3,2,1,3])
|
38
|
-
end
|
39
|
-
|
40
|
-
context "on a set ordered by a comparator" do
|
41
|
-
# Completely different code is executed when #union is called on a SS
|
42
|
-
# with a comparator block, so we should repeat all the same tests
|
43
|
-
|
44
|
-
it "still filters out duplicates when passed an Array" do
|
45
|
-
sorted_set = SS.new([1,2,3]) { |x,y| (x%7) <=> (y%7) }
|
46
|
-
sorted_set = sorted_set.union([7,8,9])
|
47
|
-
expect(sorted_set.to_a).to eq([7,1,2,3])
|
48
|
-
end
|
49
|
-
|
50
|
-
it "still doesn't mutate an Array which is passed in" do
|
51
|
-
array = [3,2,1,3]
|
52
|
-
sorted_set = SS.new([1,2,5]) { |x,y| y <=> x }
|
53
|
-
sorted_set = sorted_set.union(array)
|
54
|
-
expect(array).to eq([3,2,1,3])
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|