hamster 1.0.1.pre.rc.1 → 1.0.1.pre.rc2
Sign up to get free protection for your applications and to get access to all the features.
- 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,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
describe "#clear" do
|
8
|
-
|
9
6
|
[
|
10
7
|
[],
|
11
8
|
["A"],
|
@@ -13,7 +10,6 @@ describe Hamster::List do
|
|
13
10
|
].each do |values|
|
14
11
|
|
15
12
|
describe "on #{values}" do
|
16
|
-
|
17
13
|
before do
|
18
14
|
@original = Hamster.list(*values)
|
19
15
|
@result = @original.clear
|
@@ -26,11 +22,7 @@ describe Hamster::List do
|
|
26
22
|
it "returns an empty list" do
|
27
23
|
@result.should equal(Hamster.list)
|
28
24
|
end
|
29
|
-
|
30
25
|
end
|
31
|
-
|
32
26
|
end
|
33
|
-
|
34
27
|
end
|
35
|
-
|
36
|
-
end
|
28
|
+
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
|
[:combinations, :combination].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
it "is lazy" do
|
12
8
|
-> { Hamster.stream { fail }.combinations(2) }.should_not raise_error
|
13
9
|
end
|
@@ -26,7 +22,6 @@ describe Hamster::List do
|
|
26
22
|
expected = expected.map { |x| Hamster.list(*x) }
|
27
23
|
|
28
24
|
describe "on #{values.inspect} in groups of #{number}" do
|
29
|
-
|
30
25
|
before do
|
31
26
|
@original = Hamster.list(*values)
|
32
27
|
@result = @original.send(method, number)
|
@@ -39,13 +34,8 @@ describe Hamster::List do
|
|
39
34
|
it "returns #{expected.inspect}" do
|
40
35
|
@result.should == Hamster.list(*expected)
|
41
36
|
end
|
42
|
-
|
43
37
|
end
|
44
|
-
|
45
38
|
end
|
46
|
-
|
47
39
|
end
|
48
|
-
|
49
40
|
end
|
50
|
-
|
51
|
-
end
|
41
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
describe "#compact" do
|
8
|
-
|
9
6
|
it "is lazy" do
|
10
7
|
-> { Hamster.stream { fail }.compact }.should_not raise_error
|
11
8
|
end
|
@@ -23,7 +20,6 @@ describe Hamster::List do
|
|
23
20
|
].each do |values, expected|
|
24
21
|
|
25
22
|
describe "on #{values.inspect}" do
|
26
|
-
|
27
23
|
before do
|
28
24
|
@original = Hamster.list(*values)
|
29
25
|
@result = @original.compact
|
@@ -36,11 +32,7 @@ describe Hamster::List do
|
|
36
32
|
it "returns #{expected.inspect}" do
|
37
33
|
@result.should == Hamster.list(*expected)
|
38
34
|
end
|
39
|
-
|
40
35
|
end
|
41
|
-
|
42
36
|
end
|
43
|
-
|
44
37
|
end
|
45
|
-
|
46
|
-
end
|
38
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:cons, :>>].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
7
|
|
11
8
|
[
|
@@ -16,7 +13,6 @@ describe Hamster::List do
|
|
16
13
|
].each do |values, new_value, expected|
|
17
14
|
|
18
15
|
describe "on #{values.inspect} with #{new_value.inspect}" do
|
19
|
-
|
20
16
|
before do
|
21
17
|
@original = Hamster.list(*values)
|
22
18
|
@result = @original.send(method, new_value)
|
@@ -29,13 +25,8 @@ describe Hamster::List do
|
|
29
25
|
it "returns #{expected.inspect}" do
|
30
26
|
@result.should == Hamster.list(*expected)
|
31
27
|
end
|
32
|
-
|
33
28
|
end
|
34
|
-
|
35
29
|
end
|
36
|
-
|
37
30
|
end
|
38
|
-
|
39
31
|
end
|
40
|
-
|
41
|
-
end
|
32
|
+
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster do
|
6
|
-
|
7
5
|
describe ".list" do
|
8
|
-
|
9
6
|
describe "with no arguments" do
|
10
|
-
|
11
7
|
before do
|
12
8
|
@list = Hamster.list
|
13
9
|
end
|
@@ -19,11 +15,9 @@ describe Hamster do
|
|
19
15
|
it "returns an empty list" do
|
20
16
|
@list.should be_empty
|
21
17
|
end
|
22
|
-
|
23
18
|
end
|
24
19
|
|
25
20
|
describe "with a number of items" do
|
26
|
-
|
27
21
|
before do
|
28
22
|
@list = Hamster.list("A", "B", "C")
|
29
23
|
end
|
@@ -35,15 +29,11 @@ describe Hamster do
|
|
35
29
|
it "is the same as repeatedly using #cons" do
|
36
30
|
@list.should == Hamster.list.cons("C").cons("B").cons("A")
|
37
31
|
end
|
38
|
-
|
39
32
|
end
|
40
|
-
|
41
33
|
end
|
42
34
|
|
43
35
|
describe ".stream" do
|
44
|
-
|
45
36
|
describe "with no block" do
|
46
|
-
|
47
37
|
before do
|
48
38
|
@list = Hamster.stream
|
49
39
|
end
|
@@ -51,11 +41,9 @@ describe Hamster do
|
|
51
41
|
it "returns an empty list" do
|
52
42
|
@list.should == Hamster.list
|
53
43
|
end
|
54
|
-
|
55
44
|
end
|
56
45
|
|
57
46
|
describe "with a block" do
|
58
|
-
|
59
47
|
before do
|
60
48
|
count = 0
|
61
49
|
@list = Hamster.stream { count += 1 }
|
@@ -64,17 +52,12 @@ describe Hamster do
|
|
64
52
|
it "repeatedly calls the block" do
|
65
53
|
@list.take(5).should == Hamster.list(1, 2, 3, 4, 5)
|
66
54
|
end
|
67
|
-
|
68
55
|
end
|
69
|
-
|
70
56
|
end
|
71
57
|
|
72
58
|
[:interval, :range].each do |method|
|
73
|
-
|
74
59
|
describe ".#{method}" do
|
75
|
-
|
76
60
|
describe "for numbers" do
|
77
|
-
|
78
61
|
before do
|
79
62
|
@list = Hamster.send(method, 98, 102)
|
80
63
|
end
|
@@ -82,11 +65,9 @@ describe Hamster do
|
|
82
65
|
it "is equivalent to a list with explicit values" do
|
83
66
|
@list.should == Hamster.list(98, 99, 100, 101, 102)
|
84
67
|
end
|
85
|
-
|
86
68
|
end
|
87
69
|
|
88
70
|
describe "for strings" do
|
89
|
-
|
90
71
|
before do
|
91
72
|
@list = Hamster.send(method, "A", "AA")
|
92
73
|
end
|
@@ -94,15 +75,11 @@ describe Hamster do
|
|
94
75
|
it "is equivalent to a list with explicit values" do
|
95
76
|
@list.should == Hamster.list("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")
|
96
77
|
end
|
97
|
-
|
98
78
|
end
|
99
|
-
|
100
79
|
end
|
101
|
-
|
102
80
|
end
|
103
81
|
|
104
82
|
describe ".repeat" do
|
105
|
-
|
106
83
|
before do
|
107
84
|
@list = Hamster.repeat("A")
|
108
85
|
end
|
@@ -110,11 +87,9 @@ describe Hamster do
|
|
110
87
|
it "returns an infinite list with specified value for each element" do
|
111
88
|
@list.take(5).should == Hamster.list("A", "A", "A", "A", "A")
|
112
89
|
end
|
113
|
-
|
114
90
|
end
|
115
91
|
|
116
92
|
describe ".replicate" do
|
117
|
-
|
118
93
|
before do
|
119
94
|
@list = Hamster.replicate(5, "A")
|
120
95
|
end
|
@@ -122,11 +97,9 @@ describe Hamster do
|
|
122
97
|
it "returns a list with the specified value repeated the specified number of times" do
|
123
98
|
@list.should == Hamster.list("A", "A", "A", "A", "A")
|
124
99
|
end
|
125
|
-
|
126
100
|
end
|
127
101
|
|
128
102
|
describe ".iterate" do
|
129
|
-
|
130
103
|
before do
|
131
104
|
@list = Hamster.iterate(1) { |item| item * 2 }
|
132
105
|
end
|
@@ -134,7 +107,6 @@ describe Hamster do
|
|
134
107
|
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
|
135
108
|
@list.take(10).should == Hamster.list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512)
|
136
109
|
end
|
137
|
-
|
138
110
|
end
|
139
111
|
|
140
112
|
describe ".enumerate" do
|
@@ -162,5 +134,4 @@ describe Hamster do
|
|
162
134
|
expect { list.take(3).to_a }.to raise_exception
|
163
135
|
end
|
164
136
|
end
|
165
|
-
|
166
|
-
end
|
137
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
[:dup, :clone].each do |method|
|
8
|
-
|
9
6
|
[
|
10
7
|
[],
|
11
8
|
["A"],
|
@@ -13,7 +10,6 @@ describe Hamster::List do
|
|
13
10
|
].each do |values|
|
14
11
|
|
15
12
|
describe "on #{values.inspect}" do
|
16
|
-
|
17
13
|
before do
|
18
14
|
@original = Hamster.list(*values)
|
19
15
|
@result = @original.send(method)
|
@@ -22,11 +18,7 @@ describe Hamster::List do
|
|
22
18
|
it "returns self" do
|
23
19
|
@result.should equal(@original)
|
24
20
|
end
|
25
|
-
|
26
21
|
end
|
27
|
-
|
28
22
|
end
|
29
|
-
|
30
23
|
end
|
31
|
-
|
32
|
-
end
|
24
|
+
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 "#count" do
|
8
|
-
|
9
6
|
describe "on a really big list" do
|
10
|
-
|
11
7
|
before do
|
12
8
|
@list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
|
13
9
|
end
|
@@ -15,7 +11,6 @@ describe Hamster::List do
|
|
15
11
|
it "doesn't run out of stack" do
|
16
12
|
-> { @list.count }.should_not raise_error
|
17
13
|
end
|
18
|
-
|
19
14
|
end
|
20
15
|
|
21
16
|
[
|
@@ -28,13 +23,11 @@ describe Hamster::List do
|
|
28
23
|
].each do |values, expected|
|
29
24
|
|
30
25
|
describe "on #{values.inspect}" do
|
31
|
-
|
32
26
|
before do
|
33
27
|
@original = Hamster.list(*values)
|
34
28
|
end
|
35
29
|
|
36
30
|
describe "with a block" do
|
37
|
-
|
38
31
|
before do
|
39
32
|
@result = @original.count(&:odd?)
|
40
33
|
end
|
@@ -42,11 +35,9 @@ describe Hamster::List do
|
|
42
35
|
it "returns #{expected.inspect}" do
|
43
36
|
@result.should == expected
|
44
37
|
end
|
45
|
-
|
46
38
|
end
|
47
39
|
|
48
40
|
describe "without a block" do
|
49
|
-
|
50
41
|
before do
|
51
42
|
@result = @original.count
|
52
43
|
end
|
@@ -54,13 +45,8 @@ describe Hamster::List do
|
|
54
45
|
it "returns length" do
|
55
46
|
@result.should == @original.length
|
56
47
|
end
|
57
|
-
|
58
48
|
end
|
59
|
-
|
60
49
|
end
|
61
|
-
|
62
50
|
end
|
63
|
-
|
64
51
|
end
|
65
|
-
|
66
|
-
end
|
52
|
+
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster do
|
6
|
-
|
7
5
|
describe "#cycle" do
|
8
|
-
|
9
6
|
it "is lazy" do
|
10
7
|
-> { Hamster.stream { fail }.cycle }.should_not raise_error
|
11
8
|
end
|
12
9
|
|
13
10
|
describe "with an empty list" do
|
14
|
-
|
15
11
|
before do
|
16
12
|
original = Hamster.list
|
17
13
|
@result = original.cycle
|
@@ -20,11 +16,9 @@ describe Hamster do
|
|
20
16
|
it "returns an empty list" do
|
21
17
|
@result.should be_empty
|
22
18
|
end
|
23
|
-
|
24
19
|
end
|
25
20
|
|
26
21
|
describe "with a non-empty list" do
|
27
|
-
|
28
22
|
before do
|
29
23
|
@original = Hamster.list("A", "B", "C")
|
30
24
|
@result = @original.cycle
|
@@ -37,9 +31,6 @@ describe Hamster do
|
|
37
31
|
it "infinitely cycles through all values" do
|
38
32
|
@result.take(7).should == Hamster.list("A", "B", "C", "A", "B", "C", "A")
|
39
33
|
end
|
40
|
-
|
41
34
|
end
|
42
|
-
|
43
35
|
end
|
44
|
-
|
45
|
-
end
|
36
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
describe "#drop" do
|
8
|
-
|
9
6
|
it "is lazy" do
|
10
7
|
-> { Hamster.stream { fail }.drop(1) }.should_not raise_error
|
11
8
|
end
|
@@ -19,7 +16,6 @@ describe Hamster::List do
|
|
19
16
|
].each do |values, number, expected|
|
20
17
|
|
21
18
|
describe "#{number} from #{values.inspect}" do
|
22
|
-
|
23
19
|
before do
|
24
20
|
@original = Hamster.list(*values)
|
25
21
|
@result = @original.drop(number)
|
@@ -32,11 +28,7 @@ describe Hamster::List do
|
|
32
28
|
it "returns #{expected.inspect}" do
|
33
29
|
@result.should == Hamster.list(*expected)
|
34
30
|
end
|
35
|
-
|
36
31
|
end
|
37
|
-
|
38
32
|
end
|
39
|
-
|
40
33
|
end
|
41
|
-
|
42
|
-
end
|
34
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/list"
|
4
3
|
|
5
4
|
describe Hamster::List do
|
6
|
-
|
7
5
|
describe "#drop_while" do
|
8
|
-
|
9
6
|
it "is lazy" do
|
10
7
|
-> { Hamster.stream { fail }.drop_while { false } }.should_not raise_error
|
11
8
|
end
|
@@ -17,13 +14,11 @@ describe Hamster::List do
|
|
17
14
|
].each do |values, expected|
|
18
15
|
|
19
16
|
describe "on #{values.inspect}" do
|
20
|
-
|
21
17
|
before do
|
22
18
|
@original = Hamster.list(*values)
|
23
19
|
end
|
24
20
|
|
25
21
|
describe "with a block" do
|
26
|
-
|
27
22
|
before do
|
28
23
|
@result = @original.drop_while { |item| item < "C" }
|
29
24
|
end
|
@@ -35,11 +30,9 @@ describe Hamster::List do
|
|
35
30
|
it "returns #{expected.inspect}" do
|
36
31
|
@result.should == Hamster.list(*expected)
|
37
32
|
end
|
38
|
-
|
39
33
|
end
|
40
34
|
|
41
35
|
describe "without a block" do
|
42
|
-
|
43
36
|
before do
|
44
37
|
@result = @original.drop_while
|
45
38
|
end
|
@@ -47,13 +40,8 @@ describe Hamster::List do
|
|
47
40
|
it "returns self" do
|
48
41
|
@result.should equal(@original)
|
49
42
|
end
|
50
|
-
|
51
43
|
end
|
52
|
-
|
53
44
|
end
|
54
|
-
|
55
45
|
end
|
56
|
-
|
57
46
|
end
|
58
|
-
|
59
|
-
end
|
47
|
+
end
|