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.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hamster/groupable.rb +12 -0
  3. data/lib/hamster/hash.rb +32 -12
  4. data/lib/hamster/list.rb +68 -22
  5. data/lib/hamster/queue.rb +5 -6
  6. data/lib/hamster/set.rb +50 -14
  7. data/lib/hamster/stack.rb +2 -0
  8. data/lib/hamster/trie.rb +34 -14
  9. data/lib/hamster/tuple.rb +9 -24
  10. data/lib/hamster/vector.rb +29 -7
  11. data/lib/hamster/version.rb +1 -1
  12. data/spec/hamster/core_ext/array_spec.rb +4 -10
  13. data/spec/hamster/core_ext/enumerable_spec.rb +1 -0
  14. data/spec/hamster/experimental/mutable_set/add_qm_spec.rb +14 -22
  15. data/spec/hamster/experimental/mutable_set/add_spec.rb +20 -34
  16. data/spec/hamster/experimental/mutable_set/delete_qm_spec.rb +15 -24
  17. data/spec/hamster/experimental/mutable_set/delete_spec.rb +15 -25
  18. data/spec/hamster/experimental/mutable_stack/pop_spec.rb +21 -27
  19. data/spec/hamster/experimental/mutable_stack/push_spec.rb +11 -31
  20. data/spec/hamster/hash/all_spec.rb +21 -34
  21. data/spec/hamster/hash/any_spec.rb +0 -15
  22. data/spec/hamster/hash/clear_spec.rb +1 -8
  23. data/spec/hamster/hash/construction_spec.rb +3 -11
  24. data/spec/hamster/hash/copying_spec.rb +1 -8
  25. data/spec/hamster/hash/delete_spec.rb +1 -10
  26. data/spec/hamster/hash/each_spec.rb +1 -12
  27. data/spec/hamster/hash/empty_spec.rb +8 -8
  28. data/spec/hamster/hash/eql_spec.rb +30 -22
  29. data/spec/hamster/hash/except_spec.rb +1 -10
  30. data/spec/hamster/hash/fetch_spec.rb +1 -24
  31. data/spec/hamster/hash/filter_spec.rb +1 -16
  32. data/spec/hamster/hash/find_spec.rb +1 -14
  33. data/spec/hamster/hash/has_key_spec.rb +1 -10
  34. data/spec/hamster/hash/hash_spec.rb +1 -16
  35. data/spec/hamster/hash/immutable_spec.rb +0 -3
  36. data/spec/hamster/hash/inspect_spec.rb +1 -9
  37. data/spec/hamster/hash/keys_spec.rb +4 -5
  38. data/spec/hamster/hash/map_spec.rb +1 -16
  39. data/spec/hamster/hash/merge_spec.rb +5 -11
  40. data/spec/hamster/hash/new_spec.rb +21 -0
  41. data/spec/hamster/hash/put_spec.rb +13 -11
  42. data/spec/hamster/hash/reduce_spec.rb +7 -15
  43. data/spec/hamster/hash/remove_spec.rb +1 -16
  44. data/spec/hamster/hash/uniq_spec.rb +1 -8
  45. data/spec/hamster/hash/values_spec.rb +1 -6
  46. data/spec/hamster/immutable/copying_spec.rb +1 -8
  47. data/spec/hamster/immutable/immutable_spec.rb +1 -14
  48. data/spec/hamster/immutable/memoize_spec.rb +0 -1
  49. data/spec/hamster/list/add_spec.rb +1 -6
  50. data/spec/hamster/list/all_spec.rb +1 -28
  51. data/spec/hamster/list/any_spec.rb +1 -20
  52. data/spec/hamster/list/append_spec.rb +1 -11
  53. data/spec/hamster/list/at_spec.rb +1 -13
  54. data/spec/hamster/list/break_spec.rb +1 -13
  55. data/spec/hamster/list/cadr_spec.rb +1 -9
  56. data/spec/hamster/list/chunk_spec.rb +1 -9
  57. data/spec/hamster/list/clear_spec.rb +1 -9
  58. data/spec/hamster/list/combinations_spec.rb +1 -11
  59. data/spec/hamster/list/compact_spec.rb +1 -9
  60. data/spec/hamster/list/cons_spec.rb +1 -10
  61. data/spec/hamster/list/construction_spec.rb +1 -30
  62. data/spec/hamster/list/copying_spec.rb +1 -9
  63. data/spec/hamster/list/count_spec.rb +1 -15
  64. data/spec/hamster/list/cycle_spec.rb +1 -10
  65. data/spec/hamster/list/drop_spec.rb +1 -9
  66. data/spec/hamster/list/drop_while_spec.rb +1 -13
  67. data/spec/hamster/list/each_slice_spec.rb +1 -17
  68. data/spec/hamster/list/each_spec.rb +1 -17
  69. data/spec/hamster/list/each_with_index_spec.rb +1 -10
  70. data/spec/hamster/list/elem_index_spec.rb +1 -13
  71. data/spec/hamster/list/elem_indices_spec.rb +1 -11
  72. data/spec/hamster/list/empty_spec.rb +1 -13
  73. data/spec/hamster/list/eql_spec.rb +52 -62
  74. data/spec/hamster/list/find_index_spec.rb +1 -13
  75. data/spec/hamster/list/find_indices_spec.rb +1 -11
  76. data/spec/hamster/list/find_spec.rb +1 -17
  77. data/spec/hamster/list/flatten_spec.rb +1 -9
  78. data/spec/hamster/list/grep_spec.rb +1 -16
  79. data/spec/hamster/list/group_by_spec.rb +1 -20
  80. data/spec/hamster/list/head_spec.rb +1 -11
  81. data/spec/hamster/list/include_spec.rb +1 -13
  82. data/spec/hamster/list/init_spec.rb +1 -8
  83. data/spec/hamster/list/inits_spec.rb +1 -9
  84. data/spec/hamster/list/inspect_spec.rb +1 -11
  85. data/spec/hamster/list/intersperse_spec.rb +1 -9
  86. data/spec/hamster/list/join_spec.rb +1 -18
  87. data/spec/hamster/list/last_spec.rb +1 -11
  88. data/spec/hamster/list/map_spec.rb +1 -15
  89. data/spec/hamster/list/maximum_spec.rb +1 -20
  90. data/spec/hamster/list/merge_by_spec.rb +1 -19
  91. data/spec/hamster/list/merge_spec.rb +1 -20
  92. data/spec/hamster/list/minimum_spec.rb +1 -20
  93. data/spec/hamster/list/none_spec.rb +1 -18
  94. data/spec/hamster/list/one_spec.rb +1 -16
  95. data/spec/hamster/list/partition_spec.rb +1 -13
  96. data/spec/hamster/list/product_spec.rb +1 -11
  97. data/spec/hamster/list/reduce_spec.rb +0 -1
  98. data/spec/hamster/list/remove_spec.rb +1 -15
  99. data/spec/hamster/list/reverse_spec.rb +1 -11
  100. data/spec/hamster/list/size_spec.rb +1 -13
  101. data/spec/hamster/list/slice_spec.rb +1 -11
  102. data/spec/hamster/list/sorting_spec.rb +1 -14
  103. data/spec/hamster/list/span_spec.rb +1 -12
  104. data/spec/hamster/list/split_at_spec.rb +1 -9
  105. data/spec/hamster/list/sum_spec.rb +1 -11
  106. data/spec/hamster/list/tail_spec.rb +1 -11
  107. data/spec/hamster/list/tails_spec.rb +1 -9
  108. data/spec/hamster/list/take_spec.rb +1 -9
  109. data/spec/hamster/list/take_while_spec.rb +0 -1
  110. data/spec/hamster/list/to_a_spec.rb +1 -13
  111. data/spec/hamster/list/to_ary_spec.rb +0 -1
  112. data/spec/hamster/list/to_list_spec.rb +1 -9
  113. data/spec/hamster/list/to_set_spec.rb +2 -8
  114. data/spec/hamster/list/union_spec.rb +1 -11
  115. data/spec/hamster/list/uniq_spec.rb +1 -11
  116. data/spec/hamster/queue/clear_spec.rb +1 -9
  117. data/spec/hamster/queue/construction_spec.rb +1 -10
  118. data/spec/hamster/queue/dequeue_spec.rb +1 -11
  119. data/spec/hamster/queue/empty_spec.rb +1 -13
  120. data/spec/hamster/queue/enqueue_spec.rb +1 -11
  121. data/spec/hamster/queue/head_spec.rb +1 -11
  122. data/spec/hamster/queue/inspect_spec.rb +1 -9
  123. data/spec/hamster/queue/size_spec.rb +1 -11
  124. data/spec/hamster/queue/to_a_spec.rb +1 -11
  125. data/spec/hamster/queue/to_list_spec.rb +1 -11
  126. data/spec/hamster/set/add_spec.rb +1 -12
  127. data/spec/hamster/set/all_spec.rb +1 -18
  128. data/spec/hamster/set/any_spec.rb +1 -17
  129. data/spec/hamster/set/clear_spec.rb +9 -8
  130. data/spec/hamster/set/compact_spec.rb +1 -9
  131. data/spec/hamster/set/construction_spec.rb +1 -9
  132. data/spec/hamster/set/copying_spec.rb +1 -8
  133. data/spec/hamster/set/count_spec.rb +1 -13
  134. data/spec/hamster/set/delete_spec.rb +1 -10
  135. data/spec/hamster/set/difference_spec.rb +1 -11
  136. data/spec/hamster/set/empty_spec.rb +1 -11
  137. data/spec/hamster/set/exclusion_spec.rb +1 -11
  138. data/spec/hamster/set/filter_spec.rb +10 -17
  139. data/spec/hamster/set/find_spec.rb +1 -14
  140. data/spec/hamster/set/flatten_spec.rb +8 -10
  141. data/spec/hamster/set/group_by_spec.rb +8 -17
  142. data/spec/hamster/set/head_spec.rb +1 -12
  143. data/spec/hamster/set/immutable_spec.rb +1 -4
  144. data/spec/hamster/set/include_spec.rb +1 -9
  145. data/spec/hamster/set/inspect_spec.rb +1 -9
  146. data/spec/hamster/set/intersection_spec.rb +1 -11
  147. data/spec/hamster/set/join_spec.rb +1 -16
  148. data/spec/hamster/set/map_spec.rb +1 -16
  149. data/spec/hamster/set/marshal_spec.rb +1 -6
  150. data/spec/hamster/set/maximum_spec.rb +1 -18
  151. data/spec/hamster/set/minimum_spec.rb +1 -17
  152. data/spec/hamster/set/new_spec.rb +21 -0
  153. data/spec/hamster/set/none_spec.rb +1 -16
  154. data/spec/hamster/set/one_spec.rb +1 -14
  155. data/spec/hamster/set/partition_spec.rb +1 -13
  156. data/spec/hamster/set/product_spec.rb +1 -9
  157. data/spec/hamster/set/reduce_spec.rb +1 -26
  158. data/spec/hamster/set/remove_spec.rb +1 -16
  159. data/spec/hamster/set/size_spec.rb +1 -9
  160. data/spec/hamster/set/sorting_spec.rb +1 -3
  161. data/spec/hamster/set/subset_spec.rb +1 -9
  162. data/spec/hamster/set/sum_spec.rb +1 -9
  163. data/spec/hamster/set/superset_spec.rb +1 -9
  164. data/spec/hamster/set/to_a_spec.rb +1 -11
  165. data/spec/hamster/set/to_list_spec.rb +1 -11
  166. data/spec/hamster/set/to_set_spec.rb +1 -9
  167. data/spec/hamster/set/union_spec.rb +1 -11
  168. data/spec/hamster/set/uniq_spec.rb +1 -7
  169. data/spec/hamster/sorter/immutable_spec.rb +1 -4
  170. data/spec/hamster/stack/clear_spec.rb +1 -9
  171. data/spec/hamster/stack/construction_spec.rb +1 -10
  172. data/spec/hamster/stack/copying_spec.rb +1 -9
  173. data/spec/hamster/stack/empty_spec.rb +1 -9
  174. data/spec/hamster/stack/eql_spec.rb +1 -13
  175. data/spec/hamster/stack/immutable_spec.rb +1 -4
  176. data/spec/hamster/stack/inspect_spec.rb +1 -9
  177. data/spec/hamster/stack/peek_spec.rb +1 -11
  178. data/spec/hamster/stack/pop_spec.rb +1 -11
  179. data/spec/hamster/stack/push_spec.rb +1 -11
  180. data/spec/hamster/stack/size_spec.rb +1 -11
  181. data/spec/hamster/stack/to_a_spec.rb +1 -11
  182. data/spec/hamster/stack/to_list_spec.rb +1 -9
  183. data/spec/hamster/tuple/construction_spec.rb +30 -0
  184. data/spec/hamster/tuple/copying_spec.rb +1 -8
  185. data/spec/hamster/tuple/eql_spec.rb +57 -40
  186. data/spec/hamster/tuple/first_spec.rb +1 -6
  187. data/spec/hamster/tuple/immutable_spec.rb +1 -4
  188. data/spec/hamster/tuple/inspect_spec.rb +1 -6
  189. data/spec/hamster/tuple/last_spec.rb +1 -6
  190. data/spec/hamster/tuple/to_a_spec.rb +1 -9
  191. data/spec/hamster/tuple/to_ary_spec.rb +0 -1
  192. data/spec/hamster/undefined/erase_spec.rb +1 -12
  193. data/spec/hamster/vector/add_spec.rb +8 -0
  194. data/spec/hamster/vector/clear_spec.rb +1 -8
  195. data/spec/hamster/vector/copying_spec.rb +1 -8
  196. data/spec/hamster/vector/each_spec.rb +1 -11
  197. data/spec/hamster/vector/each_with_index_spec.rb +1 -9
  198. data/spec/hamster/vector/empty_spec.rb +7 -9
  199. data/spec/hamster/vector/eql_spec.rb +1 -12
  200. data/spec/hamster/vector/filter_spec.rb +8 -12
  201. data/spec/hamster/vector/first_spec.rb +1 -11
  202. data/spec/hamster/vector/get_spec.rb +1 -23
  203. data/spec/hamster/vector/include_spec.rb +1 -10
  204. data/spec/hamster/vector/map_spec.rb +8 -14
  205. data/spec/hamster/vector/new_spec.rb +48 -0
  206. data/spec/hamster/vector/reduce_spec.rb +1 -26
  207. data/spec/hamster/vector/set_spec.rb +8 -0
  208. data/spec/spec_helper.rb +0 -5
  209. metadata +35 -68
