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,15 +1,10 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
 
5
4
  describe Hamster::Stack do
6
-
7
5
  [:eql?, :==].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "returns false when comparing with" do
12
-
13
8
  before do
14
9
  @stack = Hamster.stack("A", "B", "C")
15
10
  end
@@ -21,7 +16,6 @@ describe Hamster::Stack do
21
16
  it "an aribtrary object" do
22
17
  @stack.send(method, Object.new).should == false
23
18
  end
24
-
25
19
  end
26
20
 
27
21
  [
@@ -35,7 +29,6 @@ describe Hamster::Stack do
35
29
  ].each do |a, b, expected|
36
30
 
37
31
  describe "returns #{expected.inspect}" do
38
-
39
32
  before do
40
33
  @a = Hamster.stack(*a)
41
34
  @b = Hamster.stack(*b)
@@ -48,13 +41,8 @@ describe Hamster::Stack do
48
41
  it "for #{b.inspect} and #{a.inspect}" do
49
42
  @b.send(method, @a).should == expected
50
43
  end
51
-
52
44
  end
53
-
54
45
  end
55
-
56
46
  end
57
-
58
47
  end
59
-
60
- end
48
+ end
@@ -1,12 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/immutable"
4
3
  require "hamster/stack"
5
4
 
6
5
  describe Hamster::Stack do
7
-
8
6
  it "includes Immutable" do
9
7
  Hamster::Stack.should include(Hamster::Immutable)
10
8
  end
11
-
12
- end
9
+ end
@@ -1,11 +1,8 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
 
5
4
  describe Hamster::Stack do
6
-
7
5
  describe "#inspect" do
8
-
9
6
  [
10
7
  [[], "[]"],
11
8
  [["A"], "[\"A\"]"],
@@ -13,7 +10,6 @@ describe Hamster::Stack do
13
10
  ].each do |values, expected|
14
11
 
15
12
  describe "on #{values.inspect}" do
16
-
17
13
  before do
18
14
  @stack = Hamster.stack(*values)
19
15
  end
@@ -21,11 +17,7 @@ describe Hamster::Stack do
21
17
  it "returns #{expected.inspect}" do
22
18
  @stack.inspect.should == expected
23
19
  end
24
-
25
20
  end
26
-
27
21
  end
28
-
29
22
  end
30
-
31
- end
23
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
 
5
4
  describe Hamster::Stack do
6
-
7
5
  [:peek, :top].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  [
12
8
  [[], nil],
13
9
  [["A"], "A"],
@@ -15,7 +11,6 @@ describe Hamster::Stack do
15
11
  ].each do |values, expected|
16
12
 
17
13
  describe "on #{values.inspect}" do
18
-
19
14
  before do
20
15
  @original = Hamster.stack(*values)
21
16
  @result = @original.send(method)
@@ -28,13 +23,8 @@ describe Hamster::Stack do
28
23
  it "returns #{expected.inspect}" do
29
24
  @result.should == expected
30
25
  end
31
-
32
26
  end
33
-
34
27
  end
35
-
36
28
  end
37
-
38
29
  end
39
-
40
- end
30
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
 
5
4
  describe Hamster::Stack do
6
-
7
5
  [:pop, :dequeue].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  [
12
8
  [[], []],
13
9
  [["A"], []],
@@ -16,7 +12,6 @@ describe Hamster::Stack do
16
12
  ].each do |values, expected|
17
13
 
18
14
  describe "on #{values.inspect}" do
19
-
20
15
  before do
21
16
  @original = Hamster.stack(*values)
22
17
  @result = @original.send(method)
@@ -29,13 +24,8 @@ describe Hamster::Stack do
29
24
  it "returns #{expected.inspect}" do
30
25
  @result.should == Hamster.stack(*expected)
31
26
  end
32
-
33
27
  end
34
-
35
28
  end
36
-
37
29
  end
38
-
39
30
  end
40
-
41
- end
31
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
 
5
4
  describe Hamster::Stack do
6
-
7
5
  [:push, :<<, :enqueue].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  [
12
8
  [[], "A", ["A"]],
13
9
  [["A"], "B", %w[A B]],
@@ -16,7 +12,6 @@ describe Hamster::Stack do
16
12
  ].each do |values, new_value, expected|
