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/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:each_chunk, :each_slice].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "on a really big list" do
12
-
13
8
  before do
14
9
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
10
  end
@@ -17,7 +12,6 @@ describe Hamster::List do
17
12
  it "doesn't run out of stack" do
18
13
  -> { @list.send(method, 1) { |item| } }.should_not raise_error
19
14
  end
20
-
21
15
  end
22
16
 
23
17
  [
@@ -27,13 +21,11 @@ describe Hamster::List do
27
21
  ].each do |values, expected|
28
22
 
29
23
  describe "on #{values.inspect}" do
30
-
31
24
  before do
32
25
  @original = Hamster.list(*values)
33
26
  end
34
27
 
35
28
  describe "with a block" do
36
-
37
29
  before do
38
30
  @items = []
39
31
  @result = @original.send(method, 2) { |item| @items << item }
@@ -50,11 +42,9 @@ describe Hamster::List do
50
42
  it "returns nil" do
51
43
  @result.should be_nil
52
44
  end
53
-
54
45
  end
55
46
 
56
47
  describe "without a block" do
57
-
58
48
  before do
59
49
  @result = @original.send(method, 2)
60
50
  end
@@ -66,15 +56,9 @@ describe Hamster::List do
66
56
  it "returns the expected items" do
67
57
  @result.should == Hamster.list(*expected)
68
58
  end
69
-
70
59
  end
71
-
72
60
  end
73
-
74
61
  end
75
-
76
62
  end
77
-
78
63
  end
79
-
80
- end
64
+ end
@@ -1,15 +1,10 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:each, :foreach].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "on a really big list" do
12
-
13
8
  before do
14
9
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
10
  end
@@ -17,7 +12,6 @@ describe Hamster::List do
17
12
  it "doesn't run out of stack" do
18
13
  -> { @list.send(method) { |item| } }.should_not raise_error
19
14
  end
20
-
21
15
  end
22
16
 
23
17
  [
@@ -27,13 +21,11 @@ describe Hamster::List do
27
21
  ].each do |values|
28
22
 
29
23
  describe "on #{values.inspect}" do
30
-
31
24
  before do
32
25
  @original = Hamster.list(*values)
33
26
  end
34
27
 
35
28
  describe "with a block" do
36
-
37
29
  before do
38
30
  @items = []
39
31
  @result = @original.send(method) { |item| @items << item }
@@ -46,11 +38,9 @@ describe Hamster::List do
46
38
  it "returns nil" do
47
39
  @result.should be_nil
48
40
  end
49
-
50
41
  end
51
42
 
52
43
  describe "without a block" do
53
-
54
44
  before do
55
45
  @result = @original.send(method)
56
46
  end
@@ -58,15 +48,9 @@ describe Hamster::List do
58
48
  it "returns self" do
59
49
  @result.should equal(@original)
60
50
  end
61
-
62
51
  end
63
-
64
52
  end
65
-
66
53
  end
67
-
68
54
  end
69
-
70
55
  end
71
-
72
- end
56
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  describe "#each_with_index" do
8
-
9
6
  describe "with no block" do
10
-
11
7
  before do
12
8
  @list = Hamster.list("A", "B", "C")
13
9
  @result = @list.each_with_index
@@ -16,11 +12,9 @@ describe Hamster::List do
16
12
  it "returns self" do
17
13
  @result.should equal(@list)
18
14
  end
19
-
20
15
  end
21
16
 
22
17
  describe "with a block" do
23
-
24
18
  before do
25
19
  @list = Hamster.interval(1, 1025)
26
20
  @pairs = []
@@ -34,9 +28,6 @@ describe Hamster::List do
34
28
  it "iterates over the items in order" do
35
29
  @pairs.should == (1..@list.size).zip(0..@list.size.pred)
36
30
  end
37
-
38
31
  end
39
-
40
32
  end
41
-
42
- end
33
+ end
@@ -1,15 +1,10 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:elem_index, :index].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "on a really big list" do
12
-
13
8
  before do
14
9
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
10
  end
@@ -17,7 +12,6 @@ describe Hamster::List do
17
12
  it "doesn't run out of stack" do
18
13
  -> { @list.send(method, nil) }.should_not raise_error
19
14
  end
20
-
21
15
  end