@@ -1,47 +1,37 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/experimental/mutable_set"
4
3
 
5
- describe Hamster::Set do
4
+ describe Hamster::MutableSet do
5
+ let(:mutable) { Hamster.mutable_set(*values) }
6
6
 
7
7
  describe "#delete" do
8
+ let(:values) { %w[A B C] }
9
+ let(:delete) { mutable.delete(value) }
8
10
 
9
- before do
10
- @set = Hamster.mutable_set("A", "B", "C")
11
- end
12
-
13
- describe "with an existing value" do
14
-
15
- before do
16
- @result = @set.delete("B")
17
- end
11
+ context "with an existing value" do
12
+ let(:value) { "B" }
18
13
 
19
14
  it "returns self" do
20
- @result.should equal(@set)
15
+ expect(delete).to eq(mutable)
21
16
  end
22
17
 
23
18
  it "modifies the set to remove the value" do
24
- @set.should == Hamster.mutable_set("A", "C")
19
+ delete
20
+ expect(mutable).to eq(Hamster.mutable_set("A", "C"))
25
21
  end
26
-
27
22
  end
28
23
 
29
- describe "with a non-existing value" do
24
+ context "with a non-existing value" do
25
+ let(:value) { "D" }
30
26
 
31
- before do
32
- @result = @set.delete("D")
27
+ it "returns self" do
28
+ expect(delete).to eq(mutable)
33
29
  end
