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,75 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Hash do
|
4
|
-
describe "#store" do
|
5
|
-
let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
|
6
|
-
|
7
|
-
context "with a unique key" do
|
8
|
-
let(:result) { hash.store("D", "dee") }
|
9
|
-
|
10
|
-
it "preserves the original" do
|
11
|
-
result
|
12
|
-
hash.should eql(H["A" => "aye", "B" => "bee", "C" => "see"])
|
13
|
-
end
|
14
|
-
|
15
|
-
it "returns a copy with the superset of key/value pairs" do
|
16
|
-
result.should eql(H["A" => "aye", "B" => "bee", "C" => "see", "D" => "dee"])
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "with a duplicate key" do
|
21
|
-
let(:result) { hash.store("C", "sea") }
|
22
|
-
|
23
|
-
it "preserves the original" do
|
24
|
-
result
|
25
|
-
hash.should eql(H["A" => "aye", "B" => "bee", "C" => "see"])
|
26
|
-
end
|
27
|
-
|
28
|
-
it "returns a copy with the superset of key/value pairs" do
|
29
|
-
result.should eql(H["A" => "aye", "B" => "bee", "C" => "sea"])
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "with duplicate key and identical value" do
|
34
|
-
let(:hash) { H["X" => 1, "Y" => 2] }
|
35
|
-
let(:result) { hash.store("X", 1) }
|
36
|
-
|
37
|
-
it "returns the original hash unmodified" do
|
38
|
-
result.should be(hash)
|
39
|
-
end
|
40
|
-
|
41
|
-
context "with big hash (force nested tries)" do
|
42
|
-
let(:keys) { (0..99).map(&:to_s) }
|
43
|
-
let(:values) { (100..199).to_a }
|
44
|
-
let(:hash) { H[keys.zip(values)] }
|
45
|
-
|
46
|
-
it "returns the original hash unmodified for all changes" do
|
47
|
-
keys.each_with_index do |key, index|
|
48
|
-
result = hash.store(key, values[index])
|
49
|
-
result.should be(hash)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
context "with unequal keys which hash to the same value" do
|
56
|
-
let(:hash) { H[DeterministicHash.new('a', 1) => 'aye'] }
|
57
|
-
|
58
|
-
it "stores and can retrieve both" do
|
59
|
-
result = hash.store(DeterministicHash.new('b', 1), 'bee')
|
60
|
-
result.get(DeterministicHash.new('a', 1)).should eql('aye')
|
61
|
-
result.get(DeterministicHash.new('b', 1)).should eql('bee')
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
context "when a String is inserted as key and then mutated" do
|
66
|
-
it "is not affected" do
|
67
|
-
string = "a string!"
|
68
|
-
hash = H.empty.store(string, 'a value!')
|
69
|
-
string.upcase!
|
70
|
-
hash['a string!'].should == 'a value!'
|
71
|
-
hash['A STRING!'].should be_nil
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Hash do
|
4
|
-
let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
|
5
|
-
|
6
|
-
describe "#take" do
|
7
|
-
it "returns the first N key/val pairs from hash" do
|
8
|
-
hash.take(0).should == []
|
9
|
-
[[['A', 'aye']], [['B', 'bee']], [['C', 'see']]].include?(hash.take(1)).should == true
|
10
|
-
[['A', 'aye'], ['B', 'bee'], ['C', 'see']].combination(2).include?(hash.take(2).sort).should == true
|
11
|
-
hash.take(3).sort.should == [['A', 'aye'], ['B', 'bee'], ['C', 'see']]
|
12
|
-
hash.take(4).sort.should == [['A', 'aye'], ['B', 'bee'], ['C', 'see']]
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#take_while" do
|
17
|
-
it "passes elements to the block until the block returns nil/false" do
|
18
|
-
passed = nil
|
19
|
-
hash.take_while { |k,v| passed = k; false }
|
20
|
-
['A', 'B', 'C'].include?(passed).should == true
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns an array of all elements before the one which returned nil/false" do
|
24
|
-
count = 0
|
25
|
-
result = hash.take_while { count += 1; count < 3 }
|
26
|
-
[['A', 'aye'], ['B', 'bee'], ['C', 'see']].combination(2).include?(result.sort).should == true
|
27
|
-
end
|
28
|
-
|
29
|
-
it "passes all elements if the block never returns nil/false" do
|
30
|
-
passed = []
|
31
|
-
hash.take_while { |k,v| passed << [k, v]; true }.should == hash.to_a
|
32
|
-
passed.sort.should == [['A', 'aye'], ['B', 'bee'], ['C', 'see']]
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Hash do
|
4
|
-
describe "#to_a" do
|
5
|
-
it "returns an Array of [key, value] pairs in same order as #each" do
|
6
|
-
hash = H[:a => 1, 1 => :a, 3 => :b, :b => 5]
|
7
|
-
pairs = []
|
8
|
-
hash.each_pair { |k,v| pairs << [k,v] }
|
9
|
-
hash.to_a.should be_kind_of(Array)
|
10
|
-
hash.to_a.should == pairs
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Hash do
|
4
|
-
[:to_hash, :to_h].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
it "converts an empty Immutable::Hash to an empty Ruby Hash" do
|
7
|
-
H.empty.send(method).should eql({})
|
8
|
-
end
|
9
|
-
|
10
|
-
it "converts a non-empty Immutable::Hash to a Hash with the same keys and values" do
|
11
|
-
H[a: 1, b: 2].send(method).should eql({a: 1, b: 2})
|
12
|
-
end
|
13
|
-
|
14
|
-
it "doesn't modify the receiver" do
|
15
|
-
hash = H[a: 1, b: 2]
|
16
|
-
hash.send(method)
|
17
|
-
hash.should eql(H[a: 1, b: 2])
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,79 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Hash do
|
4
|
-
describe "#update_in" do
|
5
|
-
let(:hash) {
|
6
|
-
Immutable::Hash[
|
7
|
-
"A" => "aye",
|
8
|
-
"B" => Immutable::Hash["C" => "see", "D" => Immutable::Hash["E" => "eee"]],
|
9
|
-
"F" => Immutable::Vector["G", Immutable::Hash["H" => "eitch"], "I"]
|
10
|
-
]
|
11
|
-
}
|
12
|
-
|
13
|
-
context "with one level on existing key" do
|
14
|
-
it "passes the value to the block" do
|
15
|
-
hash.update_in("A") { |value| value.should == "aye" }
|
16
|
-
end
|
17
|
-
|
18
|
-
it "replaces the value with the result of the block" do
|
19
|
-
result = hash.update_in("A") { |value| "FLIBBLE" }
|
20
|
-
result.get("A").should == "FLIBBLE"
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should preserve the original" do
|
24
|
-
result = hash.update_in("A") { |value| "FLIBBLE" }
|
25
|
-
hash.get("A").should == "aye"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context "with multi-level on existing keys" do
|
30
|
-
it "passes the value to the block" do
|
31
|
-
hash.update_in("B", "D", "E") { |value| value.should == "eee" }
|
32
|
-
end
|
33
|
-
|
34
|
-
it "replaces the value with the result of the block" do
|
35
|
-
result = hash.update_in("B", "D", "E") { |value| "FLIBBLE" }
|
36
|
-
result["B"]["D"]["E"].should == "FLIBBLE"
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should preserve the original" do
|
40
|
-
result = hash.update_in("B", "D", "E") { |value| "FLIBBLE" }
|
41
|
-
hash["B"]["D"]["E"].should == "eee"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
context "with multi-level creating sub-hashes when keys don't exist" do
|
46
|
-
it "passes nil to the block" do
|
47
|
-
hash.update_in("B", "X", "Y") { |value| value.should be_nil }
|
48
|
-
end
|
49
|
-
|
50
|
-
it "creates subhashes on the way to set the value" do
|
51
|
-
result = hash.update_in("B", "X", "Y") { |value| "NEWVALUE" }
|
52
|
-
result["B"]["X"]["Y"].should == "NEWVALUE"
|
53
|
-
result["B"]["D"]["E"].should == "eee"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context "with multi-level including vector with existing keys" do
|
58
|
-
it "passes the value to the block" do
|
59
|
-
hash.update_in("F", 1, "H") { |value| value.should == "eitch" }
|
60
|
-
end
|
61
|
-
|
62
|
-
it "replaces the value with the result of the block" do
|
63
|
-
result = hash.update_in("F", 1, "H") { |value| "FLIBBLE" }
|
64
|
-
result["F"][1]["H"].should == "FLIBBLE"
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should preserve the original" do
|
68
|
-
result = hash.update_in("F", 1, "H") { |value| "FLIBBLE" }
|
69
|
-
hash["F"][1]["H"].should == "eitch"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "with empty key_path" do
|
74
|
-
it "raises ArguemntError" do
|
75
|
-
expect { hash.update_in() { |v| 42 } }.to raise_error(ArgumentError)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Hash do
|
4
|
-
describe "#values_at" do
|
5
|
-
it "returns a vector of values for the given keys" do
|
6
|
-
h = H[:a => 9, :b => 'a', :c => -10, :d => nil]
|
7
|
-
h.values_at.should be_kind_of(Immutable::Vector)
|
8
|
-
h.values_at.should eql(V.empty)
|
9
|
-
h.values_at(:a, :d, :b).should be_kind_of(Immutable::Vector)
|
10
|
-
h.values_at(:a, :d, :b).should eql(V[9, nil, 'a'])
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Hash do
|
4
|
-
describe "#values" do
|
5
|
-
let(:hash) { H["A" => "aye", "B" => "bee", "C" => "see"] }
|
6
|
-
let(:result) { hash.values }
|
7
|
-
|
8
|
-
it "returns the keys as a Vector" do
|
9
|
-
result.should be_a Immutable::Vector
|
10
|
-
result.to_a.sort.should == %w(aye bee see)
|
11
|
-
end
|
12
|
-
|
13
|
-
context "with duplicates" do
|
14
|
-
let(:hash) { H[:A => 15, :B => 19, :C => 15] }
|
15
|
-
let(:result) { hash.values }
|
16
|
-
|
17
|
-
it "returns the keys as a Vector" do
|
18
|
-
result.class.should be(Immutable::Vector)
|
19
|
-
result.to_a.sort.should == [15, 15, 19]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#add" do
|
5
|
-
[
|
6
|
-
[[], "A", ["A"]],
|
7
|
-
[["A"], "B", %w[B A]],
|
8
|
-
[["A"], "A", %w[A A]],
|
9
|
-
[%w[A B C], "D", %w[D A B C]],
|
10
|
-
].each do |values, new_value, expected|
|
11
|
-
context "on #{values.inspect} with #{new_value.inspect}" do
|
12
|
-
let(:list) { L[*values] }
|
13
|
-
|
14
|
-
it "preserves the original" do
|
15
|
-
list.add(new_value)
|
16
|
-
list.should eql(L[*values])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "returns #{expected.inspect}" do
|
20
|
-
list.add(new_value).should eql(L[*expected])
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#all?" do
|
5
|
-
context "on a really big list" do
|
6
|
-
let(:list) { Immutable.interval(0, STACK_OVERFLOW_DEPTH) }
|
7
|
-
|
8
|
-
it "doesn't run out of stack" do
|
9
|
-
-> { list.all? }.should_not raise_error
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
context "when empty" do
|
14
|
-
it "with a block returns true" do
|
15
|
-
L.empty.all? {}.should == true
|
16
|
-
end
|
17
|
-
|
18
|
-
it "with no block returns true" do
|
19
|
-
L.empty.all?.should == true
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "when not empty" do
|
24
|
-
context "with a block" do
|
25
|
-
let(:list) { L["A", "B", "C"] }
|
26
|
-
|
27
|
-
context "if the block always returns true" do
|
28
|
-
it "returns true" do
|
29
|
-
list.all? { |item| true }.should == true
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "if the block ever returns false" do
|
34
|
-
it "returns false" do
|
35
|
-
list.all? { |item| item == "D" }.should == false
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context "with no block" do
|
41
|
-
context "if all values are truthy" do
|
42
|
-
it "returns true" do
|
43
|
-
L[true, "A"].all?.should == true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
[nil, false].each do |value|
|
48
|
-
context "if any value is #{value.inspect}" do
|
49
|
-
it "returns false" do
|
50
|
-
L[value, true, "A"].all?.should == false
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#any?" do
|
5
|
-
context "on a really big list" do
|
6
|
-
let(:list) { Immutable.interval(0, STACK_OVERFLOW_DEPTH) }
|
7
|
-
|
8
|
-
it "doesn't run out of stack" do
|
9
|
-
-> { list.any? { false } }.should_not raise_error
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
context "when empty" do
|
14
|
-
it "with a block returns false" do
|
15
|
-
L.empty.any? {}.should == false
|
16
|
-
end
|
17
|
-
|
18
|
-
it "with no block returns false" do
|
19
|
-
L.empty.any?.should == false
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "when not empty" do
|
24
|
-
context "with a block" do
|
25
|
-
let(:list) { L["A", "B", "C", nil] }
|
26
|
-
|
27
|
-
["A", "B", "C", nil].each do |value|
|
28
|
-
it "returns true if the block ever returns true (#{value.inspect})" do
|
29
|
-
list.any? { |item| item == value }.should == true
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
it "returns false if the block always returns false" do
|
34
|
-
list.any? { |item| item == "D" }.should == false
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "with no block" do
|
39
|
-
it "returns true if any value is truthy" do
|
40
|
-
L[nil, false, "A", true].any?.should == true
|
41
|
-
end
|
42
|
-
|
43
|
-
it "returns false if all values are falsey" do
|
44
|
-
L[nil, false].any?.should == false
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
[:append, :concat, :+].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
it "is lazy" do
|
7
|
-
-> { Immutable.stream { fail }.append(Immutable.stream { fail }) }.should_not raise_error
|
8
|
-
end
|
9
|
-
|
10
|
-
[
|
11
|
-
[[], [], []],
|
12
|
-
[["A"], [], ["A"]],
|
13
|
-
[[], ["A"], ["A"]],
|
14
|
-
[%w[A B], %w[C D], %w[A B C D]],
|
15
|
-
].each do |left_values, right_values, expected|
|
16
|
-
context "on #{left_values.inspect} and #{right_values.inspect}" do
|
17
|
-
let(:left) { L[*left_values] }
|
18
|
-
let(:right) { L[*right_values] }
|
19
|
-
let(:result) { left.append(right) }
|
20
|
-
|
21
|
-
it "preserves the left" do
|
22
|
-
result
|
23
|
-
left.should eql(L[*left_values])
|
24
|
-
end
|
25
|
-
|
26
|
-
it "preserves the right" do
|
27
|
-
result
|
28
|
-
right.should eql(L[*right_values])
|
29
|
-
end
|
30
|
-
|
31
|
-
it "returns #{expected.inspect}" do
|
32
|
-
result.should eql(L[*expected])
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#at" do
|
5
|
-
context "on a really big list" do
|
6
|
-
let(:list) { Immutable.interval(0, STACK_OVERFLOW_DEPTH) }
|
7
|
-
|
8
|
-
it "doesn't run out of stack" do
|
9
|
-
-> { list.at(STACK_OVERFLOW_DEPTH) }.should_not raise_error
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
[
|
14
|
-
[[], 10, nil],
|
15
|
-
[["A"], 10, nil],
|
16
|
-
[%w[A B C], 0, "A"],
|
17
|
-
[%w[A B C], 2, "C"],
|
18
|
-
[%w[A B C], -1, "C"],
|
19
|
-
[%w[A B C], -2, "B"],
|
20
|
-
[%w[A B C], -4, nil]
|
21
|
-
].each do |values, number, expected|
|
22
|
-
describe "#{values.inspect} with #{number}" do
|
23
|
-
it "returns #{expected.inspect}" do
|
24
|
-
L[*values].at(number).should == expected
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#break" do
|
5
|
-
it "is lazy" do
|
6
|
-
-> { Immutable.stream { fail }.break { |item| false } }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
[
|
10
|
-
[[], [], []],
|
11
|
-
[[1], [1], []],
|
12
|
-
[[1, 2], [1, 2], []],
|
13
|
-
[[1, 2, 3], [1, 2], [3]],
|
14
|
-
[[1, 2, 3, 4], [1, 2], [3, 4]],
|
15
|
-
[[2, 3, 4], [2], [3, 4]],
|
16
|
-
[[3, 4], [], [3, 4]],
|
17
|
-
[[4], [], [4]],
|
18
|
-
].each do |values, expected_prefix, expected_remainder|
|
19
|
-
context "on #{values.inspect}" do
|
20
|
-
let(:list) { L[*values] }
|
21
|
-
|
22
|
-
context "with a block" do
|
23
|
-
let(:result) { list.break { |item| item > 2 }}
|
24
|
-
let(:prefix) { result.first }
|
25
|
-
let(:remainder) { result.last }
|
26
|
-
|
27
|
-
it "preserves the original" do
|
28
|
-
result
|
29
|
-
list.should eql(L[*values])
|
30
|
-
end
|
31
|
-
|
32
|
-
it "returns a frozen array with two items" do
|
33
|
-
result.class.should be(Array)
|
34
|
-
result.should be_frozen
|
35
|
-
result.size.should be(2)
|
36
|
-
end
|
37
|
-
|
38
|
-
it "correctly identifies the prefix" do
|
39
|
-
prefix.should eql(L[*expected_prefix])
|
40
|
-
end
|
41
|
-
|
42
|
-
it "correctly identifies the remainder" do
|
43
|
-
remainder.should eql(L[*expected_remainder])
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "without a block" do
|
48
|
-
let(:result) { list.break }
|
49
|
-
let(:prefix) { result.first }
|
50
|
-
let(:remainder) { result.last }
|
51
|
-
|
52
|
-
it "returns a frozen array with two items" do
|
53
|
-
result.class.should be(Array)
|
54
|
-
result.should be_frozen
|
55
|
-
result.size.should be(2)
|
56
|
-
end
|
57
|
-
|
58
|
-
it "returns self as the prefix" do
|
59
|
-
prefix.should equal(list)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "leaves the remainder empty" do
|
63
|
-
remainder.should be_empty
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
[
|
5
|
-
[[], :car, nil],
|
6
|
-
[["A"], :car, "A"],
|
7
|
-
[%w[A B C], :car, "A"],
|
8
|
-
[%w[A B C], :cadr, "B"],
|
9
|
-
[%w[A B C], :caddr, "C"],
|
10
|
-
[%w[A B C], :cadddr, nil],
|
11
|
-
[%w[A B C], :caddddr, nil],
|
12
|
-
[[], :cdr, L.empty],
|
13
|
-
[["A"], :cdr, L.empty],
|
14
|
-
[%w[A B C], :cdr, L["B", "C"]],
|
15
|
-
[%w[A B C], :cddr, L["C"]],
|
16
|
-
[%w[A B C], :cdddr, L.empty],
|
17
|
-
[%w[A B C], :cddddr, L.empty],
|
18
|
-
].each do |values, method, expected|
|
19
|
-
describe "##{method}" do
|
20
|
-
it "is responded to" do
|
21
|
-
L.empty.respond_to?(method).should == true
|
22
|
-
end
|
23
|
-
|
24
|
-
context "on #{values.inspect}" do
|
25
|
-
let(:list) { L[*values] }
|
26
|
-
|
27
|
-
it "preserves the original" do
|
28
|
-
list.send(method)
|
29
|
-
list.should eql(L[*values])
|
30
|
-
end
|
31
|
-
|
32
|
-
it "returns #{expected.inspect}" do
|
33
|
-
list.send(method).should == expected
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#chunk" do
|
5
|
-
it "is lazy" do
|
6
|
-
-> { Immutable.stream { fail }.chunk(2) }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
[
|
10
|
-
[[], []],
|
11
|
-
[["A"], [L["A"]]],
|
12
|
-
[%w[A B C], [L["A", "B"], L["C"]]],
|
13
|
-
].each do |values, expected|
|
14
|
-
context "on #{values.inspect}" do
|
15
|
-
let(:list) { L[*values] }
|
16
|
-
|
17
|
-
it "preserves the original" do
|
18
|
-
list.chunk(2)
|
19
|
-
list.should eql(L[*values])
|
20
|
-
end
|
21
|
-
|
22
|
-
it "returns #{expected.inspect}" do
|
23
|
-
list.chunk(2).should eql(L[*expected])
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#clear" do
|
5
|
-
[
|
6
|
-
[],
|
7
|
-
["A"],
|
8
|
-
%w[A B C],
|
9
|
-
].each do |values|
|
10
|
-
describe "on #{values}" do
|
11
|
-
let(:list) { L[*values] }
|
12
|
-
|
13
|
-
it "preserves the original" do
|
14
|
-
list.clear
|
15
|
-
list.should eql(L[*values])
|
16
|
-
end
|
17
|
-
|
18
|
-
it "returns an empty list" do
|
19
|
-
list.clear.should equal(L.empty)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#combination" do
|
5
|
-
it "is lazy" do
|
6
|
-
-> { Immutable.stream { fail }.combination(2) }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
[
|
10
|
-
[%w[A B C D], 1, [L["A"], L["B"], L["C"], L["D"]]],
|
11
|
-
[%w[A B C D], 2, [L["A","B"], L["A","C"], L["A","D"], L["B","C"], L["B","D"], L["C","D"]]],
|
12
|
-
[%w[A B C D], 3, [L["A","B","C"], L["A","B","D"], L["A","C","D"], L["B","C","D"]]],
|
13
|
-
[%w[A B C D], 4, [L["A", "B", "C", "D"]]],
|
14
|
-
[%w[A B C D], 0, [EmptyList]],
|
15
|
-
[%w[A B C D], 5, []],
|
16
|
-
[[], 0, [EmptyList]],
|
17
|
-
[[], 1, []],
|
18
|
-
].each do |values, number, expected|
|
19
|
-
context "on #{values.inspect} in groups of #{number}" do
|
20
|
-
let(:list) { L[*values] }
|
21
|
-
|
22
|
-
it "preserves the original" do
|
23
|
-
list.combination(number)
|
24
|
-
list.should eql(L[*values])
|
25
|
-
end
|
26
|
-
|
27
|
-
it "returns #{expected.inspect}" do
|
28
|
-
list.combination(number).should eql(L[*expected])
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|