22
16
 
23
17
  [
@@ -37,7 +31,6 @@ describe Hamster::List do
37
31
  ].each do |values, item, expected|
38
32
 
39
33
  describe "looking for #{item.inspect} in #{values.inspect}" do
40
-
41
34
  before do
42
35
  list = Hamster.list(*values)
43
36
  @result = list.send(method, item)
@@ -46,13 +39,8 @@ describe Hamster::List do
46
39
  it "returns #{expected.inspect}" do
47
40
  @result.should == expected
48
41
  end
49
-
50
42
  end
51
-
52
43
  end
53
-
54
44
  end
55
-
56
45
  end
57
-
58
- end
46
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:elem_indices, :indices].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  it "is lazy" do
12
8
  -> { Hamster.stream { fail }.send(method, nil) }.should_not raise_error
13
9
  end
@@ -24,7 +20,6 @@ describe Hamster::List do
24
20
  ].each do |values, item, expected|
25
21
 
26
22
  describe "looking for #{item.inspect} in #{values.inspect}" do
27
-
28
23
  before do
29
24
  list = Hamster.list(*values)
30
25
  @result = list.send(method, item)
@@ -33,13 +28,8 @@ describe Hamster::List do
33
28
  it "returns #{expected.inspect}" do
34
29
  @result.should == Hamster.list(*expected)
35
30
  end
36
-
37
31
  end
38
-
39
32
  end
40
-
41
33
  end
42
-
43
34
  end
44
-
45
- end
35
+ end
@@ -1,15 +1,10 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:empty?, :null?].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "on a really big list" do
12
-
13
8
  before do
14
9
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
10
  end
@@ -17,7 +12,6 @@ describe Hamster::List do
17
12
  it "doesn't run out of stack" do
18
13
  -> { @list.filter(&:nil?).empty? }.should_not raise_error
19
14
  end
20
-
21
15
  end
22
16
 
23
17
  [
@@ -27,7 +21,6 @@ describe Hamster::List do
27
21
  ].each do |values, expected|
28
22
 
29
23
  describe "on #{values.inspect}" do
30
-
31
24
  before do
32
25
  @result = Hamster.list(*values).send(method)
33
26
  end
@@ -35,13 +28,8 @@ describe Hamster::List do
35
28
  it "returns #{expected.inspect}" do
36
29
  @result.should == expected
37
30
  end
38
-
39
31
  end
40
-
41
32
  end
42
-
43
33
  end
44
-
45
34
  end
46
-
47
- end
35
+ end
@@ -1,78 +1,68 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
5
+ describe "#eql?" do
6
+ describe "on a really big list" do
6
7
 
7
- [:eql?, :==].each do |method|
8
-
9
- describe "##{method}" do
10
-
11
- describe "on a really big list" do
12
-
13
- before do
14
- @a = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
- @b = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
16
- end
17
-
18
- it "doesn't run out of stack" do
19
- -> { @a.send(method, @b) }.should_not raise_error
20
- end
21
-
8
+ before do
9
+ @a = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
10
+ @b = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
22
11
  end
23
12
 
24
- describe "returns false when comparing with" do
25
-
26
- before do
27
- @list = Hamster.list("A", "B", "C")
28
- end
29
-
30
- it "an array with the same contents" do
31
- @list.send(method, %w[A B C]).should == false
32
- end
33
-
34
- it "an aribtrary object" do
35
- @list.send(method, Object.new).should == false
36
- end
37
-
13
+ it "doesn't run out of stack" do
14
+ -> { @a.eql?(@b) }.should_not raise_error
38
15
  end
16
+ end
17
+ end
39
18
 
40
- it "returns false when comparing an empty list with an empty array" do
41
- Hamster.list.send(method, []).should == false
42
- end
43
-
44
- [
45
- [[], [], true],
46
- [[], [nil], false],
47
- [["A"], [], false],
48
- [["A"], ["A"], true],
49
- [["A"], ["B"], false],
50
- [%w[A B], ["A"], false],
51
- [%w[A B C], %w[A B C], true],
52
- [%w[C A B], %w[A B C], false],
53
- ].each do |a, b, expected|
54
-
55
- describe "returns #{expected.inspect}" do
56
-
57
- before do
58
- @a = Hamster.list(*a)
59
- @b = Hamster.list(*b)
60
- end
61
-
62
- it "for lists #{a.inspect} and #{b.inspect}" do
63
- @a.send(method, @b).should == expected
64
- end
65
-
66
- it "for lists #{b.inspect} and #{a.inspect}" do
67
- @b.send(method, @a).should == expected
68
- end
19
+ shared_examples 'equal using eql?' do |a, b|
20
+ specify "#{a.inspect} should eql? #{b.inspect}" do
21
+ expect(a).to eql b
22
+ end
69
23
 
