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/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
describe "#inspect" do
|
8
|
-
|
9
6
|
[
|
10
7
|
[[], "{}"],
|
11
8
|
[["A" => "aye"], "{\"A\" => \"aye\"}"],
|
@@ -13,7 +10,6 @@ describe Hamster::Hash do
|
|
13
10
|
].each do |values, expected|
|
14
11
|
|
15
12
|
describe "on #{values.inspect}" do
|
16
|
-
|
17
13
|
before do
|
18
14
|
original = Hamster.hash(*values)
|
19
15
|
@result = original.inspect
|
@@ -22,11 +18,7 @@ describe Hamster::Hash do
|
|
22
18
|
it "returns #{expected.inspect}" do
|
23
19
|
@result.should == expected
|
24
20
|
end
|
25
|
-
|
26
21
|
end
|
27
|
-
|
28
22
|
end
|
29
|
-
|
30
23
|
end
|
31
|
-
|
32
|
-
end
|
24
|
+
end
|
@@ -1,12 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
require "hamster/set"
|
5
4
|
|
6
5
|
describe Hamster::Hash do
|
7
|
-
|
8
6
|
describe "#keys" do
|
9
|
-
|
10
7
|
before do
|
11
8
|
hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
12
9
|
@result = hash.keys
|
@@ -16,6 +13,8 @@ describe Hamster::Hash do
|
|
16
13
|
@result.should == Hamster.set("A", "B", "C")
|
17
14
|
end
|
18
15
|
|
16
|
+
it "returns frozen String keys" do
|
17
|
+
@result.each { |s| s.should be_frozen }
|
18
|
+
end
|
19
19
|
end
|
20
|
-
|
21
|
-
end
|
20
|
+
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
|
[:map, :collect].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
describe "when empty" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@original = Hamster.hash
|
15
10
|
@mapped = @original.send(method) {}
|
@@ -18,17 +13,14 @@ describe Hamster::Hash do
|
|
18
13
|
it "returns self" do
|
19
14
|
@mapped.should equal(@original)
|
20
15
|
end
|
21
|
-
|
22
16
|
end
|
23
17
|
|
24
18
|
describe "when not empty" do
|
25
|
-
|
26
19
|
before do
|
27
20
|
@original = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
28
21
|
end
|
29
22
|
|
30
23
|
describe "with a block" do
|
31
|
-
|
32
24
|
before do
|
33
25
|
@mapped = @original.send(method) { |key, value| [key.downcase, value.upcase] }
|
34
26
|
end
|
@@ -40,11 +32,9 @@ describe Hamster::Hash do
|
|
40
32
|
it "returns a new hash with the mapped values" do
|
41
33
|
@mapped.should == Hamster.hash("a" => "AYE", "b" => "BEE", "c" => "SEE")
|
42
34
|
end
|
43
|
-
|
44
35
|
end
|
45
36
|
|
46
37
|
describe "with no block" do
|
47
|
-
|
48
38
|
before do
|
49
39
|
@result = @original.send(method)
|
50
40
|
end
|
@@ -52,13 +42,8 @@ describe Hamster::Hash do
|
|
52
42
|
it "returns self" do
|
53
43
|
@result.should equal(@original)
|
54
44
|
end
|
55
|
-
|
56
45
|
end
|
57
|
-
|
58
46
|
end
|
59
|
-
|
60
47
|
end
|
61
|
-
|
62
48
|
end
|
63
|
-
|
64
|
-
end
|
49
|
+
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
|
[:merge, :+].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
[
|
12
8
|
[[], [], []],
|
13
9
|
[["A" => "aye"], [], ["A" => "aye"]],
|
@@ -16,21 +12,19 @@ describe Hamster::Hash do
|
|
16
12
|
].each do |a, b, expected|
|
17
13
|
|
18
14
|
describe "for #{a.inspect} and #{b.inspect}" do
|
19
|
-
|
20
15
|
before do
|
21
16
|
@result = Hamster.hash(*a).send(method, Hamster.hash(*b))
|
22
17
|
end
|
23
18
|
|
24
|
-
it "returns #{expected.inspect}" do
|
19
|
+
it "returns #{expected.inspect} when passed a Hamster::Hash" do
|
25
20
|
@result.should == Hamster.hash(*expected)
|
26
21
|
end
|
27
22
|
|
23
|
+
it "returns #{expected.inspect} when passed a Ruby Hash" do
|
24
|
+
Hamster.hash(*a).send(method, Hash[*b]).should == Hamster.hash(*expected)
|
25
|
+
end
|
28
26
|
end
|
29
|
-
|
30
27
|
end
|
31
|
-
|
32
28
|
end
|
33
|
-
|
34
29
|
end
|
35
|
-
|
36
|
-
end
|
30
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "hamster/hash"
|
3
|
+
|
4
|
+
describe Hamster::Hash do
|
5
|
+
describe "new" do
|
6
|
+
describe "from a subclass" do
|
7
|
+
before do
|
8
|
+
@subclass = Class.new(Hamster::Hash)
|
9
|
+
@instance = @subclass.new("some" => "values")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should return an instance of the subclass" do
|
13
|
+
@instance.class.should be @subclass
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return a frozen instance" do
|
17
|
+
@instance.frozen?.should be true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
describe "#put" do
|
8
|
-
|
9
6
|
before do
|
10
7
|
@original = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
11
8
|
end
|
12
9
|
|
13
10
|
describe "with a block" do
|
14
|
-
|
15
11
|
it "passes the value to the block" do
|
16
12
|
@original.put("A") { |value| value.should == "aye" }
|
17
13
|
end
|
@@ -25,11 +21,9 @@ describe Hamster::Hash do
|
|
25
21
|
result = @original.put("A", &:upcase)
|
26
22
|
result.get("A").should == "AYE"
|
27
23
|
end
|
28
|
-
|
29
24
|
end
|
30
25
|
|
31
26
|
describe "with a unique key" do
|
32
|
-
|
33
27
|
before do
|
34
28
|
@result = @original.put("D", "dee")
|
35
29
|
end
|
@@ -41,11 +35,9 @@ describe Hamster::Hash do
|
|
41
35
|
it "returns a copy with the superset of key/value pairs" do
|
42
36
|
@result.should == Hamster.hash("A" => "aye", "B" => "bee", "C" => "see", "D" => "dee")
|
43
37
|
end
|
44
|
-
|
45
38
|
end
|
46
39
|
|
47
40
|
describe "with a duplicate key" do
|
48
|
-
|
49
41
|
before do
|
50
42
|
@result = @original.put("C", "sea")
|
51
43
|
end
|
@@ -57,9 +49,19 @@ describe Hamster::Hash do
|
|
57
49
|
it "returns a copy with the superset of key/value pairs" do
|
58
50
|
@result.should == Hamster.hash("A" => "aye", "B" => "bee", "C" => "sea")
|
59
51
|
end
|
60
|
-
|
61
52
|
end
|
62
53
|
|
63
|
-
|
54
|
+
context "when a String is inserted as key and then mutated" do
|
55
|
+
before do
|
56
|
+
@string = "a string!"
|
57
|
+
@hash = Hamster.hash(@string => 'a value!')
|
58
|
+
@string.upcase!
|
59
|
+
end
|
64
60
|
|
65
|
-
|
61
|
+
it "is not affected" do
|
62
|
+
@hash['a string!'].should == 'a value!'
|
63
|
+
@hash['A STRING!'].should be_nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
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
|
[:reduce, :inject, :fold, :foldr].each do |method|
|
8
|
-
|
9
6
|
describe "##{method}" do
|
10
|
-
|
11
7
|
describe "when empty" do
|
12
|
-
|
13
8
|
before do
|
14
9
|
@original = Hamster.hash
|
15
10
|
@result = @original.send(method, "ABC") {}
|
@@ -18,17 +13,14 @@ describe Hamster::Hash do
|
|
18
13
|
it "returns the memo" do
|
19
14
|
@result.should == "ABC"
|
20
15
|
end
|
21
|
-
|
22
16
|
end
|
23
17
|
|
24
18
|
describe "when not empty" do
|
25
|
-
|
26
19
|
before do
|
27
20
|
@original = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
28
21
|
end
|
29
22
|
|
30
23
|
describe "with a block" do
|
31
|
-
|
32
24
|
before do
|
33
25
|
@result = @original.send(method, 0) { |memo, key, value| memo + 1 }
|
34
26
|
end
|
@@ -36,11 +28,9 @@ describe Hamster::Hash do
|
|
36
28
|
it "returns the final memo" do
|
37
29
|
@result.should == 3
|
38
30
|
end
|
39
|
-
|
40
31
|
end
|
41
32
|
|
42
33
|
describe "with no block" do
|
43
|
-
|
44
34
|
before do
|
45
35
|
@result = @original.send(method, "ABC")
|
46
36
|
end
|
@@ -48,13 +38,15 @@ describe Hamster::Hash do
|
|
48
38
|
it "returns the memo" do
|
49
39
|
@result.should == "ABC"
|
50
40
|
end
|
51
|
-
|
52
41
|
end
|
53
|
-
|
54
42
|
end
|
55
43
|
|
44
|
+
context "from a subclass" do
|
45
|
+
it "returns an instance of the subclass" do
|
46
|
+
@subclass = Class.new(Hamster::Set)
|
47
|
+
@instance = @subclass.new(*(1..100).to_a)
|
48
|
+
end
|
49
|
+
end
|
56
50
|
end
|
57
|
-
|
58
51
|
end
|
59
|
-
|
60
|
-
end
|
52
|
+
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
|
[:remove, :reject, :delete_if].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 nothing matches" do
|
16
|
-
|
17
12
|
before do
|
18
13
|
@result = @original.send(method) { |key, value| false }
|
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("B" => "bee", "C" => "see")
|
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,23 +1,16 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
|
5
4
|
describe Hamster::Hash do
|
6
|
-
|
7
5
|
before do
|
8
6
|
@hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
9
7
|
end
|
10
8
|
|
11
9
|
[:uniq, :nub, :remove_duplicates].each do |method|
|
12
|
-
|
13
10
|
describe "##{method}" do
|
14
|
-
|
15
11
|
it "returns self" do
|
16
12
|
@hash.send(method).should equal(@hash)
|
17
13
|
end
|
18
|
-
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
|
-
|
23
|
-
end
|
16
|
+
end
|
@@ -1,12 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/hash"
|
4
3
|
require "hamster/set"
|
5
4
|
|
6
5
|
describe Hamster::Hash do
|
7
|
-
|
8
6
|
describe "#values" do
|
9
|
-
|
10
7
|
before do
|
11
8
|
hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
|
12
9
|
@result = hash.values
|
@@ -16,7 +13,6 @@ describe Hamster::Hash do
|
|
16
13
|
@result.should be_a Hamster::List
|
17
14
|
@result.to_a.sort.should == %w(aye bee see)
|
18
15
|
end
|
19
|
-
|
20
16
|
end
|
21
17
|
|
22
18
|
describe "#values with duplicates" do
|
@@ -30,5 +26,4 @@ describe Hamster::Hash do
|
|
30
26
|
@result.to_a.sort.should == [15, 15, 19]
|
31
27
|
end
|
32
28
|
end
|
33
|
-
|
34
|
-
end
|
29
|
+
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
|
3
2
|
require "hamster/immutable"
|
4
3
|
|
5
4
|
describe Hamster::Immutable do
|
6
|
-
|
7
5
|
class Fixture
|
8
6
|
include Hamster::Immutable
|
9
7
|
end
|
10
8
|
|
11
9
|
[:dup, :clone].each do |method|
|
12
|
-
|
13
10
|
describe "##{method}" do
|
14
|
-
|
15
11
|
before do
|
16
12
|
@original = Fixture.new
|
17
13
|
@result = @original.send(method)
|
@@ -20,9 +16,6 @@ describe Hamster::Immutable do
|
|
20
16
|
it "returns self" do
|
21
17
|
@result.should equal(@original)
|
22
18
|
end
|
23
|
-
|
24
19
|
end
|
25
|
-
|
26
20
|
end
|
27
|
-
|
28
|
-
end
|
21
|
+
end
|