immutable-ruby 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,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
|
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
|
-
-> { Immutable.interval(0, STACK_OVERFLOW_DEPTH).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
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#drop_while" do
|
5
|
-
it "is lazy" do
|
6
|
-
-> { Immutable.stream { fail }.drop_while { false } }.should_not raise_error
|
7
|
-
end
|
8
|
-
|
9
|
-
[
|
10
|
-
[[], []],
|
11
|
-
[["A"], []],
|
12
|
-
[%w[A B C], ["C"]],
|
13
|
-
].each do |values, expected|
|
14
|
-
context "on #{values.inspect}" do
|
15
|
-
let(:list) { L[*values] }
|
16
|
-
|
17
|
-
context "with a block" do
|
18
|
-
it "preserves the original" do
|
19
|
-
list.drop_while { |item| item < "C" }
|
20
|
-
list.should eql(L[*values])
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns #{expected.inspect}" do
|
24
|
-
list.drop_while { |item| item < "C" }.should eql(L[*expected])
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "without a block" do
|
29
|
-
it "returns an Enumerator" do
|
30
|
-
list.drop_while.class.should be(Enumerator)
|
31
|
-
list.drop_while.each { false }.should eql(list)
|
32
|
-
list.drop_while.each { true }.should be_empty
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
[:each_chunk, :each_slice].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
context "on a really big list" do
|
7
|
-
it "doesn't run out of stack" do
|
8
|
-
-> { Immutable.interval(0, STACK_OVERFLOW_DEPTH).send(method, 1) { |item| } }.should_not raise_error
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
[
|
13
|
-
[[], []],
|
14
|
-
[["A"], [L["A"]]],
|
15
|
-
[%w[A B C], [L["A", "B"], L["C"]]],
|
16
|
-
].each do |values, expected|
|
17
|
-
context "on #{values.inspect}" do
|
18
|
-
let(:list) { L[*values] }
|
19
|
-
|
20
|
-
context "with a block" do
|
21
|
-
it "preserves the original" do
|
22
|
-
list.should eql(L[*values])
|
23
|
-
end
|
24
|
-
|
25
|
-
it "iterates over the items in order" do
|
26
|
-
yielded = []
|
27
|
-
list.send(method, 2) { |item| yielded << item }
|
28
|
-
yielded.should eql(expected)
|
29
|
-
end
|
30
|
-
|
31
|
-
it "returns self" do
|
32
|
-
list.send(method, 2) { |item| item }.should be(list)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context "without a block" do
|
37
|
-
it "preserves the original" do
|
38
|
-
list.send(method, 2)
|
39
|
-
list.should eql(L[*values])
|
40
|
-
end
|
41
|
-
|
42
|
-
it "returns an Enumerator" do
|
43
|
-
list.send(method, 2).class.should be(Enumerator)
|
44
|
-
list.send(method, 2).to_a.should eql(expected)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#each" do
|
5
|
-
context "on a really big list" do
|
6
|
-
it "doesn't run out of stack" do
|
7
|
-
-> { Immutable.interval(0, STACK_OVERFLOW_DEPTH).each { |item| } }.should_not raise_error
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
[
|
12
|
-
[],
|
13
|
-
["A"],
|
14
|
-
%w[A B C],
|
15
|
-
].each do |values|
|
16
|
-
context "on #{values.inspect}" do
|
17
|
-
let(:list) { L[*values] }
|
18
|
-
|
19
|
-
context "with a block" do
|
20
|
-
it "iterates over the items in order" do
|
21
|
-
yielded = []
|
22
|
-
list.each { |item| yielded << item }
|
23
|
-
yielded.should == values
|
24
|
-
end
|
25
|
-
|
26
|
-
it "returns nil" do
|
27
|
-
list.each { |item| item }.should be_nil
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "without a block" do
|
32
|
-
it "returns an Enumerator" do
|
33
|
-
list.each.class.should be(Enumerator)
|
34
|
-
Immutable::List[*list.each].should eql(list)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#each_with_index" do
|
5
|
-
context "with no block" do
|
6
|
-
let(:list) { L["A", "B", "C"] }
|
7
|
-
|
8
|
-
it "returns an Enumerator" do
|
9
|
-
list.each_with_index.class.should be(Enumerator)
|
10
|
-
list.each_with_index.to_a.should == [['A', 0], ['B', 1], ['C', 2]]
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context "with a block" do
|
15
|
-
let(:list) { Immutable.interval(1, 1025) }
|
16
|
-
|
17
|
-
it "returns self" do
|
18
|
-
list.each_with_index { |item, index| item }.should be(list)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "iterates over the items in order, yielding item and index" do
|
22
|
-
yielded = []
|
23
|
-
list.each_with_index { |item, index| yielded << [item, index] }
|
24
|
-
yielded.should == (1..list.size).zip(0..list.size.pred)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#empty?" do
|
5
|
-
context "on a really big list" do
|
6
|
-
it "doesn't run out of stack" do
|
7
|
-
-> { Immutable.interval(0, STACK_OVERFLOW_DEPTH).select(&:nil?).empty? }.should_not raise_error
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
[
|
12
|
-
[[], true],
|
13
|
-
[["A"], false],
|
14
|
-
[%w[A B C], false],
|
15
|
-
].each do |values, expected|
|
16
|
-
context "on #{values.inspect}" do
|
17
|
-
it "returns #{expected.inspect}" do
|
18
|
-
L[*values].empty?.should == expected
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#eql?" do
|
5
|
-
context "on a really big list" do
|
6
|
-
it "doesn't run out of stack" do
|
7
|
-
-> { Immutable.interval(0, STACK_OVERFLOW_DEPTH).eql?(Immutable.interval(0, STACK_OVERFLOW_DEPTH)) }.should_not raise_error
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
shared_examples 'equal using eql?' do |a, b|
|
13
|
-
specify "#{a.inspect} should eql? #{b.inspect}" do
|
14
|
-
expect(a).to eql b
|
15
|
-
end
|
16
|
-
|
17
|
-
specify "#{a.inspect} should == #{b.inspect}" do
|
18
|
-
expect(a).to eq b
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
shared_examples 'not equal using eql?' do |a, b|
|
23
|
-
specify "#{a.inspect} should not eql? #{b.inspect}" do
|
24
|
-
expect(a).to_not eql b
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
shared_examples 'equal using ==' do |a, b|
|
29
|
-
specify "#{a.inspect} should == #{b.inspect}" do
|
30
|
-
expect(a).to eq b
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
shared_examples 'not equal using ==' do |a, b|
|
35
|
-
specify "#{a.inspect} should not == #{b.inspect}" do
|
36
|
-
expect(a).to_not eq b
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
include_examples 'equal using ==' , L["A", "B", "C"], %w[A B C]
|
41
|
-
include_examples 'not equal using eql?' , L["A", "B", "C"], %w[A B C]
|
42
|
-
include_examples 'not equal using ==' , L["A", "B", "C"], Object.new
|
43
|
-
include_examples 'not equal using eql?' , L["A", "B", "C"], Object.new
|
44
|
-
include_examples 'equal using ==' , L.empty, []
|
45
|
-
include_examples 'not equal using eql?' , L.empty, []
|
46
|
-
|
47
|
-
include_examples 'equal using eql?' , L.empty, L.empty
|
48
|
-
include_examples 'not equal using eql?' , L.empty, L[nil]
|
49
|
-
include_examples 'not equal using eql?' , L["A"], L.empty
|
50
|
-
include_examples 'equal using eql?' , L["A"], L["A"]
|
51
|
-
include_examples 'not equal using eql?' , L["A"], L["B"]
|
52
|
-
include_examples 'not equal using eql?' , L["A", "B"], L["A"]
|
53
|
-
include_examples 'equal using eql?' , L["A", "B", "C"], L["A", "B", "C"]
|
54
|
-
include_examples 'not equal using eql?' , L["C", "A", "B"], L["A", "B", "C"]
|
55
|
-
|
56
|
-
include_examples 'equal using ==' , L['A'], ['A']
|
57
|
-
include_examples 'equal using ==' , ['A'], L['A']
|
58
|
-
|
59
|
-
include_examples 'not equal using eql?' , L['A'], ['A']
|
60
|
-
include_examples 'not equal using eql?' , ['A'], L['A']
|
61
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::List do
|
4
|
-
describe "#fill" do
|
5
|
-
let(:list) { L[1, 2, 3, 4, 5, 6] }
|
6
|
-
|
7
|
-
it "can replace a range of items at the beginning of a list" do
|
8
|
-
list.fill(:a, 0, 3).should eql(L[:a, :a, :a, 4, 5, 6])
|
9
|
-
end
|
10
|
-
|
11
|
-
it "can replace a range of items in the middle of a list" do
|
12
|
-
list.fill(:a, 3, 2).should eql(L[1, 2, 3, :a, :a, 6])
|
13
|
-
end
|
14
|
-
|
15
|
-
it "can replace a range of items at the end of a list" do
|
16
|
-
list.fill(:a, 4, 2).should eql(L[1, 2, 3, 4, :a, :a])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "can replace all the items in a list" do
|
20
|
-
list.fill(:a, 0, 6).should eql(L[:a, :a, :a, :a, :a, :a])
|
21
|
-
end
|
22
|
-
|
23
|
-
it "can fill past the end of the list" do
|
24
|
-
list.fill(:a, 3, 6).should eql(L[1, 2, 3, :a, :a, :a, :a, :a, :a])
|
25
|
-
end
|
26
|
-
|
27
|
-
context "with 1 argument" do
|
28
|
-
it "replaces all the items in the list by default" do
|
29
|
-
list.fill(:a).should eql(L[:a, :a, :a, :a, :a, :a])
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "with 2 arguments" do
|
34
|
-
it "replaces up to the end of the list by default" do
|
35
|
-
list.fill(:a, 4).should eql(L[1, 2, 3, 4, :a, :a])
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "when index and length are 0" do
|
40
|
-
it "leaves the list unmodified" do
|
41
|
-
list.fill(:a, 0, 0).should eql(list)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
it "is lazy" do
|
46
|
-
-> { Immutable.stream { fail }.fill(:a, 0, 1) }.should_not raise_error
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|