70
- end
24
+ specify "#{a.inspect} should == #{b.inspect}" do
25
+ expect(a).to eq b
26
+ end
27
+ end
71
28
 
72
- end
29
+ shared_examples 'not equal using eql?' do |a, b|
30
+ specify "#{a.inspect} should not eql? #{b.inspect}" do
31
+ expect(a).to_not eql b
32
+ end
33
+ end
73
34
 
35
+ shared_examples 'equal using ==' do |a, b|
36
+ specify "#{a.inspect} should == #{b.inspect}" do
37
+ expect(a).to eq b
74
38
  end
39
+ end
75
40
 
41
+ shared_examples 'not equal using ==' do |a, b|
42
+ specify "#{a.inspect} should not == #{b.inspect}" do
43
+ expect(a).to_not eq b
44
+ end
76
45
  end
77
46
 
78
- end
47
+ include_examples 'equal using ==' , Hamster.list("A", "B", "C"), %w[A B C]
48
+ include_examples 'not equal using eql?' , Hamster.list("A", "B", "C"), %w[A B C]
49
+ include_examples 'not equal using ==' , Hamster.list("A", "B", "C"), Object.new
50
+ include_examples 'not equal using eql?' , Hamster.list("A", "B", "C"), Object.new
51
+ include_examples 'equal using ==' , Hamster.list, []
52
+ include_examples 'not equal using eql?' , Hamster.list, []
53
+
54
+ include_examples 'equal using eql?' , Hamster.list, Hamster.list
55
+ include_examples 'not equal using eql?' , Hamster.list, Hamster.list(nil)
56
+ include_examples 'not equal using eql?' , Hamster.list("A"), Hamster.list
57
+ include_examples 'equal using eql?' , Hamster.list("A"), Hamster.list("A")
58
+ include_examples 'not equal using eql?' , Hamster.list("A"), Hamster.list("B")
59
+ include_examples 'not equal using eql?' , Hamster.list(%w[A B]), Hamster.list("A")
60
+ include_examples 'equal using eql?' , Hamster.list(*%w[A B C]), Hamster.list(*%w[A B C])
61
+ include_examples 'not equal using eql?' , Hamster.list(*%w[C A B]), Hamster.list(*%w[A B C])
62
+
63
+ include_examples 'equal using ==' , Hamster.list('A'), ['A']
64
+ include_examples 'equal using ==' , ['A'], Hamster.list('A')
65
+
66
+ include_examples 'not equal using eql?' , Hamster.list('A'), ['A']
67
+ include_examples 'not equal using eql?' , ['A'], Hamster.list('A')
68
+ end
@@ -1,15 +1,10 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:find_index, :index].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "on a really big list" do
12
-
13
8
  before do
14
9
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
10
  end
@@ -17,7 +12,6 @@ describe Hamster::List do
17
12
  it "doesn't run out of stack" do
18
13
  -> { @list.send(method) { |item| false } }.should_not raise_error
19
14
  end
20
-
21
15
  end
22
16
 
23
17
  [
@@ -37,7 +31,6 @@ describe Hamster::List do
37
31
  ].each do |values, item, expected|
38
32
 
39
33
  describe "looking for #{item.inspect} in #{values.inspect}" do
40
-
41
34
  before do
42
35
  list = Hamster.list(*values)
43
36
  @result = list.send(method) { |x| x == item }
@@ -46,13 +39,8 @@ describe Hamster::List do
46
39
  it "returns #{expected.inspect}" do
47
40
  @result.should == expected
48
41
  end
49
-
50
42
  end
51
-
52
43
  end
53
-
54
44
  end
55
-
56
45
  end
57
-
58
- end
46
+ end