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,19 +1,14 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
[:each, :foreach].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
before do
|
12
8
|
@hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
13
9
|
end
|
14
10
|
|
15
11
|
describe "with a block (internal iteration)" do
|
16
|
-
|
17
12
|
it "returns nil" do
|
18
13
|
@hash.send(method) {}.should be_nil
|
19
14
|
end
|
@@ -23,19 +18,13 @@ describe Hamster::Hash do
|
|
23
18
|
@hash.send(method) { |key, value| actual_pairs[key] = value }
|
24
19
|
actual_pairs.should == { "A" => "aye", "B" => "bee", "C" => "see" }
|
25
20
|
end
|
26
|
-
|
27
21
|
end
|
28
22
|
|
29
23
|
describe "with no block" do
|
30
|
-
|
31
24
|
it "returns self" do
|
32
25
|
@hash.send(method).should equal(@hash)
|
33
26
|
end
|
34
|
-
|
35
27
|
end
|
36
|
-
|
37
28
|
end
|
38
|
-
|
39
29
|
end
|
40
|
-
|
41
|
-
end
|
30
|
+
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
[:empty?, :null?].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
[
|
12
8
|
[[], true],
|
13
9
|
[["A" => "aye"], false],
|
@@ -18,10 +14,14 @@ describe Hamster::Hash do
|
|
18
14
|
Hamster.hash(*pairs).send(method).should == result
|
19
15
|
end
|
20
16
|
|
17
|
+
context "from a subclass" do
|
18
|
+
it "returns an instance of the subclass" do
|
19
|
+
@subclass = Class.new(Hamster::Hash)
|
20
|
+
@subclass.empty.class.should be @subclass
|
21
|
+
@subclass.empty.should be_empty
|
22
|
+
end
|
23
|
+
end
|
21
24
|
end
|
22
|
-
|
23
25
|
end
|
24
|
-
|
25
26
|
end
|
26
|
-
|
27
|
-
end
|
27
|
+
end
|
@@ -1,29 +1,43 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
5
|
+
describe "#eql?" do
|
6
|
+
describe "returns false when comparing with" do
|
7
|
+
before do
|
8
|
+
@hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
9
|
+
end
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
describe "returns false when comparing with" do
|
11
|
+
it "a standard hash" do
|
12
|
+
@hash.eql?("A" => "aye", "B" => "bee", "C" => "see").should == false
|
13
|
+
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
it "an arbitrary object" do
|
16
|
+
@hash.eql?(Object.new).should == false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
|
21
|
+
describe "#==" do
|
22
|
+
describe "returns true when comparing with" do
|
23
|
+
before do
|
24
|
+
@hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
25
|
+
end
|
20
26
|
|
21
|
-
|
22
|
-
|
23
|
-
|
27
|
+
it "a standard hash" do
|
28
|
+
(@hash == {"A" => "aye", "B" => "bee", "C" => "see"}).should == true
|
29
|
+
end
|
30
|
+
end
|
24
31
|
|
32
|
+
describe "returns false when comparing with" do
|
33
|
+
it "an arbitrary object" do
|
34
|
+
(@hash == Object.new).should == false
|
25
35
|
end
|
36
|
+
end
|
37
|
+
end
|
26
38
|
|
39
|
+
[:eql?, :==].each do |method|
|
40
|
+
describe "##{method}" do
|
27
41
|
[
|
28
42
|
[{}, {}, true],
|
29
43
|
[{ "A" => "aye" }, {}, false],
|
@@ -37,7 +51,6 @@ describe Hamster::Hash do
|
|
37
51
|
].each do |a, b, expected|
|
38
52
|
|
39
53
|
describe "returns #{expected.inspect}" do
|
40
|
-
|
41
54
|
before do
|
42
55
|
@a = Hamster.hash(a)
|
43
56
|
@b = Hamster.hash(b)
|
@@ -50,13 +63,8 @@ describe Hamster::Hash do
|
|
50
63
|
it "for #{b.inspect} and #{a.inspect}" do
|
51
64
|
@b.send(method, @a).should == expected
|
52
65
|
end
|
53
|
-
|
54
66
|
end
|
55
|
-
|
56
67
|
end
|
57
|
-
|
58
68
|
end
|
59
|
-
|
60
69
|
end
|
61
|
-
|
62
|
-
end
|
70
|
+
end
|
@@ -1,31 +1,22 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
describe "#except" do
|
8
|
-
|
9
6
|
before do
|
10
7
|
@hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see", nil => "NIL")
|
11
8
|
end
|
12
9
|
|
13
10
|
describe "with only keys that the Hash has" do
|
14
|
-
|
15
11
|
it "returns a Hash without those values" do
|
16
12
|
@hash.except("B", nil).should == Hamster.hash("A" => "aye", "C" => "see")
|
17
13
|
end
|
18
|
-
|
19
14
|
end
|
20
15
|
|
21
16
|
describe "with keys that the Hash doesn't have" do
|
22
|
-
|
23
17
|
it "returns a Hash without the values that it had keys for" do
|
24
18
|
@hash.except("B", "A", 3).should == Hamster.hash("C" => "see", nil => "NIL")
|
25
19
|
end
|
26
|
-
|
27
20
|
end
|
28
|
-
|
29
21
|
end
|
30
|
-
|
31
|
-
end
|
22
|
+
end
|
@@ -1,15 +1,10 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
describe "#fetch" do
|
8
|
-
|
9
6
|
describe "with no default provided" do
|
10
|
-
|
11
7
|
describe "when the key exists" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@hash = Hamster.hash("A" => "aye")
|
15
10
|
end
|
@@ -17,11 +12,9 @@ describe Hamster::Hash do
|
|
17
12
|
it "returns the value associated with the key" do
|
18
13
|
@hash.fetch("A").should == "aye"
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
16
|
|
23
17
|
describe "when the key does not exist" do
|
24
|
-
|
25
18
|
before do
|
26
19
|
@hash = Hamster.hash("A" => "aye")
|
27
20
|
end
|
@@ -29,15 +22,11 @@ describe Hamster::Hash do
|
|
29
22
|
it "raises a KeyError" do
|
30
23
|
-> { @hash.fetch("B") }.should raise_error(KeyError)
|
31
24
|
end
|
32
|
-
|
33
25
|
end
|
34
|
-
|
35
26
|
end
|
36
27
|
|
37
28
|
describe "with a default value" do
|
38
|
-
|
39
29
|
describe "when the key exists" do
|
40
|
-
|
41
30
|
before do
|
42
31
|
@hash = Hamster.hash("A" => "aye")
|
43
32
|
end
|
@@ -45,11 +34,9 @@ describe Hamster::Hash do
|
|
45
34
|
it "returns the value associated with the key" do
|
46
35
|
@hash.fetch("A", "default").should == "aye"
|
47
36
|
end
|
48
|
-
|
49
37
|
end
|
50
38
|
|
51
39
|
describe "when the key does not exist" do
|
52
|
-
|
53
40
|
before do
|
54
41
|
@hash = Hamster.hash("A" => "aye")
|
55
42
|
end
|
@@ -57,15 +44,11 @@ describe Hamster::Hash do
|
|
57
44
|
it "returns the default value" do
|
58
45
|
@hash.fetch("B", "default").should == "default"
|
59
46
|
end
|
60
|
-
|
61
47
|
end
|
62
|
-
|
63
48
|
end
|
64
49
|
|
65
50
|
describe "with a default block" do
|
66
|
-
|
67
51
|
describe "when the key exists" do
|
68
|
-
|
69
52
|
before do
|
70
53
|
@hash = Hamster.hash("A" => "aye")
|
71
54
|
end
|
@@ -73,11 +56,9 @@ describe Hamster::Hash do
|
|
73
56
|
it "returns the value associated with the key" do
|
74
57
|
@hash.fetch("A") { "default".upcase }.should == "aye"
|
75
58
|
end
|
76
|
-
|
77
59
|
end
|
78
60
|
|
79
61
|
describe "when the key does not exist" do
|
80
|
-
|
81
62
|
before do
|
82
63
|
@hash = Hamster.hash("A" => "aye")
|
83
64
|
end
|
@@ -85,11 +66,7 @@ describe Hamster::Hash do
|
|
85
66
|
it "returns the default value" do
|
86
67
|
@hash.fetch("B") { "default".upcase }.should == "DEFAULT"
|
87
68
|
end
|
88
|
-
|
89
69
|
end
|
90
|
-
|
91
70
|
end
|
92
|
-
|
93
71
|
end
|
94
|
-
|
95
|
-
end
|
72
|
+
end
|
@@ -1,19 +1,14 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
[:filter, :select, :find_all].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
before do
|
12
8
|
@original = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
13
9
|
end
|
14
10
|
|
15
11
|
describe "when everything matches" do
|
16
|
-
|
17
12
|
before do
|
18
13
|
@result = @original.send(method) { |key, value| true }
|
19
14
|
end
|
@@ -21,13 +16,10 @@ describe Hamster::Hash do
|
|
21
16
|
it "returns self" do
|
22
17
|
@result.should equal(@original)
|
23
18
|
end
|
24
|
-
|
25
19
|
end
|
26
20
|
|
27
21
|
describe "when only some things match" do
|
28
|
-
|
29
22
|
describe "with a block" do
|
30
|
-
|
31
23
|
before do
|
32
24
|
@result = @original.send(method) { |key, value| key == "A" && value == "aye" }
|
33
25
|
end
|
@@ -39,11 +31,9 @@ describe Hamster::Hash do
|
|
39
31
|
it "returns a set with the matching values" do
|
40
32
|
@result.should == Hamster.hash("A" => "aye")
|
41
33
|
end
|
42
|
-
|
43
34
|
end
|
44
35
|
|
45
36
|
describe "with no block" do
|
46
|
-
|
47
37
|
before do
|
48
38
|
@result = @original.send(method)
|
49
39
|
end
|
@@ -51,13 +41,8 @@ describe Hamster::Hash do
|
|
51
41
|
it "returns self" do
|
52
42
|
@result.should equal(@original)
|
53
43
|
end
|
54
|
-
|
55
44
|
end
|
56
|
-
|
57
45
|
end
|
58
|
-
|
59
46
|
end
|
60
|
-
|
61
47
|
end
|
62
|
-
|
63
|
-
end
|
48
|
+
end
|
@@ -1,12 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/tuple"
|
4
3
|
require "hamster/hash"
|
5
4
|
|
6
5
|
describe Hamster::Hash do
|
7
|
-
|
8
6
|
[:find, :detect].each do |method|
|
9
|
-
|
10
7
|
describe "##{method}" do
|
11
8
|
|
12
9
|
[
|
@@ -22,13 +19,11 @@ describe Hamster::Hash do
|
|
22
19
|
].each do |values, key, expected|
|
23
20
|
|
24
21
|
describe "on #{values.inspect}" do
|
25
|
-
|
26
22
|
before do
|
27
23
|
@hash = Hamster.hash(*values)
|
28
24
|
end
|
29
25
|
|
30
26
|
describe "with a block" do
|
31
|
-
|
32
27
|
before do
|
33
28
|
@result = @hash.send(method) { |k, v| k == key }
|
34
29
|
end
|
@@ -36,23 +31,15 @@ describe Hamster::Hash do
|
|
36
31
|
it "returns #{expected.inspect}" do
|
37
32
|
@result.should == expected
|
38
33
|
end
|
39
|
-
|
40
34
|
end
|
41
35
|
|
42
36
|
describe "without a block" do
|
43
|
-
|
44
37
|
it "returns nil" do
|
45
38
|
@hash.send(method).should be_nil
|
46
39
|
end
|
47
|
-
|
48
40
|
end
|
49
|
-
|
50
41
|
end
|
51
|
-
|
52
42
|
end
|
53
|
-
|
54
43
|
end
|
55
|
-
|
56
44
|
end
|
57
|
-
|
58
|
-
end
|
45
|
+
end
|
@@ -1,23 +1,17 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
[:key?, :has_key?, :include?, :member?].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
before do
|
12
8
|
@hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see", nil => "NIL", 2.0 => "two")
|
13
9
|
end
|
14
10
|
|
15
11
|
["A", "B", "C", nil, 2.0].each do |key|
|
16
|
-
|
17
12
|
it "returns true for an existing key (#{key.inspect})" do
|
18
13
|
@hash.send(method, key).should == true
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
16
|
|
23
17
|
it "returns false for a non-existing key" do
|
@@ -27,9 +21,6 @@ describe Hamster::Hash do
|
|
27
21
|
it "uses #eql? for equality" do
|
28
22
|
@hash.send(method, 2).should == false
|
29
23
|
end
|
30
|
-
|
31
24
|
end
|
32
|
-
|
33
25
|
end
|
34
|
-
|
35
|
-
end
|
26
|
+
end
|
@@ -33,20 +33,5 @@ describe Hamster::Hash do
|
|
33
33
|
@result.should == 0
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
37
|
-
describe "from a subclass" do
|
38
|
-
before do
|
39
|
-
@subclass = Class.new(Hamster::Hash)
|
40
|
-
@instance = @subclass.new("some" => "values")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should return an instance of the subclass" do
|
44
|
-
@instance.class.should be @subclass
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should return a frozen instance" do
|
48
|
-
@instance.frozen?.should be true
|
49
|
-
end
|
50
|
-
end
|
51
36
|
end
|
52
|
-
end
|
37
|
+
end
|