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,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/tuple"
|
4
3
|
|
5
4
|
describe Hamster::Tuple do
|
6
|
-
|
7
5
|
describe "#first" do
|
8
|
-
|
9
6
|
before do
|
10
7
|
@tuple = Hamster::Tuple.new("A", "B")
|
11
8
|
end
|
@@ -13,7 +10,5 @@ describe Hamster::Tuple do
|
|
13
10
|
it "returns the first value" do
|
14
11
|
@tuple.first.should == "A"
|
15
12
|
end
|
16
|
-
|
17
13
|
end
|
18
|
-
|
19
|
-
end
|
14
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/tuple"
|
4
3
|
|
5
4
|
describe Hamster::Tuple do
|
6
|
-
|
7
5
|
describe "#inspect" do
|
8
|
-
|
9
6
|
before do
|
10
7
|
@list = Hamster::Tuple.new("A", "B")
|
11
8
|
end
|
@@ -13,7 +10,5 @@ describe Hamster::Tuple do
|
|
13
10
|
it "returns a string with the inspected values" do
|
14
11
|
@list.inspect.should == "(\"A\", \"B\")"
|
15
12
|
end
|
16
|
-
|
17
13
|
end
|
18
|
-
|
19
|
-
end
|
14
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/tuple"
|
4
3
|
|
5
4
|
describe Hamster::Tuple do
|
6
|
-
|
7
5
|
describe "#last" do
|
8
|
-
|
9
6
|
before do
|
10
7
|
@tuple = Hamster::Tuple.new("A", "B")
|
11
8
|
end
|
@@ -13,7 +10,5 @@ describe Hamster::Tuple do
|
|
13
10
|
it "returns the last value" do
|
14
11
|
@tuple.last.should == "B"
|
15
12
|
end
|
16
|
-
|
17
13
|
end
|
18
|
-
|
19
|
-
end
|
14
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/tuple"
|
4
3
|
|
5
4
|
describe Hamster::Tuple do
|
6
|
-
|
7
5
|
describe "#to_a" do
|
8
|
-
|
9
6
|
[
|
10
7
|
[],
|
11
8
|
["A"],
|
@@ -13,7 +10,6 @@ describe Hamster::Tuple do
|
|
13
10
|
].each do |values|
|
14
11
|
|
15
12
|
describe "on #{values.inspect}" do
|
16
|
-
|
17
13
|
before do
|
18
14
|
@tuple = Hamster::Tuple.new(*values)
|
19
15
|
@result = @tuple.to_a
|
@@ -28,11 +24,7 @@ describe Hamster::Tuple do
|
|
28
24
|
@result << "The End"
|
29
25
|
@result.last.should == "The End"
|
30
26
|
end
|
31
|
-
|
32
27
|
end
|
33
|
-
|
34
28
|
end
|
35
|
-
|
36
29
|
end
|
37
|
-
|
38
|
-
end
|
30
|
+
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/undefined"
|
4
3
|
|
5
4
|
describe Hamster::Undefined do
|
6
|
-
|
7
5
|
describe "#erase" do
|
8
|
-
|
9
6
|
describe "with Undefined" do
|
10
|
-
|
11
7
|
before do
|
12
8
|
@result = Hamster::Undefined.erase(Hamster::Undefined)
|
13
9
|
end
|
@@ -15,11 +11,9 @@ describe Hamster::Undefined do
|
|
15
11
|
it "returns nil" do
|
16
12
|
@result.should be_nil
|
17
13
|
end
|
18
|
-
|
19
14
|
end
|
20
15
|
|
21
16
|
describe "with nil" do
|
22
|
-
|
23
17
|
before do
|
24
18
|
@result = Hamster::Undefined.erase(nil)
|
25
19
|
end
|
@@ -27,11 +21,9 @@ describe Hamster::Undefined do
|
|
27
21
|
it "returns nil" do
|
28
22
|
@result.should be_nil
|
29
23
|
end
|
30
|
-
|
31
24
|
end
|
32
25
|
|
33
26
|
describe "otherwise" do
|
34
|
-
|
35
27
|
before do
|
36
28
|
@result = Hamster::Undefined.erase("Hello")
|
37
29
|
end
|
@@ -39,9 +31,6 @@ describe Hamster::Undefined do
|
|
39
31
|
it "returns the value unchanged" do
|
40
32
|
@result.should == "Hello"
|
41
33
|
end
|
42
|
-
|
43
34
|
end
|
44
|
-
|
45
35
|
end
|
46
|
-
|
47
|
-
end
|
36
|
+
end
|
@@ -44,5 +44,13 @@ describe Hamster::Vector do
|
|
44
44
|
|
45
45
|
include_examples "checking adding values"
|
46
46
|
end
|
47
|
+
|
48
|
+
context "from a subclass" do
|
49
|
+
it "returns an instance of the subclass" do
|
50
|
+
@subclass = Class.new(Hamster::Vector)
|
51
|
+
@instance = @subclass[1,2,3]
|
52
|
+
@instance.add(4).class.should be(@subclass)
|
53
|
+
end
|
54
|
+
end
|
47
55
|
end
|
48
56
|
end
|
@@ -2,9 +2,7 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
|
6
5
|
describe "#clear" do
|
7
|
-
|
8
6
|
[
|
9
7
|
[],
|
10
8
|
["A"],
|
@@ -12,7 +10,6 @@ describe Hamster::Vector do
|
|
12
10
|
].each do |values|
|
13
11
|
|
14
12
|
describe "on #{values}" do
|
15
|
-
|
16
13
|
before do
|
17
14
|
@original = Hamster.vector(*values)
|
18
15
|
@result = @original.clear
|
@@ -25,11 +22,7 @@ describe Hamster::Vector do
|
|
25
22
|
it "returns an empty vector" do
|
26
23
|
@result.should equal(Hamster.vector)
|
27
24
|
end
|
28
|
-
|
29
25
|
end
|
30
|
-
|
31
26
|
end
|
32
|
-
|
33
27
|
end
|
34
|
-
|
35
|
-
end
|
28
|
+
end
|
@@ -2,9 +2,7 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
|
6
5
|
[:dup, :clone].each do |method|
|
7
|
-
|
8
6
|
[
|
9
7
|
[],
|
10
8
|
["A"],
|
@@ -12,7 +10,6 @@ describe Hamster::Vector do
|
|
12
10
|
].each do |values|
|
13
11
|
|
14
12
|
describe "on #{values.inspect}" do
|
15
|
-
|
16
13
|
before do
|
17
14
|
@original = Hamster.vector(*values)
|
18
15
|
@result = @original.send(method)
|
@@ -21,11 +18,7 @@ describe Hamster::Vector do
|
|
21
18
|
it "returns self" do
|
22
19
|
@result.should equal(@original)
|
23
20
|
end
|
24
|
-
|
25
21
|
end
|
26
|
-
|
27
22
|
end
|
28
|
-
|
29
23
|
end
|
30
|
-
|
31
|
-
end
|
24
|
+
end
|
@@ -2,13 +2,9 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
|
6
5
|
[:each, :foreach].each do |method|
|
7
|
-
|
8
6
|
describe "##{method}" do
|
9
|
-
|
10
7
|
describe "with no block" do
|
11
|
-
|
12
8
|
before do
|
13
9
|
@vector = Hamster.vector("A", "B", "C")
|
14
10
|
@result = @vector.send(method)
|
@@ -17,11 +13,9 @@ describe Hamster::Vector do
|
|
17
13
|
it "returns self" do
|
18
14
|
@result.should equal(@vector)
|
19
15
|
end
|
20
|
-
|
21
16
|
end
|
22
17
|
|
23
18
|
describe "with a block" do
|
24
|
-
|
25
19
|
before do
|
26
20
|
@vector = Hamster.vector(*(1..1025))
|
27
21
|
@items = []
|
@@ -35,11 +29,7 @@ describe Hamster::Vector do
|
|
35
29
|
it "iterates over the items in order" do
|
36
30
|
@items.should == (1..1025).to_a
|
37
31
|
end
|
38
|
-
|
39
32
|
end
|
40
|
-
|
41
33
|
end
|
42
|
-
|
43
34
|
end
|
44
|
-
|
45
|
-
end
|
35
|
+
end
|
@@ -2,11 +2,8 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
|
6
5
|
describe "#each_with_index" do
|
7
|
-
|
8
6
|
describe "with no block" do
|
9
|
-
|
10
7
|
before do
|
11
8
|
@vector = Hamster.vector("A", "B", "C")
|
12
9
|
@result = @vector.each_with_index
|
@@ -15,11 +12,9 @@ describe Hamster::Vector do
|
|
15
12
|
it "returns self" do
|
16
13
|
@result.should equal(@vector)
|
17
14
|
end
|
18
|
-
|
19
15
|
end
|
20
16
|
|
21
17
|
describe "with a block" do
|
22
|
-
|
23
18
|
before do
|
24
19
|
@vector = Hamster.vector(*(1..1025))
|
25
20
|
@pairs = []
|
@@ -33,9 +28,6 @@ describe Hamster::Vector do
|
|
33
28
|
it "iterates over the items in order" do
|
34
29
|
@pairs.should == (1..@vector.size).zip(0..@vector.size.pred)
|
35
30
|
end
|
36
|
-
|
37
31
|
end
|
38
|
-
|
39
32
|
end
|
40
|
-
|
41
|
-
end
|
33
|
+
end
|
@@ -2,11 +2,8 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
|
6
5
|
[:empty?, :null?].each do |method|
|
7
|
-
|
8
6
|
describe "##{method}" do
|
9
|
-
|
10
7
|
[
|
11
8
|
[[], true],
|
12
9
|
[["A"], false],
|
@@ -14,7 +11,6 @@ describe Hamster::Vector do
|
|
14
11
|
].each do |values, expected|
|
15
12
|
|
16
13
|
describe "on #{values.inspect}" do
|
17
|
-
|
18
14
|
before do
|
19
15
|
@vector = Hamster.vector(*values)
|
20
16
|
end
|
@@ -22,13 +18,15 @@ describe Hamster::Vector do
|
|
22
18
|
it "returns #{expected.inspect}" do
|
23
19
|
@vector.send(method).should == expected
|
24
20
|
end
|
25
|
-
|
26
21
|
end
|
27
|
-
|
28
22
|
end
|
29
|
-
|
30
23
|
end
|
31
|
-
|
32
24
|
end
|
33
25
|
|
34
|
-
|
26
|
+
describe "empty" do
|
27
|
+
it "returns the canonical empty vector" do
|
28
|
+
Hamster::Vector.empty.size.should be(0)
|
29
|
+
Hamster::Vector.empty.object_id.should be(Hamster::Vector.empty.object_id)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -2,13 +2,9 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
|
6
5
|
[:eql?, :==].each do |method|
|
7
|
-
|
8
6
|
describe "##{method}" do
|
9
|
-
|
10
7
|
describe "returns false when comparing with" do
|
11
|
-
|
12
8
|
before do
|
13
9
|
@vector = Hamster.vector("A", "B", "C")
|
14
10
|
end
|
@@ -20,7 +16,6 @@ describe Hamster::Vector do
|
|
20
16
|
it "an aribtrary object" do
|
21
17
|
@vector.send(method, Object.new).should == false
|
22
18
|
end
|
23
|
-
|
24
19
|
end
|
25
20
|
|
26
21
|
it "returns false when comparing an empty vector with an empty array" do
|
@@ -39,7 +34,6 @@ describe Hamster::Vector do
|
|
39
34
|
].each do |a, b, expected|
|
40
35
|
|
41
36
|
describe "returns #{expected.inspect}" do
|
42
|
-
|
43
37
|
before do
|
44
38
|
@a = Hamster.vector(*a)
|
45
39
|
@b = Hamster.vector(*b)
|
@@ -52,13 +46,8 @@ describe Hamster::Vector do
|
|
52
46
|
it "for vectors #{b.inspect} and #{a.inspect}" do
|
53
47
|
@b.send(method, @a).should == expected
|
54
48
|
end
|
55
|
-
|
56
49
|
end
|
57
|
-
|
58
50
|
end
|
59
|
-
|
60
51
|
end
|
61
|
-
|
62
52
|
end
|
63
|
-
|
64
|
-
end
|
53
|
+
end
|
@@ -2,17 +2,13 @@ require "spec_helper"
|
|
2
2
|
require "hamster/vector"
|
3
3
|
|
4
4
|
describe Hamster::Vector do
|
5
|
-
|
6
5
|
[:filter, :select, :find_all].each do |method|
|
7
|
-
|
8
6
|
describe "##{method}" do
|
9
|
-
|
10
7
|
before do
|
11
8
|
@original = Hamster.vector("A", "B", "C")
|
12
9
|
end
|
13
10
|
|
14
11
|
describe "with a block" do
|
15
|
-
|
16
12
|
before do
|
17
13
|
@result = @original.send(method) { |item| item == "A" }
|
18
14
|
end
|
@@ -24,11 +20,9 @@ describe Hamster::Vector do
|
|
24
20
|
it "returns a vector with the matching values" do
|
25
21
|
@result.should == Hamster.vector("A")
|
26
22
|
end
|
27
|
-
|
28
23
|
end
|
29
24
|
|
30
25
|
describe "with no block" do
|
31
|
-
|
32
26
|
before do
|
33
27
|
@result = @original.send(method)
|
34
28
|
end
|
@@ -36,11 +30,9 @@ describe Hamster::Vector do
|
|
36
30
|
it "returns self" do
|
37
31
|
@result.should equal(@original)
|
38
32
|
end
|
39
|
-
|
40
33
|
end
|
41
34
|
|
42
35
|
describe "when nothing matches" do
|
43
|
-
|
44
36
|
before do
|
45
37
|
@result = @original.send(method) { |item| false }
|
46
38
|
end
|
@@ -52,11 +44,15 @@ describe Hamster::Vector do
|
|
52
44
|
it "returns an empty vector" do
|
53
45
|
@result.should equal(Hamster.vector)
|
54
46
|
end
|
55
|
-
|
56
47
|
end
|
57
48
|
|
49
|
+
context "from a subclass" do
|
50
|
+
it "returns an instance of the subclass" do
|
51
|
+
@subclass = Class.new(Hamster::Vector)
|
52
|
+
@instance = @subclass[1,2,3]
|
53
|
+
@instance.filter { |x| x > 1 }.class.should be(@subclass)
|
54
|
+
end
|
55
|
+
end
|
58
56
|
end
|
59
|
-
|
60
57
|
end
|
61
|
-
|
62
|
-
end
|
58
|
+
end
|