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,58 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
describe "#flatten" do
|
5
|
-
it "recursively flattens nested vectors into containing vector" do
|
6
|
-
V[V[1], V[2]].flatten.should eql(V[1,2])
|
7
|
-
V[V[V[V[V[V[1,2,3]]]]]].flatten.should eql(V[1,2,3])
|
8
|
-
V[V[V[1]], V[V[V[2]]]].flatten.should eql(V[1,2])
|
9
|
-
end
|
10
|
-
|
11
|
-
it "flattens nested arrays as well" do
|
12
|
-
V[[1,2,3],[[4],[5,6]]].flatten.should eql(V[1,2,3,4,5,6])
|
13
|
-
end
|
14
|
-
|
15
|
-
context "with an integral argument" do
|
16
|
-
it "only flattens down to the specified depth" do
|
17
|
-
V[V[V[1,2]]].flatten(1).should eql(V[V[1,2]])
|
18
|
-
V[V[V[V[1]], V[2], V[3]]].flatten(2).should eql(V[V[1], 2, 3])
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "with an argument of zero" do
|
23
|
-
it "returns self" do
|
24
|
-
vector = V[1,2,3]
|
25
|
-
vector.flatten(0).should be(vector)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context "on a subclass" do
|
30
|
-
it "returns an instance of the subclass" do
|
31
|
-
subclass = Class.new(Immutable::Vector)
|
32
|
-
instance = subclass.new([1,2])
|
33
|
-
instance.flatten.class.should be(subclass)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "on a vector with no nested vectors" do
|
38
|
-
it "returns an unchanged vector" do
|
39
|
-
vector = V[1,2,3]
|
40
|
-
vector.flatten.should.eql?(V[1,2,3])
|
41
|
-
end
|
42
|
-
|
43
|
-
context "on a Vector larger than 32 items initialized with Vector.new" do
|
44
|
-
# Regression test, for problem discovered while working on GH issue #182
|
45
|
-
it "returns an unchanged vector" do
|
46
|
-
vector1,vector2 = 2.times.collect { V.new(0..33) }
|
47
|
-
vector1.flatten.should eql(vector2)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
it "leaves the original unmodified" do
|
53
|
-
vector = V[1,2,3]
|
54
|
-
vector.flatten
|
55
|
-
vector.should eql(V[1,2,3])
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
[:get, :at].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
context "when empty" do
|
7
|
-
it "always returns nil" do
|
8
|
-
(-1..1).each do |i|
|
9
|
-
V.empty.send(method, i).should be_nil
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context "when not empty" do
|
15
|
-
let(:vector) { V[*(1..1025)] }
|
16
|
-
|
17
|
-
context "with a positive index" do
|
18
|
-
context "within the absolute bounds of the vector" do
|
19
|
-
it "returns the value at the specified index from the head" do
|
20
|
-
(0..(vector.size - 1)).each do |i|
|
21
|
-
vector.send(method, i).should == i + 1
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "outside the absolute bounds of the vector" do
|
27
|
-
it "returns nil" do
|
28
|
-
vector.send(method, vector.size).should be_nil
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "with a negative index" do
|
34
|
-
context "within the absolute bounds of the vector" do
|
35
|
-
it "returns the value at the specified index from the tail" do
|
36
|
-
(-vector.size..-1).each do |i|
|
37
|
-
vector.send(method, i).should == vector.size + i + 1
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context "outside the absolute bounds of the vector" do
|
43
|
-
it "returns nil" do
|
44
|
-
vector.send(method, -vector.size.next).should be_nil
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
[1, 10, 31, 32, 33, 1024, 1025, 2000].each do |size|
|
51
|
-
context "on a #{size}-item vector" do
|
52
|
-
it "works correctly, even after various addings and removings" do
|
53
|
-
array = size.times.map { rand(10000) }
|
54
|
-
vector = V.new(array)
|
55
|
-
100.times do
|
56
|
-
if rand(2) == 0
|
57
|
-
value, index = rand(10000), rand(size)
|
58
|
-
array[index] = value
|
59
|
-
vector = vector.set(index, value)
|
60
|
-
else
|
61
|
-
index = rand(array.size)
|
62
|
-
array.delete_at(index)
|
63
|
-
vector = vector.delete_at(index)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
0.upto(array.size) do |i|
|
67
|
-
array[i].should == vector.send(method, i)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
describe "#group_by" do
|
5
|
-
context "with a block" do
|
6
|
-
[
|
7
|
-
[[], []],
|
8
|
-
[[1], [true => V[1]]],
|
9
|
-
[[1, 2, 3, 4], [true => V[1, 3], false => V[2, 4]]],
|
10
|
-
].each do |values, expected|
|
11
|
-
context "on #{values.inspect}" do
|
12
|
-
let(:vector) { V[*values] }
|
13
|
-
|
14
|
-
it "returns #{expected.inspect}" do
|
15
|
-
vector.group_by(&:odd?).should eql(H[*expected])
|
16
|
-
vector.should eql(V.new(values)) # make sure it hasn't changed
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "without a block" do
|
23
|
-
[
|
24
|
-
[[], []],
|
25
|
-
[[1], [1 => V[1]]],
|
26
|
-
[[1, 2, 3, 4], [1 => V[1], 2 => V[2], 3 => V[3], 4 => V[4]]],
|
27
|
-
].each do |values, expected|
|
28
|
-
context "on #{values.inspect}" do
|
29
|
-
let(:vector) { V[*values] }
|
30
|
-
|
31
|
-
it "returns #{expected.inspect}" do
|
32
|
-
vector.group_by.should eql(H[*expected])
|
33
|
-
vector.should eql(V.new(values)) # make sure it hasn't changed
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "on an empty vector" do
|
40
|
-
it "returns an empty hash" do
|
41
|
-
V.empty.group_by { |x| x }.should eql(H.empty)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
it "returns a hash without default proc" do
|
46
|
-
V[1,2,3].group_by { |x| x }.default_proc.should be_nil
|
47
|
-
end
|
48
|
-
|
49
|
-
context "from a subclass" do
|
50
|
-
it "returns an Hash whose values are instances of the subclass" do
|
51
|
-
subclass = Class.new(Immutable::Vector)
|
52
|
-
instance = subclass.new([1, 'string', :symbol])
|
53
|
-
instance.group_by { |x| x.class }.values.each { |v| v.class.should be(subclass) }
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
[:include?, :member?].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
[
|
7
|
-
[[], "A", false],
|
8
|
-
[[], nil, false],
|
9
|
-
[["A"], "A", true],
|
10
|
-
[["A"], "B", false],
|
11
|
-
[["A"], nil, false],
|
12
|
-
[["A", "B", nil], "A", true],
|
13
|
-
[["A", "B", nil], "B", true],
|
14
|
-
[["A", "B", nil], nil, true],
|
15
|
-
[["A", "B", nil], "C", false],
|
16
|
-
[["A", "B", false], false, true],
|
17
|
-
[[2], 2, true],
|
18
|
-
[[2], 2.0, true],
|
19
|
-
[[2.0], 2.0, true],
|
20
|
-
[[2.0], 2, true],
|
21
|
-
].each do |values, item, expected|
|
22
|
-
describe "on #{values.inspect}" do
|
23
|
-
it "returns #{expected.inspect}" do
|
24
|
-
V[*values].send(method, item).should == expected
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require 'pry'
|
3
|
-
|
4
|
-
describe Immutable::Vector do
|
5
|
-
describe "#insert" do
|
6
|
-
let(:original) { V[1, 2, 3] }
|
7
|
-
|
8
|
-
it "can add items at the beginning of a vector" do
|
9
|
-
vector = original.insert(0, :a, :b)
|
10
|
-
vector.size.should be(5)
|
11
|
-
vector.at(0).should be(:a)
|
12
|
-
vector.at(2).should be(1)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "can add items in the middle of a vector" do
|
16
|
-
vector = original.insert(1, :a, :b, :c)
|
17
|
-
vector.size.should be(6)
|
18
|
-
vector.to_a.should == [1, :a, :b, :c, 2, 3]
|
19
|
-
end
|
20
|
-
|
21
|
-
it "can add items at the end of a vector" do
|
22
|
-
vector = original.insert(3, :a, :b, :c)
|
23
|
-
vector.size.should be(6)
|
24
|
-
vector.to_a.should == [1, 2, 3, :a, :b, :c]
|
25
|
-
end
|
26
|
-
|
27
|
-
it "can add items past the end of a vector" do
|
28
|
-
vector = original.insert(6, :a, :b)
|
29
|
-
vector.size.should be(8)
|
30
|
-
vector.to_a.should == [1, 2, 3, nil, nil, nil, :a, :b]
|
31
|
-
end
|
32
|
-
|
33
|
-
it "accepts a negative index, which counts back from the end of the vector" do
|
34
|
-
vector = original.insert(-2, :a)
|
35
|
-
vector.size.should be(4)
|
36
|
-
vector.to_a.should == [1, :a, 2, 3]
|
37
|
-
end
|
38
|
-
|
39
|
-
it "raises IndexError if a negative index is too great" do
|
40
|
-
expect { original.insert(-4, :a) }.to raise_error(IndexError)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "works when adding an item past boundary when vector trie needs to deepen" do
|
44
|
-
vector = original.insert(32, :a, :b)
|
45
|
-
vector.size.should == 34
|
46
|
-
vector.to_a.size.should == 34
|
47
|
-
end
|
48
|
-
|
49
|
-
it "works when adding to an empty Vector" do
|
50
|
-
V.empty.insert(0, :a).should eql(V[:a])
|
51
|
-
end
|
52
|
-
|
53
|
-
it "has the right size and contents after many insertions" do
|
54
|
-
array = (1..4000).to_a # we use an Array as standard of correctness
|
55
|
-
vector = Immutable::Vector.new(array)
|
56
|
-
100.times do
|
57
|
-
items = rand(10).times.map { rand(10000) }
|
58
|
-
index = rand(vector.size)
|
59
|
-
vector = vector.insert(index, *items)
|
60
|
-
array.insert(index, *items)
|
61
|
-
vector.size.should == array.size
|
62
|
-
ary = vector.to_a
|
63
|
-
ary.size.should == vector.size
|
64
|
-
ary.should eql(array)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
let(:vector) { V[*values] }
|
5
|
-
|
6
|
-
describe "#inspect" do
|
7
|
-
let(:inspect) { vector.inspect }
|
8
|
-
|
9
|
-
shared_examples "checking output" do
|
10
|
-
it "returns its contents as a programmer-readable string" do
|
11
|
-
expect(inspect).to eq(output)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "returns a string which can be eval'd to get back an equivalent vector" do
|
15
|
-
expect(eval(inspect)).to eql(vector)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "with an empty array" do
|
20
|
-
let(:output) { "Immutable::Vector[]" }
|
21
|
-
let(:values) { [] }
|
22
|
-
|
23
|
-
include_examples "checking output"
|
24
|
-
end
|
25
|
-
|
26
|
-
context "with a single item array" do
|
27
|
-
let(:output) { "Immutable::Vector[\"A\"]" }
|
28
|
-
let(:values) { %w[A] }
|
29
|
-
|
30
|
-
include_examples "checking output"
|
31
|
-
end
|
32
|
-
|
33
|
-
context "with a multi-item array" do
|
34
|
-
let(:output) { "Immutable::Vector[\"A\", \"B\"]" }
|
35
|
-
let(:values) { %w[A B] }
|
36
|
-
|
37
|
-
include_examples "checking output"
|
38
|
-
end
|
39
|
-
|
40
|
-
context "from a subclass" do
|
41
|
-
MyVector = Class.new(Immutable::Vector)
|
42
|
-
let(:vector) { MyVector.new(values) }
|
43
|
-
let(:output) { "MyVector[1, 2]" }
|
44
|
-
let(:values) { [1, 2] }
|
45
|
-
|
46
|
-
include_examples "checking output"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
describe "#join" do
|
5
|
-
context "with a separator" do
|
6
|
-
[
|
7
|
-
[[], ""],
|
8
|
-
[["A"], "A"],
|
9
|
-
[[DeterministicHash.new("A", 1), DeterministicHash.new("B", 2), DeterministicHash.new("C", 3)], "A|B|C"]
|
10
|
-
].each do |values, expected|
|
11
|
-
describe "on #{values.inspect}" do
|
12
|
-
let(:vector) { V[*values] }
|
13
|
-
|
14
|
-
it "preserves the original" do
|
15
|
-
vector.join("|")
|
16
|
-
vector.should eql(V[*values])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "returns #{expected.inspect}" do
|
20
|
-
vector.join("|").should == expected
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "without a separator" do
|
27
|
-
[
|
28
|
-
[[], ""],
|
29
|
-
[["A"], "A"],
|
30
|
-
[[DeterministicHash.new("A", 1), DeterministicHash.new("B", 2), DeterministicHash.new("C", 3)], "ABC"]
|
31
|
-
].each do |values, expected|
|
32
|
-
describe "on #{values.inspect}" do
|
33
|
-
let(:vector) { V[*values] }
|
34
|
-
|
35
|
-
it "preserves the original" do
|
36
|
-
vector.join
|
37
|
-
vector.should eql(V[*values])
|
38
|
-
end
|
39
|
-
|
40
|
-
it "returns #{expected.inspect}" do
|
41
|
-
vector.join.should == expected
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "without a separator (with global default separator set)" do
|
48
|
-
before { $, = '**' }
|
49
|
-
after { $, = nil }
|
50
|
-
|
51
|
-
describe 'on ["A", "B", "C"]' do
|
52
|
-
it 'returns "A**B**C"' do
|
53
|
-
V["A", "B", "C"].join.should == "A**B**C"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
let(:vector) { V[*values] }
|
5
|
-
|
6
|
-
describe "#last" do
|
7
|
-
let(:last) { vector.last }
|
8
|
-
|
9
|
-
shared_examples "checking values" do
|
10
|
-
it "returns the last item" do
|
11
|
-
expect(last).to eq(last_item)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context "with an empty vector" do
|
16
|
-
let(:last_item) { nil }
|
17
|
-
let(:values) { [] }
|
18
|
-
|
19
|
-
include_examples "checking values"
|
20
|
-
end
|
21
|
-
|
22
|
-
context "with a single item vector" do
|
23
|
-
let(:last_item) { "A" }
|
24
|
-
let(:values) { %w[A] }
|
25
|
-
|
26
|
-
include_examples "checking values"
|
27
|
-
end
|
28
|
-
|
29
|
-
context "with a multi-item vector" do
|
30
|
-
let(:last_item) { "B" }
|
31
|
-
let(:values) { %w[A B] }
|
32
|
-
|
33
|
-
include_examples "checking values"
|
34
|
-
end
|
35
|
-
|
36
|
-
[31, 32, 33, 1023, 1024, 1025].each do |size|
|
37
|
-
context "with a #{size}-item vector" do
|
38
|
-
let(:last_item) { size }
|
39
|
-
let(:values) { (1..size).to_a }
|
40
|
-
|
41
|
-
include_examples "checking values"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
let(:vector) { V[*values] }
|
5
|
-
|
6
|
-
describe "#length" do
|
7
|
-
let(:length) { vector.length }
|
8
|
-
|
9
|
-
shared_examples "checking size" do
|
10
|
-
it "returns the values" do
|
11
|
-
expect(length).to eq(size)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context "with an empty vector" do
|
16
|
-
let(:values) { [] }
|
17
|
-
let(:size) { 0 }
|
18
|
-
|
19
|
-
include_examples "checking size"
|
20
|
-
end
|
21
|
-
|
22
|
-
context "with a single item vector" do
|
23
|
-
let(:values) { %w[A] }
|
24
|
-
let(:size) { 1 }
|
25
|
-
|
26
|
-
include_examples "checking size"
|
27
|
-
end
|
28
|
-
|
29
|
-
context "with a multi-item vector" do
|
30
|
-
let(:values) { %w[A B] }
|
31
|
-
let(:size) { 2 }
|
32
|
-
|
33
|
-
include_examples "checking size"
|
34
|
-
end
|
35
|
-
|
36
|
-
[31, 32, 33, 1023, 1024, 1025].each do |size|
|
37
|
-
context "with a #{size}-item vector" do
|
38
|
-
let(:values) { (1..size).to_a }
|
39
|
-
let(:size) { size }
|
40
|
-
|
41
|
-
include_examples "checking size"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
let(:vector) { V[*values] }
|
5
|
-
|
6
|
-
describe "#<<" do
|
7
|
-
let(:ltlt) { vector << added_value }
|
8
|
-
|
9
|
-
shared_examples "checking adding values" do
|
10
|
-
let(:added_vector) { V[*added_values] }
|
11
|
-
|
12
|
-
it "preserves the original" do
|
13
|
-
original = vector
|
14
|
-
vector << added_value
|
15
|
-
expect(original).to eq(vector)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "ltlts the item to the vector" do
|
19
|
-
expect(ltlt).to eq(added_vector)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "with a empty array adding a single item" do
|
24
|
-
let(:values) { [] }
|
25
|
-
let(:added_value) { "A" }
|
26
|
-
let(:added_values) { ["A"] }
|
27
|
-
|
28
|
-
include_examples "checking adding values"
|
29
|
-
end
|
30
|
-
|
31
|
-
context "with a single-item array adding a different item" do
|
32
|
-
let(:values) { ["A"] }
|
33
|
-
let(:added_value) { "B" }
|
34
|
-
let(:added_values) { %w[A B] }
|
35
|
-
|
36
|
-
include_examples "checking adding values"
|
37
|
-
end
|
38
|
-
|
39
|
-
context "with a single-item array adding a duplicate item" do
|
40
|
-
let(:values) { ["A"] }
|
41
|
-
let(:added_value) { "A" }
|
42
|
-
let(:added_values) { %w[A A] }
|
43
|
-
|
44
|
-
include_examples "checking adding values"
|
45
|
-
end
|
46
|
-
|
47
|
-
[31, 32, 33, 1023, 1024, 1025].each do |size|
|
48
|
-
context "with a #{size}-item vector adding a different item" do
|
49
|
-
let(:values) { (1..size).to_a }
|
50
|
-
let(:added_value) { size+1 }
|
51
|
-
let(:added_values) { (1..(size+1)).to_a }
|
52
|
-
|
53
|
-
include_examples "checking adding values"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context "from a subclass" do
|
58
|
-
it "returns an instance of the subclass" do
|
59
|
-
subclass = Class.new(Immutable::Vector)
|
60
|
-
instance = subclass[1,2,3]
|
61
|
-
(instance << 4).class.should be(subclass)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
[:map, :collect].each do |method|
|
5
|
-
describe "##{method}" do
|
6
|
-
context "when empty" do
|
7
|
-
let(:vector) { V.empty }
|
8
|
-
|
9
|
-
it "returns self" do
|
10
|
-
vector.send(method) {}.should equal(vector)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context "when not empty" do
|
15
|
-
let(:vector) { V["A", "B", "C"] }
|
16
|
-
|
17
|
-
context "with a block" do
|
18
|
-
it "preserves the original values" do
|
19
|
-
vector.send(method, &:downcase)
|
20
|
-
vector.should eql(V["A", "B", "C"])
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns a new vector with the mapped values" do
|
24
|
-
vector.send(method, &:downcase).should eql(V["a", "b", "c"])
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "with no block" do
|
29
|
-
it "returns an Enumerator" do
|
30
|
-
vector.send(method).class.should be(Enumerator)
|
31
|
-
vector.send(method).each(&:downcase).should eql(V['a', 'b', 'c'])
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context "from a subclass" do
|
37
|
-
it "returns an instance of the subclass" do
|
38
|
-
subclass = Class.new(Immutable::Vector)
|
39
|
-
instance = subclass[1,2,3]
|
40
|
-
instance.map { |x| x + 1 }.class.should be(subclass)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context "on a large vector" do
|
45
|
-
it "works" do
|
46
|
-
V.new(1..2000).map { |x| x * 2 }.should eql(V.new((1..2000).map { |x| x * 2}))
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
describe "#marshal_dump/#marshal_load" do
|
5
|
-
let(:ruby) do
|
6
|
-
File.join(RbConfig::CONFIG["bindir"], RbConfig::CONFIG["ruby_install_name"])
|
7
|
-
end
|
8
|
-
let(:child_cmd) do
|
9
|
-
%Q|#{ruby} -I lib -r immutable -e 'vector = Immutable::Vector[5, 10, 15]; $stdout.write(Marshal.dump(vector))'|
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:reloaded_vector) do
|
13
|
-
IO.popen(child_cmd, "r+") do |child|
|
14
|
-
reloaded_vector = Marshal.load(child)
|
15
|
-
child.close
|
16
|
-
reloaded_vector
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
it "can survive dumping and loading into a new process" do
|
21
|
-
expect(reloaded_vector).to eql(V[5, 10, 15])
|
22
|
-
end
|
23
|
-
|
24
|
-
it "is still possible to find items by index after loading" do
|
25
|
-
expect(reloaded_vector[0]).to eq(5)
|
26
|
-
expect(reloaded_vector[1]).to eq(10)
|
27
|
-
expect(reloaded_vector[2]).to eq(15)
|
28
|
-
expect(reloaded_vector.size).to eq(3)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Immutable::Vector do
|
4
|
-
describe "#max" do
|
5
|
-
context "with a block" do
|
6
|
-
[
|
7
|
-
[[], nil],
|
8
|
-
[["A"], "A"],
|
9
|
-
[%w[Ichi Ni San], "Ichi"],
|
10
|
-
].each do |values, expected|
|
11
|
-
describe "on #{values.inspect}" do
|
12
|
-
it "returns #{expected.inspect}" do
|
13
|
-
V[*values].max { |maximum, item| maximum.length <=> item.length }.should == expected
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "without a block" do
|
20
|
-
[
|
21
|
-
[[], nil],
|
22
|
-
[["A"], "A"],
|
23
|
-
[%w[Ichi Ni San], "San"],
|
24
|
-
].each do |values, expected|
|
25
|
-
describe "on #{values.inspect}" do
|
26
|
-
it "returns #{expected.inspect}" do
|
27
|
-
V[*values].max.should == expected
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|