immutable-ruby 0.0.4 → 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 +4 -4
- 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 +24 -24
- data/lib/immutable/list.rb +36 -36
- data/lib/immutable/nested.rb +8 -8
- data/lib/immutable/set.rb +30 -30
- data/lib/immutable/sorted_set.rb +30 -26
- data/lib/immutable/trie.rb +2 -2
- data/lib/immutable/vector.rb +40 -35
- data/lib/immutable/version.rb +1 -1
- data/lib/immutable.rb +9 -9
- metadata +36 -699
- 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,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) { BigList }
|
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) { BigList }
|
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
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#compact" do
|
5
|
-
it "is lazy" do
|
6
|
-
-> { Immutable.stream { fail }.compact }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
[
|
10
|
-
[[], []],
|
11
|
-
[["A"], ["A"]],
|
12
|
-
[%w[A B C], %w[A B C]],
|
13
|
-
[[nil], []],
|
14
|
-
[[nil, "B"], ["B"]],
|
15
|
-
[["A", nil], ["A"]],
|
16
|
-
[[nil, nil], []],
|
17
|
-
[["A", nil, "C"], %w[A C]],
|
18
|
-
[[nil, "B", nil], ["B"]],
|
19
|
-
].each do |values, expected|
|
20
|
-
context "on #{values.inspect}" do
|
21
|
-
let(:list) { L[*values] }
|
22
|
-
|
23
|
-
it "preserves the original" do
|
24
|
-
list.compact
|
25
|
-
list.should eql(L[*values])
|
26
|
-
end
|
27
|
-
|
28
|
-
it "returns #{expected.inspect}" do
|
29
|
-
list.compact.should eql(L[*expected])
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#<=>" do
|
5
|
-
[
|
6
|
-
[[], [1]],
|
7
|
-
[[1], [2]],
|
8
|
-
[[1], [1, 2]],
|
9
|
-
[[2, 3, 4], [3, 4, 5]]
|
10
|
-
].each do |items1, items2|
|
11
|
-
context "with #{items1} and #{items2}" do
|
12
|
-
it "returns -1" do
|
13
|
-
(L[*items1] <=> L[*items2]).should be(-1)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context "with #{items2} and #{items1}" do
|
18
|
-
it "returns 1" do
|
19
|
-
(L[*items2] <=> L[*items1]).should be(1)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "with #{items1} and #{items1}" do
|
24
|
-
it "returns 0" do
|
25
|
-
(L[*items1] <=> L[*items1]).should be(0)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#cons" 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.cons(new_value)
|
16
|
-
list.should eql(L[*values])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "returns #{expected.inspect}" do
|
20
|
-
list.cons(new_value).should eql(L[*expected])
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,110 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable do
|
4
|
-
describe ".list" do
|
5
|
-
context "with no arguments" do
|
6
|
-
it "always returns the same instance" do
|
7
|
-
L.empty.should equal(L.empty)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "returns an empty list" do
|
11
|
-
L.empty.should be_empty
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context "with a number of items" do
|
16
|
-
it "always returns a different instance" do
|
17
|
-
L["A", "B", "C"].should_not equal(L["A", "B", "C"])
|
18
|
-
end
|
19
|
-
|
20
|
-
it "is the same as repeatedly using #cons" do
|
21
|
-
L["A", "B", "C"].should eql(L.empty.cons("C").cons("B").cons("A"))
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe ".stream" do
|
27
|
-
context "with no block" do
|
28
|
-
it "returns an empty list" do
|
29
|
-
Immutable.stream.should eql(L.empty)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "with a block" do
|
34
|
-
let(:list) { count = 0; Immutable.stream { count += 1 }}
|
35
|
-
|
36
|
-
it "repeatedly calls the block" do
|
37
|
-
list.take(5).should eql(L[1, 2, 3, 4, 5])
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe ".interval" do
|
43
|
-
context "for numbers" do
|
44
|
-
it "is equivalent to a list with explicit values" do
|
45
|
-
Immutable.interval(98, 102).should eql(L[98, 99, 100, 101, 102])
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context "for strings" do
|
50
|
-
it "is equivalent to a list with explicit values" do
|
51
|
-
Immutable.interval("A", "AA").should eql(L["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA"])
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe ".repeat" do
|
57
|
-
it "returns an infinite list with specified value for each element" do
|
58
|
-
Immutable.repeat("A").take(5).should eql(L["A", "A", "A", "A", "A"])
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe ".replicate" do
|
63
|
-
it "returns a list with the specified value repeated the specified number of times" do
|
64
|
-
Immutable.replicate(5, "A").should eql(L["A", "A", "A", "A", "A"])
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe ".iterate" do
|
69
|
-
it "returns an infinite list where the first item is calculated by applying the block on the initial argument, the second item by applying the function on the previous result and so on" do
|
70
|
-
Immutable.iterate(1) { |item| item * 2 }.take(10).should eql(L[1, 2, 4, 8, 16, 32, 64, 128, 256, 512])
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe ".enumerate" do
|
75
|
-
let(:enum) do
|
76
|
-
Enumerator.new do |yielder|
|
77
|
-
yielder << 1
|
78
|
-
yielder << 2
|
79
|
-
yielder << 3
|
80
|
-
raise "list fully realized"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
let(:list) { Immutable.enumerate(enum) }
|
85
|
-
|
86
|
-
it "returns a list based on the values yielded from the enumerator" do
|
87
|
-
expect(list.take(2)).to eq L[1, 2]
|
88
|
-
end
|
89
|
-
|
90
|
-
it "realizes values as they are needed" do
|
91
|
-
# this example shows that Lists are not as lazy as they could be
|
92
|
-
# if Lists were fully lazy, you would have to take(4) to hit the exception
|
93
|
-
expect { list.take(3).to_a }.to raise_exception(RuntimeError)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "[]" do
|
98
|
-
it "takes a variable number of items and returns a list" do
|
99
|
-
list = Immutable::List[1,2,3]
|
100
|
-
list.should be_kind_of(Immutable::List)
|
101
|
-
list.size.should be(3)
|
102
|
-
list.to_a.should == [1,2,3]
|
103
|
-
end
|
104
|
-
|
105
|
-
it "returns an empty list when called without arguments" do
|
106
|
-
L[].should be_kind_of(Immutable::List)
|
107
|
-
L[].should be_empty
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
[:dup, :clone].each do |method|
|
5
|
-
[
|
6
|
-
[],
|
7
|
-
["A"],
|
8
|
-
%w[A B C],
|
9
|
-
].each do |values|
|
10
|
-
context "on #{values.inspect}" do
|
11
|
-
let(:list) { L[*values] }
|
12
|
-
|
13
|
-
it "returns self" do
|
14
|
-
list.send(method).should equal(list)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#count" do
|
5
|
-
context "on a really big list" do
|
6
|
-
it "doesn't run out of stack" do
|
7
|
-
-> { BigList.count }.should_not raise_error
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
[
|
12
|
-
[[], 0],
|
13
|
-
[[1], 1],
|
14
|
-
[[1, 2], 1],
|
15
|
-
[[1, 2, 3], 2],
|
16
|
-
[[1, 2, 3, 4], 2],
|
17
|
-
[[1, 2, 3, 4, 5], 3],
|
18
|
-
].each do |values, expected|
|
19
|
-
context "on #{values.inspect}" do
|
20
|
-
let(:list) { L[*values] }
|
21
|
-
|
22
|
-
context "with a block" do
|
23
|
-
it "returns #{expected.inspect}" do
|
24
|
-
list.count(&:odd?).should == expected
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "without a block" do
|
29
|
-
it "returns length" do
|
30
|
-
list.count.should == list.length
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable do
|
4
|
-
describe "#cycle" do
|
5
|
-
it "is lazy" do
|
6
|
-
-> { Immutable.stream { fail }.cycle }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
context "with an empty list" do
|
10
|
-
it "returns an empty list" do
|
11
|
-
L.empty.cycle.should be_empty
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context "with a non-empty list" do
|
16
|
-
let(:list) { L["A", "B", "C"] }
|
17
|
-
|
18
|
-
it "preserves the original" do
|
19
|
-
list.cycle
|
20
|
-
list.should == L["A", "B", "C"]
|
21
|
-
end
|
22
|
-
|
23
|
-
it "infinitely cycles through all values" do
|
24
|
-
list.cycle.take(7).should == L["A", "B", "C", "A", "B", "C", "A"]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#delete_at" do
|
5
|
-
let(:list) { L[1,2,3,4,5] }
|
6
|
-
|
7
|
-
it "removes the element at the specified index" do
|
8
|
-
list.delete_at(0).should eql(L[2,3,4,5])
|
9
|
-
list.delete_at(2).should eql(L[1,2,4,5])
|
10
|
-
list.delete_at(-1).should eql(L[1,2,3,4])
|
11
|
-
end
|
12
|
-
|
13
|
-
it "makes no modification if the index is out of range" do
|
14
|
-
list.delete_at(5).should eql(list)
|
15
|
-
list.delete_at(-6).should eql(list)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#delete" do
|
5
|
-
it "removes elements that are #== to the argument" do
|
6
|
-
L[1,2,3].delete(1).should eql(L[2,3])
|
7
|
-
L[1,2,3].delete(2).should eql(L[1,3])
|
8
|
-
L[1,2,3].delete(3).should eql(L[1,2])
|
9
|
-
L[1,2,3].delete(0).should eql(L[1,2,3])
|
10
|
-
L['a','b','a','c','a','a','d'].delete('a').should eql(L['b','c','d'])
|
11
|
-
|
12
|
-
L[EqualNotEql.new, EqualNotEql.new].delete(:something).should eql(L[])
|
13
|
-
L[EqlNotEqual.new, EqlNotEqual.new].delete(:something).should_not be_empty
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#drop" do
|
5
|
-
it "is lazy" do
|
6
|
-
-> { Immutable.stream { fail }.drop(1) }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
[
|
10
|
-
[[], 10, []],
|
11
|
-
[["A"], 10, []],
|
12
|
-
[["A"], -1, ["A"]],
|
13
|
-
[%w[A B C], 0, %w[A B C]],
|
14
|
-
[%w[A B C], 2, ["C"]],
|
15
|
-
].each do |values, number, expected|
|
16
|
-
context "with #{number} from #{values.inspect}" do
|
17
|
-
let(:list) { L[*values] }
|
18
|
-
|
19
|
-
it "preserves the original" do
|
20
|
-
list.drop(number)
|
21
|
-
list.should eql(L[*values])
|
22
|
-
end
|
23
|
-
|
24
|
-
it "returns #{expected.inspect}" do
|
25
|
-
list.drop(number).should == L[*expected]
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|