hamster 1.0.1.pre.rc.1 → 1.0.1.pre.rc2
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/hamster/groupable.rb +12 -0
- data/lib/hamster/hash.rb +32 -12
- data/lib/hamster/list.rb +68 -22
- data/lib/hamster/queue.rb +5 -6
- data/lib/hamster/set.rb +50 -14
- data/lib/hamster/stack.rb +2 -0
- data/lib/hamster/trie.rb +34 -14
- data/lib/hamster/tuple.rb +9 -24
- data/lib/hamster/vector.rb +29 -7
- data/lib/hamster/version.rb +1 -1
- data/spec/hamster/core_ext/array_spec.rb +4 -10
- data/spec/hamster/core_ext/enumerable_spec.rb +1 -0
- data/spec/hamster/experimental/mutable_set/add_qm_spec.rb +14 -22
- data/spec/hamster/experimental/mutable_set/add_spec.rb +20 -34
- data/spec/hamster/experimental/mutable_set/delete_qm_spec.rb +15 -24
- data/spec/hamster/experimental/mutable_set/delete_spec.rb +15 -25
- data/spec/hamster/experimental/mutable_stack/pop_spec.rb +21 -27
- data/spec/hamster/experimental/mutable_stack/push_spec.rb +11 -31
- data/spec/hamster/hash/all_spec.rb +21 -34
- data/spec/hamster/hash/any_spec.rb +0 -15
- data/spec/hamster/hash/clear_spec.rb +1 -8
- data/spec/hamster/hash/construction_spec.rb +3 -11
- data/spec/hamster/hash/copying_spec.rb +1 -8
- data/spec/hamster/hash/delete_spec.rb +1 -10
- data/spec/hamster/hash/each_spec.rb +1 -12
- data/spec/hamster/hash/empty_spec.rb +8 -8
- data/spec/hamster/hash/eql_spec.rb +30 -22
- data/spec/hamster/hash/except_spec.rb +1 -10
- data/spec/hamster/hash/fetch_spec.rb +1 -24
- data/spec/hamster/hash/filter_spec.rb +1 -16
- data/spec/hamster/hash/find_spec.rb +1 -14
- data/spec/hamster/hash/has_key_spec.rb +1 -10
- data/spec/hamster/hash/hash_spec.rb +1 -16
- data/spec/hamster/hash/immutable_spec.rb +0 -3
- data/spec/hamster/hash/inspect_spec.rb +1 -9
- data/spec/hamster/hash/keys_spec.rb +4 -5
- data/spec/hamster/hash/map_spec.rb +1 -16
- data/spec/hamster/hash/merge_spec.rb +5 -11
- data/spec/hamster/hash/new_spec.rb +21 -0
- data/spec/hamster/hash/put_spec.rb +13 -11
- data/spec/hamster/hash/reduce_spec.rb +7 -15
- data/spec/hamster/hash/remove_spec.rb +1 -16
- data/spec/hamster/hash/uniq_spec.rb +1 -8
- data/spec/hamster/hash/values_spec.rb +1 -6
- data/spec/hamster/immutable/copying_spec.rb +1 -8
- data/spec/hamster/immutable/immutable_spec.rb +1 -14
- data/spec/hamster/immutable/memoize_spec.rb +0 -1
- data/spec/hamster/list/add_spec.rb +1 -6
- data/spec/hamster/list/all_spec.rb +1 -28
- data/spec/hamster/list/any_spec.rb +1 -20
- data/spec/hamster/list/append_spec.rb +1 -11
- data/spec/hamster/list/at_spec.rb +1 -13
- data/spec/hamster/list/break_spec.rb +1 -13
- data/spec/hamster/list/cadr_spec.rb +1 -9
- data/spec/hamster/list/chunk_spec.rb +1 -9
- data/spec/hamster/list/clear_spec.rb +1 -9
- data/spec/hamster/list/combinations_spec.rb +1 -11
- data/spec/hamster/list/compact_spec.rb +1 -9
- data/spec/hamster/list/cons_spec.rb +1 -10
- data/spec/hamster/list/construction_spec.rb +1 -30
- data/spec/hamster/list/copying_spec.rb +1 -9
- data/spec/hamster/list/count_spec.rb +1 -15
- data/spec/hamster/list/cycle_spec.rb +1 -10
- data/spec/hamster/list/drop_spec.rb +1 -9
- data/spec/hamster/list/drop_while_spec.rb +1 -13
- data/spec/hamster/list/each_slice_spec.rb +1 -17
- data/spec/hamster/list/each_spec.rb +1 -17
- data/spec/hamster/list/each_with_index_spec.rb +1 -10
- data/spec/hamster/list/elem_index_spec.rb +1 -13
- data/spec/hamster/list/elem_indices_spec.rb +1 -11
- data/spec/hamster/list/empty_spec.rb +1 -13
- data/spec/hamster/list/eql_spec.rb +52 -62
- data/spec/hamster/list/find_index_spec.rb +1 -13
- data/spec/hamster/list/find_indices_spec.rb +1 -11
- data/spec/hamster/list/find_spec.rb +1 -17
- data/spec/hamster/list/flatten_spec.rb +1 -9
- data/spec/hamster/list/grep_spec.rb +1 -16
- data/spec/hamster/list/group_by_spec.rb +1 -20
- data/spec/hamster/list/head_spec.rb +1 -11
- data/spec/hamster/list/include_spec.rb +1 -13
- data/spec/hamster/list/init_spec.rb +1 -8
- data/spec/hamster/list/inits_spec.rb +1 -9
- data/spec/hamster/list/inspect_spec.rb +1 -11
- data/spec/hamster/list/intersperse_spec.rb +1 -9
- data/spec/hamster/list/join_spec.rb +1 -18
- data/spec/hamster/list/last_spec.rb +1 -11
- data/spec/hamster/list/map_spec.rb +1 -15
- data/spec/hamster/list/maximum_spec.rb +1 -20
- data/spec/hamster/list/merge_by_spec.rb +1 -19
- data/spec/hamster/list/merge_spec.rb +1 -20
- data/spec/hamster/list/minimum_spec.rb +1 -20
- data/spec/hamster/list/none_spec.rb +1 -18
- data/spec/hamster/list/one_spec.rb +1 -16
- data/spec/hamster/list/partition_spec.rb +1 -13
- data/spec/hamster/list/product_spec.rb +1 -11
- data/spec/hamster/list/reduce_spec.rb +0 -1
- data/spec/hamster/list/remove_spec.rb +1 -15
- data/spec/hamster/list/reverse_spec.rb +1 -11
- data/spec/hamster/list/size_spec.rb +1 -13
- data/spec/hamster/list/slice_spec.rb +1 -11
- data/spec/hamster/list/sorting_spec.rb +1 -14
- data/spec/hamster/list/span_spec.rb +1 -12
- data/spec/hamster/list/split_at_spec.rb +1 -9
- data/spec/hamster/list/sum_spec.rb +1 -11
- data/spec/hamster/list/tail_spec.rb +1 -11
- data/spec/hamster/list/tails_spec.rb +1 -9
- data/spec/hamster/list/take_spec.rb +1 -9
- data/spec/hamster/list/take_while_spec.rb +0 -1
- data/spec/hamster/list/to_a_spec.rb +1 -13
- data/spec/hamster/list/to_ary_spec.rb +0 -1
- data/spec/hamster/list/to_list_spec.rb +1 -9
- data/spec/hamster/list/to_set_spec.rb +2 -8
- data/spec/hamster/list/union_spec.rb +1 -11
- data/spec/hamster/list/uniq_spec.rb +1 -11
- data/spec/hamster/queue/clear_spec.rb +1 -9
- data/spec/hamster/queue/construction_spec.rb +1 -10
- data/spec/hamster/queue/dequeue_spec.rb +1 -11
- data/spec/hamster/queue/empty_spec.rb +1 -13
- data/spec/hamster/queue/enqueue_spec.rb +1 -11
- data/spec/hamster/queue/head_spec.rb +1 -11
- data/spec/hamster/queue/inspect_spec.rb +1 -9
- data/spec/hamster/queue/size_spec.rb +1 -11
- data/spec/hamster/queue/to_a_spec.rb +1 -11
- data/spec/hamster/queue/to_list_spec.rb +1 -11
- data/spec/hamster/set/add_spec.rb +1 -12
- data/spec/hamster/set/all_spec.rb +1 -18
- data/spec/hamster/set/any_spec.rb +1 -17
- data/spec/hamster/set/clear_spec.rb +9 -8
- data/spec/hamster/set/compact_spec.rb +1 -9
- data/spec/hamster/set/construction_spec.rb +1 -9
- data/spec/hamster/set/copying_spec.rb +1 -8
- data/spec/hamster/set/count_spec.rb +1 -13
- data/spec/hamster/set/delete_spec.rb +1 -10
- data/spec/hamster/set/difference_spec.rb +1 -11
- data/spec/hamster/set/empty_spec.rb +1 -11
- data/spec/hamster/set/exclusion_spec.rb +1 -11
- data/spec/hamster/set/filter_spec.rb +10 -17
- data/spec/hamster/set/find_spec.rb +1 -14
- data/spec/hamster/set/flatten_spec.rb +8 -10
- data/spec/hamster/set/group_by_spec.rb +8 -17
- data/spec/hamster/set/head_spec.rb +1 -12
- data/spec/hamster/set/immutable_spec.rb +1 -4
- data/spec/hamster/set/include_spec.rb +1 -9
- data/spec/hamster/set/inspect_spec.rb +1 -9
- data/spec/hamster/set/intersection_spec.rb +1 -11
- data/spec/hamster/set/join_spec.rb +1 -16
- data/spec/hamster/set/map_spec.rb +1 -16
- data/spec/hamster/set/marshal_spec.rb +1 -6
- data/spec/hamster/set/maximum_spec.rb +1 -18
- data/spec/hamster/set/minimum_spec.rb +1 -17
- data/spec/hamster/set/new_spec.rb +21 -0
- data/spec/hamster/set/none_spec.rb +1 -16
- data/spec/hamster/set/one_spec.rb +1 -14
- data/spec/hamster/set/partition_spec.rb +1 -13
- data/spec/hamster/set/product_spec.rb +1 -9
- data/spec/hamster/set/reduce_spec.rb +1 -26
- data/spec/hamster/set/remove_spec.rb +1 -16
- data/spec/hamster/set/size_spec.rb +1 -9
- data/spec/hamster/set/sorting_spec.rb +1 -3
- data/spec/hamster/set/subset_spec.rb +1 -9
- data/spec/hamster/set/sum_spec.rb +1 -9
- data/spec/hamster/set/superset_spec.rb +1 -9
- data/spec/hamster/set/to_a_spec.rb +1 -11
- data/spec/hamster/set/to_list_spec.rb +1 -11
- data/spec/hamster/set/to_set_spec.rb +1 -9
- data/spec/hamster/set/union_spec.rb +1 -11
- data/spec/hamster/set/uniq_spec.rb +1 -7
- data/spec/hamster/sorter/immutable_spec.rb +1 -4
- data/spec/hamster/stack/clear_spec.rb +1 -9
- data/spec/hamster/stack/construction_spec.rb +1 -10
- data/spec/hamster/stack/copying_spec.rb +1 -9
- data/spec/hamster/stack/empty_spec.rb +1 -9
- data/spec/hamster/stack/eql_spec.rb +1 -13
- data/spec/hamster/stack/immutable_spec.rb +1 -4
- data/spec/hamster/stack/inspect_spec.rb +1 -9
- data/spec/hamster/stack/peek_spec.rb +1 -11
- data/spec/hamster/stack/pop_spec.rb +1 -11
- data/spec/hamster/stack/push_spec.rb +1 -11
- data/spec/hamster/stack/size_spec.rb +1 -11
- data/spec/hamster/stack/to_a_spec.rb +1 -11
- data/spec/hamster/stack/to_list_spec.rb +1 -9
- data/spec/hamster/tuple/construction_spec.rb +30 -0
- data/spec/hamster/tuple/copying_spec.rb +1 -8
- data/spec/hamster/tuple/eql_spec.rb +57 -40
- data/spec/hamster/tuple/first_spec.rb +1 -6
- data/spec/hamster/tuple/immutable_spec.rb +1 -4
- data/spec/hamster/tuple/inspect_spec.rb +1 -6
- data/spec/hamster/tuple/last_spec.rb +1 -6
- data/spec/hamster/tuple/to_a_spec.rb +1 -9
- data/spec/hamster/tuple/to_ary_spec.rb +0 -1
- data/spec/hamster/undefined/erase_spec.rb +1 -12
- data/spec/hamster/vector/add_spec.rb +8 -0
- data/spec/hamster/vector/clear_spec.rb +1 -8
- data/spec/hamster/vector/copying_spec.rb +1 -8
- data/spec/hamster/vector/each_spec.rb +1 -11
- data/spec/hamster/vector/each_with_index_spec.rb +1 -9
- data/spec/hamster/vector/empty_spec.rb +7 -9
- data/spec/hamster/vector/eql_spec.rb +1 -12
- data/spec/hamster/vector/filter_spec.rb +8 -12
- data/spec/hamster/vector/first_spec.rb +1 -11
- data/spec/hamster/vector/get_spec.rb +1 -23
- data/spec/hamster/vector/include_spec.rb +1 -10
- data/spec/hamster/vector/map_spec.rb +8 -14
- data/spec/hamster/vector/new_spec.rb +48 -0
- data/spec/hamster/vector/reduce_spec.rb +1 -26
- data/spec/hamster/vector/set_spec.rb +8 -0
- data/spec/spec_helper.rb +0 -5
- metadata +35 -68
@@ -1,15 +1,10 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:each_chunk, :each_slice].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
describe "on a really big list" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
15
10
|
end
|
@@ -17,7 +12,6 @@ describe Hamster::List do
|
|
17
12
|
it "doesn't run out of stack" do
|
18
13
|
-> { @list.send(method, 1) { |item| } }.should_not raise_error
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
16
|
|
23
17
|
[
|
@@ -27,13 +21,11 @@ describe Hamster::List do
|
|
27
21
|
].each do |values, expected|
|
28
22
|
|
29
23
|
describe "on #{values.inspect}" do
|
30
|
-
|
31
24
|
before do
|
32
25
|
@original = Hamster.list(*values)
|
33
26
|
end
|
34
27
|
|
35
28
|
describe "with a block" do
|
36
|
-
|
37
29
|
before do
|
38
30
|
@items = []
|
39
31
|
@result = @original.send(method, 2) { |item| @items << item }
|
@@ -50,11 +42,9 @@ describe Hamster::List do
|
|
50
42
|
it "returns nil" do
|
51
43
|
@result.should be_nil
|
52
44
|
end
|
53
|
-
|
54
45
|
end
|
55
46
|
|
56
47
|
describe "without a block" do
|
57
|
-
|
58
48
|
before do
|
59
49
|
@result = @original.send(method, 2)
|
60
50
|
end
|
@@ -66,15 +56,9 @@ describe Hamster::List do
|
|
66
56
|
it "returns the expected items" do
|
67
57
|
@result.should == Hamster.list(*expected)
|
68
58
|
end
|
69
|
-
|
70
59
|
end
|
71
|
-
|
72
60
|
end
|
73
|
-
|
74
61
|
end
|
75
|
-
|
76
62
|
end
|
77
|
-
|
78
63
|
end
|
79
|
-
|
80
|
-
end
|
64
|
+
end
|
@@ -1,15 +1,10 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:each, :foreach].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
describe "on a really big list" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
15
10
|
end
|
@@ -17,7 +12,6 @@ describe Hamster::List do
|
|
17
12
|
it "doesn't run out of stack" do
|
18
13
|
-> { @list.send(method) { |item| } }.should_not raise_error
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
16
|
|
23
17
|
[
|
@@ -27,13 +21,11 @@ describe Hamster::List do
|
|
27
21
|
].each do |values|
|
28
22
|
|
29
23
|
describe "on #{values.inspect}" do
|
30
|
-
|
31
24
|
before do
|
32
25
|
@original = Hamster.list(*values)
|
33
26
|
end
|
34
27
|
|
35
28
|
describe "with a block" do
|
36
|
-
|
37
29
|
before do
|
38
30
|
@items = []
|
39
31
|
@result = @original.send(method) { |item| @items << item }
|
@@ -46,11 +38,9 @@ describe Hamster::List do
|
|
46
38
|
it "returns nil" do
|
47
39
|
@result.should be_nil
|
48
40
|
end
|
49
|
-
|
50
41
|
end
|
51
42
|
|
52
43
|
describe "without a block" do
|
53
|
-
|
54
44
|
before do
|
55
45
|
@result = @original.send(method)
|
56
46
|
end
|
@@ -58,15 +48,9 @@ describe Hamster::List do
|
|
58
48
|
it "returns self" do
|
59
49
|
@result.should equal(@original)
|
60
50
|
end
|
61
|
-
|
62
51
|
end
|
63
|
-
|
64
52
|
end
|
65
|
-
|
66
53
|
end
|
67
|
-
|
68
54
|
end
|
69
|
-
|
70
55
|
end
|
71
|
-
|
72
|
-
end
|
56
|
+
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
describe "#each_with_index" do
|
8
|
-
|
9
6
|
describe "with no block" do
|
10
|
-
|
11
7
|
before do
|
12
8
|
@list = Hamster.list("A", "B", "C")
|
13
9
|
@result = @list.each_with_index
|
@@ -16,11 +12,9 @@ describe Hamster::List do
|
|
16
12
|
it "returns self" do
|
17
13
|
@result.should equal(@list)
|
18
14
|
end
|
19
|
-
|
20
15
|
end
|
21
16
|
|
22
17
|
describe "with a block" do
|
23
|
-
|
24
18
|
before do
|
25
19
|
@list = Hamster.interval(1, 1025)
|
26
20
|
@pairs = []
|
@@ -34,9 +28,6 @@ describe Hamster::List do
|
|
34
28
|
it "iterates over the items in order" do
|
35
29
|
@pairs.should == (1..@list.size).zip(0..@list.size.pred)
|
36
30
|
end
|
37
|
-
|
38
31
|
end
|
39
|
-
|
40
32
|
end
|
41
|
-
|
42
|
-
end
|
33
|
+
end
|
@@ -1,15 +1,10 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:elem_index, :index].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
describe "on a really big list" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
15
10
|
end
|
@@ -17,7 +12,6 @@ describe Hamster::List do
|
|
17
12
|
it "doesn't run out of stack" do
|
18
13
|
-> { @list.send(method, nil) }.should_not raise_error
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
16
|
|
23
17
|
[
|
@@ -37,7 +31,6 @@ describe Hamster::List do
|
|
37
31
|
].each do |values, item, expected|
|
38
32
|
|
39
33
|
describe "looking for #{item.inspect} in #{values.inspect}" do
|
40
|
-
|
41
34
|
before do
|
42
35
|
list = Hamster.list(*values)
|
43
36
|
@result = list.send(method, item)
|
@@ -46,13 +39,8 @@ describe Hamster::List do
|
|
46
39
|
it "returns #{expected.inspect}" do
|
47
40
|
@result.should == expected
|
48
41
|
end
|
49
|
-
|
50
42
|
end
|
51
|
-
|
52
43
|
end
|
53
|
-
|
54
44
|
end
|
55
|
-
|
56
45
|
end
|
57
|
-
|
58
|
-
end
|
46
|
+
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:elem_indices, :indices].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
it "is lazy" do
|
12
8
|
-> { Hamster.stream { fail }.send(method, nil) }.should_not raise_error
|
13
9
|
end
|
@@ -24,7 +20,6 @@ describe Hamster::List do
|
|
24
20
|
].each do |values, item, expected|
|
25
21
|
|
26
22
|
describe "looking for #{item.inspect} in #{values.inspect}" do
|
27
|
-
|
28
23
|
before do
|
29
24
|
list = Hamster.list(*values)
|
30
25
|
@result = list.send(method, item)
|
@@ -33,13 +28,8 @@ describe Hamster::List do
|
|
33
28
|
it "returns #{expected.inspect}" do
|
34
29
|
@result.should == Hamster.list(*expected)
|
35
30
|
end
|
36
|
-
|
37
31
|
end
|
38
|
-
|
39
32
|
end
|
40
|
-
|
41
33
|
end
|
42
|
-
|
43
34
|
end
|
44
|
-
|
45
|
-
end
|
35
|
+
end
|
@@ -1,15 +1,10 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:empty?, :null?].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
describe "on a really big list" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
15
10
|
end
|
@@ -17,7 +12,6 @@ describe Hamster::List do
|
|
17
12
|
it "doesn't run out of stack" do
|
18
13
|
-> { @list.filter(&:nil?).empty? }.should_not raise_error
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
16
|
|
23
17
|
[
|
@@ -27,7 +21,6 @@ describe Hamster::List do
|
|
27
21
|
].each do |values, expected|
|
28
22
|
|
29
23
|
describe "on #{values.inspect}" do
|
30
|
-
|
31
24
|
before do
|
32
25
|
@result = Hamster.list(*values).send(method)
|
33
26
|
end
|
@@ -35,13 +28,8 @@ describe Hamster::List do
|
|
35
28
|
it "returns #{expected.inspect}" do
|
36
29
|
@result.should == expected
|
37
30
|
end
|
38
|
-
|
39
31
|
end
|
40
|
-
|
41
32
|
end
|
42
|
-
|
43
33
|
end
|
44
|
-
|
45
34
|
end
|
46
|
-
|
47
|
-
end
|
35
|
+
end
|
@@ -1,78 +1,68 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
5
|
+
describe "#eql?" do
|
6
|
+
describe "on a really big list" do
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
describe "on a really big list" do
|
12
|
-
|
13
|
-
before do
|
14
|
-
@a = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
15
|
-
@b = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "doesn't run out of stack" do
|
19
|
-
-> { @a.send(method, @b) }.should_not raise_error
|
20
|
-
end
|
21
|
-
|
8
|
+
before do
|
9
|
+
@a = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
10
|
+
@b = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
22
11
|
end
|
23
12
|
|
24
|
-
|
25
|
-
|
26
|
-
before do
|
27
|
-
@list = Hamster.list("A", "B", "C")
|
28
|
-
end
|
29
|
-
|
30
|
-
it "an array with the same contents" do
|
31
|
-
@list.send(method, %w[A B C]).should == false
|
32
|
-
end
|
33
|
-
|
34
|
-
it "an aribtrary object" do
|
35
|
-
@list.send(method, Object.new).should == false
|
36
|
-
end
|
37
|
-
|
13
|
+
it "doesn't run out of stack" do
|
14
|
+
-> { @a.eql?(@b) }.should_not raise_error
|
38
15
|
end
|
16
|
+
end
|
17
|
+
end
|
39
18
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
[
|
45
|
-
[[], [], true],
|
46
|
-
[[], [nil], false],
|
47
|
-
[["A"], [], false],
|
48
|
-
[["A"], ["A"], true],
|
49
|
-
[["A"], ["B"], false],
|
50
|
-
[%w[A B], ["A"], false],
|
51
|
-
[%w[A B C], %w[A B C], true],
|
52
|
-
[%w[C A B], %w[A B C], false],
|
53
|
-
].each do |a, b, expected|
|
54
|
-
|
55
|
-
describe "returns #{expected.inspect}" do
|
56
|
-
|
57
|
-
before do
|
58
|
-
@a = Hamster.list(*a)
|
59
|
-
@b = Hamster.list(*b)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "for lists #{a.inspect} and #{b.inspect}" do
|
63
|
-
@a.send(method, @b).should == expected
|
64
|
-
end
|
65
|
-
|
66
|
-
it "for lists #{b.inspect} and #{a.inspect}" do
|
67
|
-
@b.send(method, @a).should == expected
|
68
|
-
end
|
19
|
+
shared_examples 'equal using eql?' do |a, b|
|
20
|
+
specify "#{a.inspect} should eql? #{b.inspect}" do
|
21
|
+
expect(a).to eql b
|
22
|
+
end
|
69
23
|
|
70
|
-
|
24
|
+
specify "#{a.inspect} should == #{b.inspect}" do
|
25
|
+
expect(a).to eq b
|
26
|
+
end
|
27
|
+
end
|
71
28
|
|
72
|
-
|
29
|
+
shared_examples 'not equal using eql?' do |a, b|
|
30
|
+
specify "#{a.inspect} should not eql? #{b.inspect}" do
|
31
|
+
expect(a).to_not eql b
|
32
|
+
end
|
33
|
+
end
|
73
34
|
|
35
|
+
shared_examples 'equal using ==' do |a, b|
|
36
|
+
specify "#{a.inspect} should == #{b.inspect}" do
|
37
|
+
expect(a).to eq b
|
74
38
|
end
|
39
|
+
end
|
75
40
|
|
41
|
+
shared_examples 'not equal using ==' do |a, b|
|
42
|
+
specify "#{a.inspect} should not == #{b.inspect}" do
|
43
|
+
expect(a).to_not eq b
|
44
|
+
end
|
76
45
|
end
|
77
46
|
|
78
|
-
|
47
|
+
include_examples 'equal using ==' , Hamster.list("A", "B", "C"), %w[A B C]
|
48
|
+
include_examples 'not equal using eql?' , Hamster.list("A", "B", "C"), %w[A B C]
|
49
|
+
include_examples 'not equal using ==' , Hamster.list("A", "B", "C"), Object.new
|
50
|
+
include_examples 'not equal using eql?' , Hamster.list("A", "B", "C"), Object.new
|
51
|
+
include_examples 'equal using ==' , Hamster.list, []
|
52
|
+
include_examples 'not equal using eql?' , Hamster.list, []
|
53
|
+
|
54
|
+
include_examples 'equal using eql?' , Hamster.list, Hamster.list
|
55
|
+
include_examples 'not equal using eql?' , Hamster.list, Hamster.list(nil)
|
56
|
+
include_examples 'not equal using eql?' , Hamster.list("A"), Hamster.list
|
57
|
+
include_examples 'equal using eql?' , Hamster.list("A"), Hamster.list("A")
|
58
|
+
include_examples 'not equal using eql?' , Hamster.list("A"), Hamster.list("B")
|
59
|
+
include_examples 'not equal using eql?' , Hamster.list(%w[A B]), Hamster.list("A")
|
60
|
+
include_examples 'equal using eql?' , Hamster.list(*%w[A B C]), Hamster.list(*%w[A B C])
|
61
|
+
include_examples 'not equal using eql?' , Hamster.list(*%w[C A B]), Hamster.list(*%w[A B C])
|
62
|
+
|
63
|
+
include_examples 'equal using ==' , Hamster.list('A'), ['A']
|
64
|
+
include_examples 'equal using ==' , ['A'], Hamster.list('A')
|
65
|
+
|
66
|
+
include_examples 'not equal using eql?' , Hamster.list('A'), ['A']
|
67
|
+
include_examples 'not equal using eql?' , ['A'], Hamster.list('A')
|
68
|
+
end
|
@@ -1,15 +1,10 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:find_index, :index].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
describe "on a really big list" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
15
10
|
end
|
@@ -17,7 +12,6 @@ describe Hamster::List do
|
|
17
12
|
it "doesn't run out of stack" do
|
18
13
|
-> { @list.send(method) { |item| false } }.should_not raise_error
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
16
|
|
23
17
|
[
|
@@ -37,7 +31,6 @@ describe Hamster::List do
|
|
37
31
|
].each do |values, item, expected|
|
38
32
|
|
39
33
|
describe "looking for #{item.inspect} in #{values.inspect}" do
|
40
|
-
|
41
34
|
before do
|
42
35
|
list = Hamster.list(*values)
|
43
36
|
@result = list.send(method) { |x| x == item }
|
@@ -46,13 +39,8 @@ describe Hamster::List do
|
|
46
39
|
it "returns #{expected.inspect}" do
|
47
40
|
@result.should == expected
|
48
41
|
end
|
49
|
-
|
50
42
|
end
|
51
|
-
|
52
43
|
end
|
53
|
-
|
54
44
|
end
|
55
|
-
|
56
45
|
end
|
57
|
-
|
58
|
-
end
|
46
|
+
end
|