17
13
 
18
14
  describe "on #{values.inspect} with #{new_value.inspect}" do
19
-
20
15
  before do
21
16
  @original = Hamster.stack(*values)
22
17
  @result = @original.send(method, new_value)
@@ -29,13 +24,8 @@ describe Hamster::Stack do
29
24
  it "returns #{expected.inspect}" do
30
25
  @result.should == Hamster.stack(*expected)
31
26
  end
32
-
33
27
  end
34
-
35
28
  end
36
-
37
29
  end
38
-
39
30
  end
40
-
41
- end
31
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
 
5
4
  describe Hamster::Stack do
6
-
7
5
  [:size, :length].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  [
12
8
  [[], 0],
13
9
  [["A"], 1],
@@ -15,7 +11,6 @@ describe Hamster::Stack do
15
11
  ].each do |values, expected|
16
12
 
17
13
  describe "on #{values.inspect}" do
18
-
19
14
  before do
20
15
  @stack = Hamster.stack(*values)
21
16
  end
@@ -23,13 +18,8 @@ describe Hamster::Stack do
23
18
  it "returns #{expected.inspect}" do
24
19
  @stack.send(method).should == expected
25
20
  end
26
-
27
21
  end
28
-
29
22
  end
30
-
31
23
  end
32
-
33
24
  end
34
-
35
- end
25
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
 
5
4
  describe Hamster::Stack do
6
-
7
5
  [:to_a, :entries].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  [
12
8
  [[], []],
13
9
  [["A"], ["A"]],
@@ -15,7 +11,6 @@ describe Hamster::Stack do
15
11
  ].each do |values, expected|
16
12
 
17
13
  describe "on #{values.inspect}" do
18
-
19
14
  before do
20
15
  @stack = Hamster.stack(*values)
21
16
  @result = @stack.send(method)
@@ -30,13 +25,8 @@ describe Hamster::Stack do
30
25
  @result << "The End"
31
26
  @result.last.should == "The End"
32
27
  end
33
-
34
28
  end
35
-
36
29
  end
37
-
38
30
  end
39
-
40
31
  end
41
-
42
- end
32
+ end
@@ -1,12 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/stack"
4
3
  require "hamster/list"
5
4
 
6
5
  describe Hamster::Stack do
7
-
8
6
  describe "#to_list" do
9
-
10
7
  [
11
8
  [[], []],
12
9
  [["A"], ["A"]],
@@ -14,7 +11,6 @@ describe Hamster::Stack do
14
11
  ].each do |values, expected|
15
12
 
16
13
  describe "on #{values.inspect}" do
17
-
18
14
  before do
19
15
  @stack = Hamster.stack(*values)
20
16
  @result = @stack.to_list
@@ -23,11 +19,7 @@ describe Hamster::Stack do
23
19
  it "returns #{expected.inspect}" do
24
20
  @result.should == Hamster.list(*expected)
25
21
  end
26
-
27
22
  end
28
-
29
23
  end
30
-
31
24
  end
32
-
33
- end
25
+ end
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+ require "hamster/tuple"
3
+
4
+ describe Hamster do
5
+ describe ".tuple" do
6
+ context "with no arguments" do
7
+ let(:tuple) { Hamster.tuple }
8
+
9
+ it "always returns the same instance" do
10
+ expect(tuple).to eq(Hamster.tuple)
11
+ end
12
+
13
+ it "returns an empty queue" do
14
+ expect(tuple).to be_empty
15
+ end
16
+ end
17
+
18
+ context "with a number of items" do
19
+ let(:tuple) { Hamster.tuple("A", "B", "C") }
20
+
21
+ it "always returns the same instance" do
22
+ expect(tuple).to eq(Hamster.tuple("A", "B", "C"))
23
+ end
24
+
25
+ it "same as constructing a new Tuple directly" do
26
+ expect(tuple).to eq(Hamster::Tuple.new("A", "B", "C"))
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/tuple"
4
3
 
5
4
  describe Hamster::Tuple do
6
-
7
5
  [:dup, :clone].each do |method|
8
-
9
6
  describe "#{method}" do
10
-
11
7
  before do