34
30
 
35
31
  it "preserves the original values" do
36
- @set.should == Hamster.mutable_set("A", "B", "C")
32
+ delete
33
+ expect(mutable).to eq(Hamster.mutable_set("A", "B", "C"))
37
34
  end
38
-
39
- it "returns self" do
40
- @result.should equal(@set)
41
- end
42
-
43
35
  end
44
-
45
36
  end
46
-
47
37
  end
@@ -1,41 +1,35 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/experimental/mutable_stack"
4
3
 
5
4
  describe Hamster::MutableStack do
5
+ let(:mutable_stack) { Hamster.mutable_stack(*values) }
6
6
 
7
- [:pop, :dequeue].each do |method|
8
-
9
- describe "##{method}" do
10
-
11
- [
12
- [[], nil, []],
13
- [["A"], "A", []],
14
- [%w[A B], "B", ["A"]],
15
- [%w[A B C], "C", %w[A B]],
16
- ].each do |initial_state, return_value, resulting_state|
7
+ describe "#pop" do
8
+ let(:pop) { mutable_stack.pop }
17
9
 
18
- describe "on #{initial_state.inspect}" do
19
-
20
- before do
21
- @stack = Hamster.mutable_stack(*initial_state)
22
- @result = @stack.send(method)
23
- end
24
-
25
- it "returns #{return_value.inspect}" do
26
- @result.should == return_value
27
- end
10
+ context "with values" do
11
+ let(:values) { %w[A B C] }
12
+ it "returns the last value" do
13
+ expect(pop).to eq("C")
14
+ end
28
15
 
