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,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
- [:eql?, :==].each do |method|
8
-
9
- describe "##{method}" do
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
- before do
14
- @hash = Hamster.hash("A" => "aye", "B" => "bee", "C" => "see")
15
- end
15
+ it "an arbitrary object" do
16
+ @hash.eql?(Object.new).should == false
17
+ end
18
+ end
19
+ end
16
20
 
17
- it "a standard hash" do
18
- @hash.send(method, "A" => "aye", "B" => "bee", "C" => "see").should == false
19
- end
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
- it "an aribtrary object" do
22
- @hash.send(method, Object.new).should == false
23
- end
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