immutable-ruby 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- 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 +50 -15
- data/lib/immutable/enumerable.rb +19 -10
- data/lib/immutable/hash.rb +128 -28
- data/lib/immutable/list.rb +48 -48
- data/lib/immutable/nested.rb +10 -7
- data/lib/immutable/set.rb +30 -30
- data/lib/immutable/sorted_set.rb +77 -37
- data/lib/immutable/trie.rb +21 -29
- data/lib/immutable/vector.rb +61 -46
- data/lib/immutable/version.rb +1 -1
- data/lib/immutable.rb +9 -9
- metadata +44 -687
- 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/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/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 -69
- 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/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 -102
- 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/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/update_in_spec.rb +0 -79
- data/spec/lib/immutable/hash/values_at_spec.rb +0 -13
- 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 -33
- 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 -95
- data/spec/lib/immutable/set/add_spec.rb +0 -75
- 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/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 -59
- 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 -43
- 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 -71
- 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 -44
- 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 -27
- data/spec/lib/immutable/sorted_set/up_to_spec.rb +0 -52
- 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/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 -92
@@ -1,35 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Set do
|
4
|
-
describe "#to_list" do
|
5
|
-
[
|
6
|
-
[],
|
7
|
-
["A"],
|
8
|
-
%w[A B C],
|
9
|
-
].each do |values|
|
10
|
-
context "on #{values.inspect}" do
|
11
|
-
let(:set) { S[*values] }
|
12
|
-
let(:list) { set.to_list }
|
13
|
-
|
14
|
-
it "returns a list" do
|
15
|
-
list.is_a?(Immutable::List).should == true
|
16
|
-
end
|
17
|
-
|
18
|
-
it "doesn't change the original Set" do
|
19
|
-
list
|
20
|
-
set.should eql(S.new(values))
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "the returned list" do
|
24
|
-
it "has the correct length" do
|
25
|
-
list.size.should == values.size
|
26
|
-
end
|
27
|
-
|
28
|
-
it "contains all values" do
|
29
|
-
list.to_a.sort.should == values.sort
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Set do
|
4
|
-
describe "#to_set" do
|
5
|
-
[
|
6
|
-
[],
|
7
|
-
["A"],
|
8
|
-
%w[A B C],
|
9
|
-
].each do |values|
|
10
|
-
describe "on #{values.inspect}" do
|
11
|
-
let(:set) { S[*values] }
|
12
|
-
|
13
|
-
it "returns self" do
|
14
|
-
set.to_set.should equal(set)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Set do
|
4
|
-
[:union, :|, :+, :merge].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
[
|
7
|
-
[[], [], []],
|
8
|
-
[["A"], [], ["A"]],
|
9
|
-
[["A"], ["A"], ["A"]],
|
10
|
-
[[], ["A"], ["A"]],
|
11
|
-
[%w[A B C], [], %w[A B C]],
|
12
|
-
[%w[A B C], %w[A B C], %w[A B C]],
|
13
|
-
[%w[A B C], %w[X Y Z], %w[A B C X Y Z]]
|
14
|
-
].each do |a, b, expected|
|
15
|
-
context "for #{a.inspect} and #{b.inspect}" do
|
16
|
-
let(:set_a) { S[*a] }
|
17
|
-
let(:set_b) { S[*b] }
|
18
|
-
|
19
|
-
it "returns #{expected.inspect}, without changing the original Sets" do
|
20
|
-
set_a.send(method, set_b).should eql(S[*expected])
|
21
|
-
set_a.should eql(S.new(a))
|
22
|
-
set_b.should eql(S.new(b))
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "for #{b.inspect} and #{a.inspect}" do
|
27
|
-
let(:set_a) { S[*a] }
|
28
|
-
let(:set_b) { S[*b] }
|
29
|
-
|
30
|
-
it "returns #{expected.inspect}, without changing the original Sets" do
|
31
|
-
set_b.send(method, set_a).should eql(S[*expected])
|
32
|
-
set_a.should eql(S.new(a))
|
33
|
-
set_b.should eql(S.new(b))
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "when passed a Ruby Array" do
|
38
|
-
it "returns the expected Set" do
|
39
|
-
S[*a].send(method, b.freeze).should eql(S[*expected])
|
40
|
-
S[*b].send(method, a.freeze).should eql(S[*expected])
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context "from a subclass" do
|
45
|
-
it "returns an instance of the subclass" do
|
46
|
-
subclass = Class.new(Immutable::Set)
|
47
|
-
subclass.new(a).send(method, S.new(b)).class.should be(subclass)
|
48
|
-
subclass.new(b).send(method, S.new(a)).class.should be(subclass)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context "when receiving a subset" do
|
54
|
-
let(:set_a) { S.new(1..300) }
|
55
|
-
let(:set_b) { S.new(1..200) }
|
56
|
-
|
57
|
-
it "returns self" do
|
58
|
-
set_a.send(method, set_b).should be(set_a)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#above" do
|
5
|
-
context "when called without a block" do
|
6
|
-
it "returns a sorted set of all items higher than the argument" do
|
7
|
-
100.times do
|
8
|
-
items = rand(100).times.collect { rand(1000) }
|
9
|
-
set = SS.new(items)
|
10
|
-
threshold = rand(1000)
|
11
|
-
result = set.above(threshold)
|
12
|
-
array = items.select { |x| x > threshold }.sort
|
13
|
-
result.class.should be(Immutable::SortedSet)
|
14
|
-
result.size.should == array.size
|
15
|
-
result.to_a.should == array
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "when called with a block" do
|
21
|
-
it "yields all the items higher than the argument" do
|
22
|
-
100.times do
|
23
|
-
items = rand(100).times.collect { rand(1000) }
|
24
|
-
set = SS.new(items)
|
25
|
-
threshold = rand(1000)
|
26
|
-
result = []
|
27
|
-
set.above(threshold) { |x| result << x }
|
28
|
-
array = items.select { |x| x > threshold }.sort
|
29
|
-
result.size.should == array.size
|
30
|
-
result.should == array
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "on an empty set" do
|
36
|
-
it "returns an empty set" do
|
37
|
-
SS.empty.above(1).should be_empty
|
38
|
-
SS.empty.above('abc').should be_empty
|
39
|
-
SS.empty.above(:symbol).should be_empty
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "with an argument higher than all the values in the set" do
|
44
|
-
it "returns an empty set" do
|
45
|
-
result = SS.new(1..100).above(100)
|
46
|
-
result.class.should be(Immutable::SortedSet)
|
47
|
-
result.should be_empty
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
let(:sorted_set) { SS["B", "C", "D"] }
|
5
|
-
|
6
|
-
[:add, :<<].each do |method|
|
7
|
-
describe "##{method}" do
|
8
|
-
context "with a unique value" do
|
9
|
-
it "preserves the original" do
|
10
|
-
sorted_set.send(method, "A")
|
11
|
-
sorted_set.should eql(SS["B", "C", "D"])
|
12
|
-
end
|
13
|
-
|
14
|
-
it "returns a copy with the superset of values (in order)" do
|
15
|
-
sorted_set.send(method, "A").should eql(SS["A", "B", "C", "D"])
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "with a duplicate value" do
|
20
|
-
it "preserves the original values" do
|
21
|
-
sorted_set.send(method, "C")
|
22
|
-
sorted_set.should eql(SS["B", "C", "D"])
|
23
|
-
end
|
24
|
-
|
25
|
-
it "returns self" do
|
26
|
-
sorted_set.send(method, "C").should equal(sorted_set)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context "on a set ordered by a comparator" do
|
31
|
-
it "inserts the new item in the correct place" do
|
32
|
-
s = SS.new(['tick', 'pig', 'hippopotamus']) { |str| str.length }
|
33
|
-
s.add('giraffe').to_a.should == ['pig', 'tick', 'giraffe', 'hippopotamus']
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#add?" do
|
40
|
-
context "with a unique value" do
|
41
|
-
it "preserves the original" do
|
42
|
-
sorted_set.add?("A")
|
43
|
-
sorted_set.should eql(SS["B", "C", "D"])
|
44
|
-
end
|
45
|
-
|
46
|
-
it "returns a copy with the superset of values" do
|
47
|
-
sorted_set.add?("A").should eql(SS["A", "B", "C", "D"])
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context "with a duplicate value" do
|
52
|
-
it "preserves the original values" do
|
53
|
-
sorted_set.add?("C")
|
54
|
-
sorted_set.should eql(SS["B", "C", "D"])
|
55
|
-
end
|
56
|
-
|
57
|
-
it "returns false" do
|
58
|
-
sorted_set.add?("C").should equal(false)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#at" do
|
5
|
-
[
|
6
|
-
[[], 10, nil],
|
7
|
-
[["A"], 10, nil],
|
8
|
-
[%w[A B C], 0, "A"],
|
9
|
-
[%w[A B C], 1, "B"],
|
10
|
-
[%w[A B C], 2, "C"],
|
11
|
-
[%w[A B C], 3, nil],
|
12
|
-
[%w[A B C], -1, "C"],
|
13
|
-
[%w[A B C], -2, "B"],
|
14
|
-
[%w[A B C], -3, "A"],
|
15
|
-
[%w[A B C], -4, nil]
|
16
|
-
].each do |values, number, expected|
|
17
|
-
describe "#{values.inspect} with #{number}" do
|
18
|
-
it "returns #{expected.inspect}" do
|
19
|
-
SS[*values].at(number).should == expected
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#below" do
|
5
|
-
context "when called without a block" do
|
6
|
-
it "returns a sorted set of all items lower than the argument" do
|
7
|
-
100.times do
|
8
|
-
items = rand(100).times.collect { rand(1000) }
|
9
|
-
set = SS.new(items)
|
10
|
-
threshold = rand(1000)
|
11
|
-
result = set.below(threshold)
|
12
|
-
array = items.select { |x| x < threshold }.sort
|
13
|
-
result.class.should be(Immutable::SortedSet)
|
14
|
-
result.size.should == array.size
|
15
|
-
result.to_a.should == array
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "when called with a block" do
|
21
|
-
it "yields all the items lower than the argument" do
|
22
|
-
100.times do
|
23
|
-
items = rand(100).times.collect { rand(1000) }
|
24
|
-
set = SS.new(items)
|
25
|
-
threshold = rand(1000)
|
26
|
-
result = []
|
27
|
-
set.below(threshold) { |x| result << x }
|
28
|
-
array = items.select { |x| x < threshold }.sort
|
29
|
-
result.size.should == array.size
|
30
|
-
result.should == array
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "on an empty set" do
|
36
|
-
it "returns an empty set" do
|
37
|
-
SS.empty.below(1).should be_empty
|
38
|
-
SS.empty.below('abc').should be_empty
|
39
|
-
SS.empty.below(:symbol).should be_empty
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "with an argument lower than all the values in the set" do
|
44
|
-
it "returns an empty set" do
|
45
|
-
result = SS.new(1..100).below(1)
|
46
|
-
result.class.should be(Immutable::SortedSet)
|
47
|
-
result.should be_empty
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#between" do
|
5
|
-
context "when called without a block" do
|
6
|
-
it "returns a sorted set of all items from the first argument to the second" do
|
7
|
-
100.times do
|
8
|
-
items = rand(100).times.collect { rand(1000) }
|
9
|
-
set = SS.new(items)
|
10
|
-
from,to = [rand(1000),rand(1000)].sort
|
11
|
-
result = set.between(from, to)
|
12
|
-
array = items.select { |x| x >= from && x <= to }.sort
|
13
|
-
result.class.should be(Immutable::SortedSet)
|
14
|
-
result.size.should == array.size
|
15
|
-
result.to_a.should == array
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "when called with a block" do
|
21
|
-
it "yields all the items lower than the argument" do
|
22
|
-
100.times do
|
23
|
-
items = rand(100).times.collect { rand(1000) }
|
24
|
-
set = SS.new(items)
|
25
|
-
from,to = [rand(1000),rand(1000)].sort
|
26
|
-
result = []
|
27
|
-
set.between(from, to) { |x| result << x }
|
28
|
-
array = items.select { |x| x >= from && x <= to }.sort
|
29
|
-
result.size.should == array.size
|
30
|
-
result.should == array
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "on an empty set" do
|
36
|
-
it "returns an empty set" do
|
37
|
-
SS.empty.between(1, 2).should be_empty
|
38
|
-
SS.empty.between('abc', 'def').should be_empty
|
39
|
-
SS.empty.between(:symbol, :another).should be_empty
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "with a 'to' argument lower than the 'from' argument" do
|
44
|
-
it "returns an empty set" do
|
45
|
-
result = SS.new(1..100).between(6, 5)
|
46
|
-
result.class.should be(Immutable::SortedSet)
|
47
|
-
result.should be_empty
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#clear" do
|
5
|
-
[
|
6
|
-
[],
|
7
|
-
["A"],
|
8
|
-
%w[A B C],
|
9
|
-
].each do |values|
|
10
|
-
context "on #{values}" do
|
11
|
-
let(:sorted_set) { SS[*values] }
|
12
|
-
|
13
|
-
it "preserves the original" do
|
14
|
-
sorted_set.clear
|
15
|
-
sorted_set.should eql(SS[*values])
|
16
|
-
end
|
17
|
-
|
18
|
-
it "returns an empty set" do
|
19
|
-
sorted_set.clear.should equal(Immutable::EmptySortedSet)
|
20
|
-
sorted_set.clear.should be_empty
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context "from a subclass" do
|
26
|
-
it "returns an empty instance of the subclass" do
|
27
|
-
subclass = Class.new(Immutable::SortedSet)
|
28
|
-
instance = subclass.new([:a, :b, :c, :d])
|
29
|
-
instance.clear.class.should be(subclass)
|
30
|
-
instance.clear.should be_empty
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context "with a comparator" do
|
35
|
-
let(:sorted_set) { SS.new([1, 2, 3]) { |x| -x } }
|
36
|
-
it "returns an empty instance with same comparator" do
|
37
|
-
e = sorted_set.clear
|
38
|
-
e.should be_empty
|
39
|
-
e.add(4).add(5).add(6).to_a.should == [6, 5, 4]
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
[:dup, :clone].each do |method|
|
5
|
-
[
|
6
|
-
[],
|
7
|
-
["A"],
|
8
|
-
%w[A B C],
|
9
|
-
(1..32),
|
10
|
-
].each do |values|
|
11
|
-
describe "on #{values.inspect}" do
|
12
|
-
let(:sorted_set) { SS[*values] }
|
13
|
-
|
14
|
-
it "returns self" do
|
15
|
-
sorted_set.send(method).should equal(sorted_set)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#delete_at" do
|
5
|
-
let(:sorted_set) { SS[1,2,3,4,5] }
|
6
|
-
|
7
|
-
it "removes the element at the specified index" do
|
8
|
-
sorted_set.delete_at(0).should eql(SS[2,3,4,5])
|
9
|
-
sorted_set.delete_at(2).should eql(SS[1,2,4,5])
|
10
|
-
sorted_set.delete_at(-1).should eql(SS[1,2,3,4])
|
11
|
-
end
|
12
|
-
|
13
|
-
it "makes no modification if the index is out of range" do
|
14
|
-
sorted_set.delete_at(5).should eql(sorted_set)
|
15
|
-
sorted_set.delete_at(-6).should eql(sorted_set)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,89 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
let(:sorted_set) { SS["A", "B", "C"] }
|
5
|
-
|
6
|
-
describe "#delete" do
|
7
|
-
context "on an empty set" do
|
8
|
-
it "returns an empty set" do
|
9
|
-
SS.empty.delete(0).should be(SS.empty)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
context "with an existing value" do
|
14
|
-
it "preserves the original" do
|
15
|
-
sorted_set.delete("B")
|
16
|
-
sorted_set.should eql(SS["A", "B", "C"])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "returns a copy with the remaining of values" do
|
20
|
-
sorted_set.delete("B").should eql(SS["A", "C"])
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "with a non-existing value" do
|
25
|
-
it "preserves the original values" do
|
26
|
-
sorted_set.delete("D")
|
27
|
-
sorted_set.should eql(SS["A", "B", "C"])
|
28
|
-
end
|
29
|
-
|
30
|
-
it "returns self" do
|
31
|
-
sorted_set.delete("D").should equal(sorted_set)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "when removing the last value in a sorted set" do
|
36
|
-
it "maintains the set order" do
|
37
|
-
ss = SS.new(["peanuts", "jam", "milk"]) { |word| word.length }
|
38
|
-
ss = ss.delete("jam").delete("peanuts").delete("milk")
|
39
|
-
ss = ss.add("banana").add("sugar").add("spam")
|
40
|
-
ss.to_a.should == ['spam', 'sugar', 'banana']
|
41
|
-
end
|
42
|
-
|
43
|
-
context "when the set is in natural order" do
|
44
|
-
it "returns the canonical empty set" do
|
45
|
-
sorted_set.delete("B").delete("C").delete("A").should be(Immutable::EmptySortedSet)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
1.upto(10) do |n|
|
51
|
-
values = (1..n).to_a
|
52
|
-
values.combination(3) do |to_delete|
|
53
|
-
expected = to_delete.reduce(values.dup) { |ary,val| ary.delete(val); ary }
|
54
|
-
describe "on #{values.inspect}, when deleting #{to_delete.inspect}" do
|
55
|
-
it "returns #{expected.inspect}" do
|
56
|
-
set = SS.new(values)
|
57
|
-
result = to_delete.reduce(set) { |s,val| s.delete(val) }
|
58
|
-
result.should eql(SS.new(expected))
|
59
|
-
result.to_a.should eql(expected)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
describe "#delete?" do
|
67
|
-
context "with an existing value" do
|
68
|
-
it "preserves the original" do
|
69
|
-
sorted_set.delete?("B")
|
70
|
-
sorted_set.should eql(SS["A", "B", "C"])
|
71
|
-
end
|
72
|
-
|
73
|
-
it "returns a copy with the remaining values" do
|
74
|
-
sorted_set.delete?("B").should eql(SS["A", "C"])
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context "with a non-existing value" do
|
79
|
-
it "preserves the original values" do
|
80
|
-
sorted_set.delete?("D")
|
81
|
-
sorted_set.should eql(SS["A", "B", "C"])
|
82
|
-
end
|
83
|
-
|
84
|
-
it "returns false" do
|
85
|
-
sorted_set.delete?("D").should be(false)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
[:difference, :subtract, :-].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
[
|
7
|
-
[[], [], []],
|
8
|
-
[["A"], [], ["A"]],
|
9
|
-
[["A"], ["A"], []],
|
10
|
-
[%w[A B C], ["B"], %w[A C]],
|
11
|
-
[%w[A B C], %w[A C], ["B"]],
|
12
|
-
[%w[A B C D E F], %w[B E F G M X], %w[A C D]]
|
13
|
-
].each do |a, b, expected|
|
14
|
-
context "for #{a.inspect} and #{b.inspect}" do
|
15
|
-
it "returns #{expected.inspect}" do
|
16
|
-
SS[*a].send(method, SS[*b]).should eql(SS[*expected])
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#disjoint?" do
|
5
|
-
[
|
6
|
-
[[], [], true],
|
7
|
-
[["A"], [], true],
|
8
|
-
[[], ["A"], true],
|
9
|
-
[["A"], ["A"], false],
|
10
|
-
[%w[A B C], ["B"], false],
|
11
|
-
[["B"], %w[A B C], false],
|
12
|
-
[%w[A B C], %w[D E], true],
|
13
|
-
[%w[F G H I], %w[A B C], true],
|
14
|
-
[%w[A B C], %w[A B C], false],
|
15
|
-
[%w[A B C], %w[A B C D], false],
|
16
|
-
[%w[D E F G], %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].disjoint?(SS[*b]).should be(expected)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#drop" do
|
5
|
-
[
|
6
|
-
[[], 0, []],
|
7
|
-
[[], 10, []],
|
8
|
-
[["A"], 10, []],
|
9
|
-
[%w[A B C], 0, %w[A B C]],
|
10
|
-
[%w[A B C], 1, %w[B C]],
|
11
|
-
[%w[A B C], 2, ["C"]],
|
12
|
-
[%w[A B C], 3, []]
|
13
|
-
].each do |values, number, expected|
|
14
|
-
context "#{number} from #{values.inspect}" do
|
15
|
-
let(:sorted_set) { SS[*values] }
|
16
|
-
|
17
|
-
it "preserves the original" do
|
18
|
-
sorted_set.drop(number)
|
19
|
-
sorted_set.should eql(SS[*values])
|
20
|
-
end
|
21
|
-
|
22
|
-
it "returns #{expected.inspect}" do
|
23
|
-
sorted_set.drop(number).should eql(SS[*expected])
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "when argument is zero" do
|
29
|
-
let(:sorted_set) { SS[6, 7, 8, 9] }
|
30
|
-
it "returns self" do
|
31
|
-
sorted_set.drop(0).should be(sorted_set)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "when the set has a custom order" do
|
36
|
-
let(:sorted_set) { SS.new([1, 2, 3]) { |x| -x }}
|
37
|
-
it "maintains the custom order" do
|
38
|
-
sorted_set.drop(1).to_a.should == [2, 1]
|
39
|
-
sorted_set.drop(2).to_a.should == [1]
|
40
|
-
end
|
41
|
-
|
42
|
-
it "keeps the comparator even when set is cleared" do
|
43
|
-
s = sorted_set.drop(3)
|
44
|
-
s.add(4).add(5).add(6).to_a.should == [6, 5, 4]
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "when called on a subclass" do
|
49
|
-
it "should return an instance of the subclass" do
|
50
|
-
subclass = Class.new(Immutable::SortedSet)
|
51
|
-
subclass.new([1,2,3]).drop(1).class.should be(subclass)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::SortedSet do
|
4
|
-
describe "#drop_while" do
|
5
|
-
[
|
6
|
-
[[], []],
|
7
|
-
[["A"], []],
|
8
|
-
[%w[A B C], ["C"]],
|
9
|
-
[%w[A B C D E F G], %w[C D E F G]]
|
10
|
-
].each do |values, expected|
|
11
|
-
context "on #{values.inspect}" do
|
12
|
-
let(:sorted_set) { SS[*values] }
|
13
|
-
|
14
|
-
context "with a block" do
|
15
|
-
it "preserves the original" do
|
16
|
-
sorted_set.drop_while { |item| item < "C" }
|
17
|
-
sorted_set.should eql(SS[*values])
|
18
|
-
end
|
19
|
-
|
20
|
-
it "returns #{expected.inspect}" do
|
21
|
-
sorted_set.drop_while { |item| item < "C" }.should eql(SS[*expected])
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context "without a block" do
|
26
|
-
it "returns an Enumerator" do
|
27
|
-
sorted_set.drop_while.class.should be(Enumerator)
|
28
|
-
sorted_set.drop_while.each { |item| item < "C" }.should eql(SS[*expected])
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|