29
- it "modifies the stack to #{resulting_state.inspect}" do
30
- @stack.should == Hamster.mutable_stack(*resulting_state)
31
- end
16
+ it "modifies the original collection" do
17
+ pop
18
+ expect(mutable_stack).to eq(Hamster.mutable_stack("A", "B"))
19
+ end
20
+ end
32
21
 
33
- end
22
+ context "without values" do
23
+ let(:values) { [] }
34
24
 
25
+ it "returns nil" do
26
+ expect(pop).to be(nil)
35
27
  end
36
28
 
29
+ it "doesn't change the original stack" do
30
+ pop
31
+ expect(mutable_stack).to eq(Hamster.mutable_stack(*values))
32
+ end
37
33
  end
38
-
39
34
  end
40
-
41
35
  end
@@ -1,41 +1,21 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/experimental/mutable_stack"
4
3
 
5
4
  describe Hamster::MutableStack do
5
+ let(:mutable_stack) { Hamster.mutable_stack(*values) }
6
6
 
7
- [:push, :<<, :enqueue].each do |method|
8
-
9
- describe "##{method}" do
10
-
11
- [
12
- [[], "A", ["A"]],
13
- [["A"], "B", %w[A B]],
14
- [["A"], "A", %w[A A]],
15
- [%w[A B C], "D", %w[A B C D]],
16
- ].each do |initial_state, new_value, resulting_state|
17
-
18
- describe "on #{initial_state.inspect} with #{new_value.inspect}" do
19
-
20
- before do
21
- @stack = Hamster.mutable_stack(*initial_state)
22
- @result = @stack.send(method, new_value)
23
- end
24
-
25
- it "returns self" do
26
- @result.should equal(@stack)
27
- end
28
-
29
- it "modifies the stack to #{resulting_state.inspect}" do
30
- @stack.should == Hamster.mutable_stack(*resulting_state)
31
- end
32
-
33
- end
34
-
35
- end
7
+ describe "#push" do
8
+ let(:values) { %w[A B C] }
9
+ let(:value) { "Z" }
10
+ let(:push) { mutable_stack.push(value) }
36
11
 