12
8
  @original = Hamster::Tuple.new("A", "B")
13
9
  @result = @original.send(method)
@@ -16,9 +12,6 @@ describe Hamster::Tuple do
16
12
  it "returns self" do
17
13
  @result.should equal(@original)
18
14
  end
19
-
20
15
  end
21
-
22
16
  end
23
-
24
- end
17
+ end
@@ -1,61 +1,78 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/tuple"
4
3
 
5
4
  describe Hamster::Tuple do
5
+ before do
6
+ @tuple = Hamster::Tuple.new("A", "B", "C")
7
+ end
6
8
 
7
- [:eql?, :==].each do |method|
8
-
9
- describe "##{method}" do
10
-
11
- describe "returns false when comparing with" do
9
+ describe "#==" do
10
+ describe "returns true when comparing with" do
12
11
 
13
- before do
14
- @tuple = Hamster::Tuple.new("A", "B", "C")
15
- end
12
+ it "an array with the same values" do
13
+ @tuple.should == ["A", "B", "C"]
14
+ end
16
15
 
17
- it "an array with the same values" do
18
- @tuple.send(method, %w[A B C]).should == false
19
- end
16
+ it "a List with the same values" do
17
+ @tuple.should == Hamster.list("A", "B", "C")
18
+ end
20
19
 
21
- it "an aribtrary object" do
22
- @tuple.send(method, Object.new).should == false
23
- end
20
+ it "a Tuple with the same values" do
21
+ @tuple.should == Hamster::Tuple.new("A", "B", "C")
22
+ end
23
+ end
24
24
 
25
+ describe "returns false when comparing with" do
26
+ it "an array with different values" do
27
+ @tuple.should_not == ["A", "B"]
25
28
  end
26
29
 
27
- [
28
- [[], [], true],
29
- [[], [nil], false],
30
- [["A"], [], false],
31
- [["A"], ["A"], true],
32
- [["A"], ["B"], false],
33
- [%w[A B], ["A"], false],
34
- [%w[A B C], %w[A B C], true],
35
- [%w[C A B], %w[A B C], false],
36
- ].each do |a, b, expected|
30
+ it "a Tuple with different values" do
31
+ @tuple.should_not == Hamster::Tuple.new("A")
32
+ end
37
33
 
38
- describe "returns #{expected.inspect}" do
34
+ it "an arbitrary object" do
35
+ @tuple.should_not == Object.new
36
+ end
37
+ end
38
+ end
39
39
 
40
- before do
41
- @a = Hamster::Tuple.new(*a)
42
- @b = Hamster::Tuple.new(*b)
43
- end
40
+ describe "#eql?" do
41
+ describe "returns false when comparing with" do
42
+ it "an array with the same values" do
43
+ @tuple.should_not eql(%w[A B C])
44
+ end
44
45
 
45
- it "for #{a.inspect} and #{b.inspect}" do
46
- @a.send(method, @b).should == expected
47
- end
46
+ it "an arbitrary object" do
47
+ @tuple.should_not eql(Object.new)
48
+ end
49
+ end
48
50
 
49
- it "for #{b.inspect} and #{a.inspect}" do
50
- @b.send(method, @a).should == expected
51
- end
51
+ [
52
+ [[], [], true],
53
+ [[], [nil], false],
54
+ [["A"], [], false],
55
+ [["A"], ["A"], true],
56
+ [["A"], ["B"], false],
57
+ [%w[A B], ["A"], false],
58
+ [%w[A B C], %w[A B C], true],
59
+ [%w[C A B], %w[A B C], false],
60
+ ].each do |a, b, expected|
61
+
62
+ describe "returns #{expected.inspect}" do
63
+ before do
64
+ @a = Hamster::Tuple.new(*a)
65
+ @b = Hamster::Tuple.new(*b)
66
+ end
52
67
 
68
+ it "for #{a.inspect} and #{b.inspect}" do
69
+ @a.eql?(@b).should == expected
53
70
  end
54
71
 
72
+ it "for #{b.inspect} and #{a.inspect}" do
73
+ @b.eql?(@a).should == expected
74
+ end
55
75
  end
56
-
57
76
  end
58
-
59
77
  end
60
-
61
- end
78
+ end