12
+ it "returns the stack" do
13
+ expect(push).to eq(mutable_stack)
37
14
  end
38
15
 
16
+ it "modifies the stack to include the new value" do
17
+ push
18
+ expect(mutable_stack).to eq(Hamster.mutable_stack("A", "B", "C", "Z"))
19
+ end
39
20
  end
40
-
41
21
  end
@@ -1,59 +1,46 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/hash"
4
3
 
5
4
  describe Hamster::Hash do
5
+ let(:hash) { Hamster.hash(values) }
6
6
 
7
7
  [:all?, :forall?].each do |method|
8
-
9
8
  describe "##{method}" do
9
+ context "when empty" do
10
+ let(:values) { Hash.new }
10
11
 
11
- describe "when empty" do
12
-
13
- before do
14
- @hash = Hamster.hash
15
- end
16
-
17
- it "with a block returns true" do
18
- @hash.send(method) {}.should == true
12
+ context "without a block" do
13
+ it "returns true" do
14
+ hash.send(method).should == true
15
+ end
19
16
  end
20
17
 
21
- it "with no block returns true" do
22
- @hash.send(method).should == true
18
+ context "with a block" do
19
+ it "returns true" do
20
+ hash.send(method) { false }.should == true
21
+ end
23
22
  end
24
-
25
23
  end
26
24
 
27
- describe "when not empty" do
25
+ context "when not empty" do
26
+ let(:values) { { "A" => 1, "B" => 2, "C" => 3 } }
28
27
 
29
- before do
30
- @hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
28
+ context "without a block" do
29
+ it "returns true" do
30
+ hash.send(method).should == true
31
+ end
31
32
  end
32
33
 
33
- describe "with a block" do
34
-
34
+ context "with a block" do
35
35
  it "returns true if the block always returns true" do
36
- @hash.send(method) { |key, value| true }.should == true
36
+ hash.send(method) { true }.should == true
37
37
  end
38
38
 
39
39
  it "returns false if the block ever returns false" do
40
- @hash.send(method) { |key, value| key == "D" || value == "dee" }.should == false
41
- end
42
-
43
- end
44
-
45
- describe "with no block" do
46
-
47
- it "returns true" do
48
- @hash.send(method).should == true
40
+ hash.send(method) { |k,v| k != 'C' }.should == false
49
41
  end
50
-
51
42
  end
52
-
53
43
  end
54
-
55
44
  end
56
-
57
45
  end
58
-
59
- end
46
+ 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
  [:any?, :exist?, :exists?].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "when empty" do
12
-
13
8
  before do
14
9
  @hash = Hamster.hash
15
10
  end
@@ -21,11 +16,9 @@ describe Hamster::Hash do
21
16
  it "with no block returns false" do
22
17
  @hash.send(method).should == false
23
18
  end
24
-
25
19
  end
26
20
 
27
21
  describe "when not empty" do
28
-
29
22
  before do
30
23
  @hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see", nil => "NIL")
31
24
  end
@@ -45,23 +38,15 @@ describe Hamster::Hash do
45
38
  it "returns false if the block always returns false" do
46
39
  @hash.send(method) { |key, value| key == "D" && value == "dee" }.should == false
47
40
  end
48
-
49
41
  end
50
-
51
42
  end
52
43
 
53
44
  describe "with no block" do
54
-
55
45
  it "returns true" do
56
46
  @hash.send(method).should == true
57
47
  end
58
-
59
48
  end
60
-
61
49
  end
62
-
63
50
  end
64
-
65
51
  end
66
-
67
52
  end
@@ -1,9 +1,7 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/hash"
4
3
 
5
4
  describe Hamster::Hash do
6
-
7
5
  describe "#clear" do
8
6
 
9
7
  [
@@ -13,7 +11,6 @@ describe Hamster::Hash do
13
11
  ].each do |values|
14
12
 
15
13
  describe "on #{values}" do
16
-
17
14
  before do
18
15
  @original = Hamster.hash(*values)
19
16
  @result = @original.clear
@@ -26,11 +23,7 @@ describe Hamster::Hash do
26
23
  it "returns an empty hash" do
27
24
  @result.should equal(Hamster.hash)
28
25
  end
29
-
30
26
  end
31
-
32
27
  end
33
-
34
28
  end
35
-
36
- end
29
+ end
@@ -1,25 +1,20 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/hash"
4
3
 
5
4
  describe Hamster::Hash do
6
-
7
5
  describe ".hash" do
8
-
9
6
  describe "with nothing" do
10
-
11
7
  before do
12
8
  @hash = Hamster.hash
13
9
  end
14
10
 
15
- it "returns an empty hash" do
11
+ it "returns the canonical empty hash" do
16
12
  @hash.should be_empty
13
+ @hash.should equal(Hamster::EmptyHash)
17
14
  end
18
-
19
15
  end
20
16
 
21
17
  describe "with an implicit hash" do
22
-
23
18
  before do
24
19
  @hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
25
20
  end
@@ -27,9 +22,6 @@ describe Hamster::Hash do
27
22
  it "is equivalent to repeatedly using #put" do
28
23
  @hash.should == Hamster.hash.put("A", "aye").put("B", "bee").put("C", "see")
29
24
  end
30
-
31
25
  end
32
-
33
26
  end
34
-
35
- end
27
+ 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
  [:dup, :clone].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,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 "#delete" 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 an existing key" do
14
-
15
11
  before do
16
12
  @result = @original.delete("B")
17
13
  end
@@ -23,11 +19,9 @@ describe Hamster::Hash do
23
19
  it "returns a copy with the remaining key/value pairs" do
24
20
  @result.should == Hamster.hash("A" => "aye", "C" => "see")
25
21
  end
26
-
27
22
  end
28
23
 
29
24
  describe "with a non-existing key" do
30
-
31
25
  before do
32
26
  @result = @original.delete("D")
33
27
  end
@@ -39,9 +33,6 @@ describe Hamster::Hash do
39
33
  it "returns self" do
40
34
  @result.should equal(@original)
41
35
  end
42
-
43
36
  end
44
-
45
37
  end
46
-
47
- end
38
+ end