hamster 0.1.19 → 0.1.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. data/History.rdoc +10 -0
  2. data/README.rdoc +1 -1
  3. data/lib/hamster/list.rb +19 -1
  4. data/lib/hamster/stack.rb +4 -0
  5. data/lib/hamster/version.rb +1 -1
  6. data/spec/hamster/hash/all_spec.rb +5 -5
  7. data/spec/hamster/hash/any_spec.rb +5 -5
  8. data/spec/hamster/hash/eql_spec.rb +2 -2
  9. data/spec/hamster/hash/has_key_spec.rb +2 -2
  10. data/spec/hamster/hash/none_spec.rb +5 -5
  11. data/spec/hamster/list/all_spec.rb +44 -12
  12. data/spec/hamster/list/any_spec.rb +8 -8
  13. data/spec/hamster/list/append_spec.rb +2 -2
  14. data/spec/hamster/list/break_spec.rb +183 -0
  15. data/spec/hamster/list/cadr_spec.rb +7 -2
  16. data/spec/hamster/list/clear_spec.rb +36 -0
  17. data/spec/hamster/list/copying_spec.rb +3 -2
  18. data/spec/hamster/list/cycle_spec.rb +20 -7
  19. data/spec/hamster/list/drop_spec.rb +10 -5
  20. data/spec/hamster/list/drop_while_spec.rb +17 -5
  21. data/spec/hamster/list/each_spec.rb +15 -8
  22. data/spec/hamster/list/empty_spec.rb +2 -2
  23. data/spec/hamster/list/eql_spec.rb +6 -6
  24. data/spec/hamster/list/filter_spec.rb +14 -6
  25. data/spec/hamster/list/find_spec.rb +2 -2
  26. data/spec/hamster/list/grep_spec.rb +10 -5
  27. data/spec/hamster/list/head_spec.rb +16 -12
  28. data/spec/hamster/list/include_spec.rb +2 -2
  29. data/spec/hamster/list/inspect_spec.rb +2 -2
  30. data/spec/hamster/list/map_spec.rb +18 -6
  31. data/spec/hamster/list/maximum_spec.rb +2 -2
  32. data/spec/hamster/list/minimum_spec.rb +2 -2
  33. data/spec/hamster/list/none_spec.rb +8 -8
  34. data/spec/hamster/list/one_spec.rb +9 -9
  35. data/spec/hamster/list/partition_spec.rb +87 -39
  36. data/spec/hamster/list/reduce_spec.rb +2 -2
  37. data/spec/hamster/list/reject_spec.rb +14 -6
  38. data/spec/hamster/list/reverse_spec.rb +9 -4
  39. data/spec/hamster/list/size_spec.rb +2 -2
  40. data/spec/hamster/list/span_spec.rb +183 -0
  41. data/spec/hamster/list/split_at_spec.rb +68 -17
  42. data/spec/hamster/list/tail_spec.rb +2 -2
  43. data/spec/hamster/list/take_spec.rb +10 -5
  44. data/spec/hamster/list/take_while_spec.rb +15 -6
  45. data/spec/hamster/list/to_a_spec.rb +2 -2
  46. data/spec/hamster/list/to_ary_spec.rb +3 -3
  47. data/spec/hamster/list/to_list_spec.rb +3 -2
  48. data/spec/hamster/list/zip_spec.rb +16 -7
  49. data/spec/hamster/set/all_spec.rb +6 -6
  50. data/spec/hamster/set/any_spec.rb +6 -6
  51. data/spec/hamster/set/eql_spec.rb +2 -2
  52. data/spec/hamster/set/include_spec.rb +2 -2
  53. data/spec/hamster/set/none_spec.rb +6 -6
  54. data/spec/hamster/set/to_list.rb +1 -1
  55. data/spec/hamster/stack/clear_spec.rb +36 -0
  56. data/spec/hamster/stack/eql_spec.rb +2 -2
  57. data/spec/hamster/stack/pop_spec.rb +2 -2
  58. data/spec/hamster/trie/remove_spec.rb +3 -3
  59. data/spec/spec_helper.rb +2 -0
  60. metadata +9 -89
  61. data/lib/hamster/core_ext/enumerable.rbc +0 -481
  62. data/lib/hamster/core_ext/io.rbc +0 -604
  63. data/lib/hamster/hash.rbc +0 -3117
  64. data/lib/hamster/list.rbc +0 -7274
  65. data/lib/hamster/set.rbc +0 -3152
  66. data/lib/hamster/stack.rbc +0 -1358
  67. data/lib/hamster/trie.rbc +0 -3416
  68. data/spec/hamster/core_ext/enumerable_spec.rbc +0 -747
  69. data/spec/hamster/core_ext/io_spec.rbc +0 -409
  70. data/spec/hamster/hash/all_spec.rbc +0 -1214
  71. data/spec/hamster/hash/any_spec.rbc +0 -1495
  72. data/spec/hamster/hash/construction_spec.rbc +0 -742
  73. data/spec/hamster/hash/copying_spec.rbc +0 -519
  74. data/spec/hamster/hash/each_spec.rbc +0 -908
  75. data/spec/hamster/hash/empty_spec.rbc +0 -517
  76. data/spec/hamster/hash/eql_spec.rbc +0 -1702
  77. data/spec/hamster/hash/filter_spec.rbc +0 -1433
  78. data/spec/hamster/hash/get_spec.rbc +0 -791
  79. data/spec/hamster/hash/has_key_spec.rbc +0 -719
  80. data/spec/hamster/hash/map_spec.rbc +0 -1454
  81. data/spec/hamster/hash/none_spec.rbc +0 -1399
  82. data/spec/hamster/hash/put_spec.rbc +0 -1334
  83. data/spec/hamster/hash/reduce_spec.rbc +0 -1234
  84. data/spec/hamster/hash/reject_spec.rbc +0 -1445
  85. data/spec/hamster/hash/remove_spec.rbc +0 -1135
  86. data/spec/hamster/hash/size_spec.rbc +0 -596
  87. data/spec/hamster/list/all_spec.rbc +0 -1760
  88. data/spec/hamster/list/any_spec.rbc +0 -1888
  89. data/spec/hamster/list/append_spec.rbc +0 -1555
  90. data/spec/hamster/list/cadr_spec.rbc +0 -855
  91. data/spec/hamster/list/cons_spec.rbc +0 -848
  92. data/spec/hamster/list/construction_spec.rbc +0 -1732
  93. data/spec/hamster/list/copying_spec.rbc +0 -555
  94. data/spec/hamster/list/drop_spec.rbc +0 -1081
  95. data/spec/hamster/list/drop_while_spec.rbc +0 -1286
  96. data/spec/hamster/list/each_spec.rbc +0 -1365
  97. data/spec/hamster/list/empty_spec.rbc +0 -571
  98. data/spec/hamster/list/eql_spec.rbc +0 -1819
  99. data/spec/hamster/list/filter_spec.rbc +0 -1595
  100. data/spec/hamster/list/find_spec.rbc +0 -1456
  101. data/spec/hamster/list/head_spec.rbc +0 -575
  102. data/spec/hamster/list/include_spec.rbc +0 -1173
  103. data/spec/hamster/list/inspect_spec.rbc +0 -995
  104. data/spec/hamster/list/map_spec.rbc +0 -1545
  105. data/spec/hamster/list/none_spec.rbc +0 -1788
  106. data/spec/hamster/list/partition_spec.rbc +0 -2715
  107. data/spec/hamster/list/reduce_spec.rbc +0 -2081
  108. data/spec/hamster/list/reject_spec.rbc +0 -1590
  109. data/spec/hamster/list/reverse_spec.rbc +0 -1061
  110. data/spec/hamster/list/size_spec.rbc +0 -1063
  111. data/spec/hamster/list/tail_spec.rbc +0 -595
  112. data/spec/hamster/list/take_spec.rbc +0 -1075
  113. data/spec/hamster/list/take_while_spec.rbc +0 -1446
  114. data/spec/hamster/list/to_a_spec.rbc +0 -961
  115. data/spec/hamster/list/to_ary_spec.rbc +0 -1080
  116. data/spec/hamster/set/add_spec.rbc +0 -1039
  117. data/spec/hamster/set/all_spec.rbc +0 -1316
  118. data/spec/hamster/set/any_spec.rbc +0 -1444
  119. data/spec/hamster/set/construction_spec.rbc +0 -422
  120. data/spec/hamster/set/copying_spec.rbc +0 -469
  121. data/spec/hamster/set/each_spec.rbc +0 -820
  122. data/spec/hamster/set/empty_spec.rbc +0 -452
  123. data/spec/hamster/set/eql_spec.rbc +0 -1309
  124. data/spec/hamster/set/filter_spec.rbc +0 -1272
  125. data/spec/hamster/set/include_spec.rbc +0 -657
  126. data/spec/hamster/set/map_spec.rbc +0 -1285
  127. data/spec/hamster/set/none_spec.rbc +0 -1344
  128. data/spec/hamster/set/reduce_spec.rbc +0 -1177
  129. data/spec/hamster/set/reject_spec.rbc +0 -1273
  130. data/spec/hamster/set/remove_spec.rbc +0 -947
  131. data/spec/hamster/set/size_spec.rbc +0 -531
  132. data/spec/hamster/set/to_a_spec.rbc +0 -559
  133. data/spec/hamster/stack/construction_spec.rbc +0 -862
  134. data/spec/hamster/stack/copying_spec.rbc +0 -555
  135. data/spec/hamster/stack/empty_spec.rbc +0 -571
  136. data/spec/hamster/stack/eql_spec.rbc +0 -1281
  137. data/spec/hamster/stack/inspect_spec.rbc +0 -586
  138. data/spec/hamster/stack/pop_spec.rbc +0 -1099
  139. data/spec/hamster/stack/push_spec.rbc +0 -848
  140. data/spec/hamster/stack/size_spec.rbc +0 -650
  141. data/spec/hamster/stack/top_spec.rbc +0 -676
  142. data/spec/hamster/trie/remove_spec.rbc +0 -40
  143. data/spec/spec_helper.rbc +0 -163
  144. data/tasks/spec.rbc +0 -201
@@ -25,11 +25,16 @@ describe Hamster::List do
25
25
  describe "on #{values.inspect}" do
26
26
 
27
27
  before do
28
- @list = Hamster.list(*values)
28
+ @original = Hamster.list(*values)
29
+ @result = @original.send(method)
30
+ end
31
+
32
+ it "preserves the original" do
33
+ @original.should == Hamster.list(*values)
29
34
  end
30
35
 
31
36
  it "returns #{expected.inspect}" do
32
- @list.send(method).should == expected
37
+ @result.should == expected
33
38
  end
34
39
 
35
40
  end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ require 'hamster/list'
4
+
5
+ describe Hamster do
6
+
7
+ describe "#clear" do
8
+
9
+ [
10
+ [],
11
+ ["A"],
12
+ ["A", "B", "C"],
13
+ ].each do |values|
14
+
15
+ describe "on #{values}" do
16
+
17
+ before do
18
+ @original = Hamster.list(*values)
19
+ @result = @original.clear
20
+ end
21
+
22
+ it "preserves the original" do
23
+ @original.should == Hamster.list(*values)
24
+ end
25
+
26
+ it "returns an empty list" do
27
+ @result.should be_empty
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -15,11 +15,12 @@ describe Hamster::List do
15
15
  describe "on #{values.inspect}" do
16
16
 
17
17
  before do
18
- @list = Hamster.list(*values)
18
+ @original = Hamster.list(*values)
19
+ @result = @original.send(method)
19
20
  end
20
21
 
21
22
  it "returns self" do
22
- @list.send(method).should equal(@list)
23
+ @result.should equal(@original)
23
24
  end
24
25
 
25
26
  end
@@ -9,11 +9,11 @@ describe Hamster do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
@@ -22,14 +22,22 @@ describe Hamster do
22
22
 
23
23
  end
24
24
 
25
+ it "is lazy" do
26
+ count = 0
27
+ list = Hamster.stream { count += 1 }
28
+ list.cycle
29
+ count.should <= 1
30
+ end
31
+
25
32
  describe "with an empty list" do
26
33
 
27
34
  before do
28
- @list = Hamster.list.cycle
35
+ @original = Hamster.list
36
+ @result = @original.cycle
29
37
  end
30
38
 
31
- it "returns the empty list" do
32
- @list.should equal(Hamster.list)
39
+ it "returns self" do
40
+ @result.should equal(@original)
33
41
  end
34
42
 
35
43
  end
@@ -37,11 +45,16 @@ describe Hamster do
37
45
  describe "with a non-empty list" do
38
46
 
39
47
  before do
40
- @list = Hamster.list("A", "B", "C").cycle
48
+ @original = Hamster.list("A", "B", "C")
49
+ @result = @original.cycle
50
+ end
51
+
52
+ it "preserves the original" do
53
+ @original.should == Hamster.list("A", "B", "C")
41
54
  end
42
55
 
43
56
  it "infinitely cycles through all values" do
44
- @list.take(7).should == Hamster.list("A", "B", "C", "A", "B", "C", "A")
57
+ @result.take(7).should == Hamster.list("A", "B", "C", "A", "B", "C", "A")
45
58
  end
46
59
 
47
60
  end
@@ -9,15 +9,15 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
20
- @list.drop(10000)
20
+ @list.drop(STACK_OVERFLOW_DEPTH)
21
21
  end
22
22
 
23
23
  end
@@ -33,11 +33,16 @@ describe Hamster::List do
33
33
  describe "#{number} from #{values.inspect}" do
34
34
 
35
35
  before do
36
- @list = Hamster.list(*values)
36
+ @original = Hamster.list(*values)
37
+ @result = @original.drop(number)
38
+ end
39
+
40
+ it "preserves the original" do
41
+ @original.should == Hamster.list(*values)
37
42
  end
38
43
 
39
44
  it "returns #{expected.inspect}" do
40
- @list.drop(number).should == Hamster.list(*expected)
45
+ @result.should == Hamster.list(*expected)
41
46
  end
42
47
 
43
48
  end
@@ -9,11 +9,11 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
@@ -31,21 +31,33 @@ describe Hamster::List do
31
31
  describe "on #{values.inspect}" do
32
32
 
33
33
  before do
34
- @list = Hamster.list(*values)
34
+ @original = Hamster.list(*values)
35
35
  end
36
36
 
37
37
  describe "with a block" do
38
38
 
39
+ before do
40
+ @result = @original.drop_while { |item| item < "C" }
41
+ end
42
+
43
+ it "preserves the original" do
44
+ @original.should == Hamster.list(*values)
45
+ end
46
+
39
47
  it "returns #{expected.inspect}" do
40
- @list.drop_while { |item| item < "C" }.should == Hamster.list(*expected)
48
+ @result.should == Hamster.list(*expected)
41
49
  end
42
50
 
43
51
  end
44
52
 
45
53
  describe "without a block" do
46
54
 
55
+ before do
56
+ @result = @original.drop_while
57
+ end
58
+
47
59
  it "returns self" do
48
- @list.drop_while.should equal(@list)
60
+ @result.should equal(@original)
49
61
  end
50
62
 
51
63
  end
@@ -9,11 +9,11 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
@@ -31,27 +31,34 @@ describe Hamster::List do
31
31
  describe "on #{values.inspect}" do
32
32
 
33
33
  before do
34
- @list = Hamster.list(*values)
34
+ @original = Hamster.list(*values)
35
35
  end
36
36
 
37
37
  describe "with a block" do
38
38
 
39
+ before do
40
+ @items = []
41
+ @result = @original.each { |value| @items << value }
42
+ end
43
+
39
44
  it "iterates over the items in order" do
40
- items = []
41
- @list.each { |value| items << value }
42
- items.should == values
45
+ @items.should == values
43
46
  end
44
47
 
45
48
  it "returns nil" do
46
- @list.each {}.should be_nil
49
+ @result.should be_nil
47
50
  end
48
51
 
49
52
  end
50
53
 
51
54
  describe "without a block" do
52
55
 
56
+ before do
57
+ @result = @original.each
58
+ end
59
+
53
60
  it "returns self" do
54
- @list.each.should equal(@list)
61
+ @result.should equal(@original)
55
62
  end
56
63
 
57
64
  end
@@ -17,11 +17,11 @@ describe Hamster::List do
17
17
  describe "on #{values.inspect}" do
18
18
 
19
19
  before do
20
- @list = Hamster.list(*values)
20
+ @result = Hamster.list(*values).send(method)
21
21
  end
22
22
 
23
23
  it "returns #{expected.inspect}" do
24
- @list.send(method).should == expected
24
+ @result.should == expected
25
25
  end
26
26
 
27
27
  end
@@ -11,13 +11,13 @@ describe Hamster::List do
11
11
  describe "doesn't run out of stack space on a really big" do
12
12
 
13
13
  it "stream" do
14
- @a = Hamster.interval(0, 10000)
15
- @b = Hamster.interval(0, 10000)
14
+ @a = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
+ @b = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
16
16
  end
17
17
 
18
18
  it "list" do
19
- @a = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
20
- @b = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
19
+ @a = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
20
+ @b = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
21
21
  end
22
22
 
23
23
  after do
@@ -33,11 +33,11 @@ describe Hamster::List do
33
33
  end
34
34
 
35
35
  it "an array" do
36
- @list.send(method, ["A", "B", "C"]).should be_false
36
+ @list.send(method, ["A", "B", "C"]).should == false
37
37
  end
38
38
 
39
39
  it "an aribtrary object" do
40
- @list.send(method, Object.new).should be_false
40
+ @list.send(method, Object.new).should == false
41
41
  end
42
42
 
43
43
  end
@@ -11,11 +11,11 @@ describe Hamster::List do
11
11
  describe "doesn't run out of stack space on a really big" do
12
12
 
13
13
  it "stream" do
14
- @list = Hamster.interval(0, 10000)
14
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
15
  end
16
16
 
17
17
  it "list" do
18
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
18
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
19
19
  end
20
20
 
21
21
  after do
@@ -35,18 +35,26 @@ describe Hamster::List do
35
35
  describe "on #{values.inspect}" do
36
36
 
37
37
  before do
38
- @list = Hamster.list(*values)
38
+ @original = Hamster.list(*values)
39
39
  end
40
40
 
41
41
  describe "with a block" do
42
42
 
43
+ before do
44
+ @result = @original.send(method) { |item| item == item.upcase }
45
+ end
46
+
47
+ it "preserves the original" do
48
+ @original.should == Hamster.list(*values)
49
+ end
50
+
43
51
  it "returns #{expected.inspect}" do
44
- @list.send(method) { |item| item == item.upcase }.should == Hamster.list(*expected)
52
+ @result.should == Hamster.list(*expected)
45
53
  end
46
54
 
47
55
  it "is lazy" do
48
56
  count = 0
49
- @list.send(method) { |item| count += 1; true }
57
+ @original.send(method) { |item| count += 1; true }
50
58
  count.should <= 1
51
59
  end
52
60
 
@@ -55,7 +63,7 @@ describe Hamster::List do
55
63
  describe "without a block" do
56
64
 
57
65
  it "returns self" do
58
- @list.send(method).should equal(@list)
66
+ @original.send(method).should equal(@original)
59
67
  end
60
68
 
61
69
  end
@@ -11,11 +11,11 @@ describe Hamster::List do
11
11
  describe "doesn't run out of stack space on a really big" do
12
12
 
13
13
  it "stream" do
14
- @list = Hamster.interval(0, 10000)
14
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
15
  end
16
16
 
17
17
  it "list" do
18
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
18
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
19
19
  end
20
20
 
21
21
  after do
@@ -9,11 +9,11 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
@@ -59,16 +59,21 @@ describe Hamster::List do
59
59
  describe "on #{values.inspect}" do
60
60
 
61
61
  before do
62
- @list = Hamster.list(*values)
62
+ @original = Hamster.list(*values)
63
+ @result = @original.grep(String) { |item| item.downcase }
64
+ end
65
+
66
+ it "preserves the original" do
67
+ @original.should == Hamster.list(*values)
63
68
  end
64
69
 
65
70
  it "returns #{expected.inspect}" do
66
- @list.grep(String) { |item| item.downcase }.should == Hamster.list(*expected)
71
+ @result.should == Hamster.list(*expected)
67
72
  end
68
73
 
69
74
  it "is lazy" do
70
75
  count = 0
71
- @list.grep(Object) { |item| count += 1; item }
76
+ @original.grep(Object) { |item| count += 1; item }
72
77
  count.should <= 1
73
78
  end
74
79
 
@@ -4,22 +4,26 @@ require 'hamster/list'
4
4
 
5
5
  describe Hamster::List do
6
6
 
7
- describe "#head" do
7
+ [:head, :first].each do |method|
8
8
 
9
- [
10
- [[], nil],
11
- [["A"], "A"],
12
- [["A", "B", "C"], "A"],
13
- ].each do |values, expected|
9
+ describe "##{method}" do
14
10
 
15
- describe "on #{values.inspect}" do
11
+ [
12
+ [[], nil],
13
+ [["A"], "A"],
14
+ [["A", "B", "C"], "A"],
15
+ ].each do |values, expected|
16
16
 
17
- before do
18
- @list = Hamster.list(*values)
19
- end
17
+ describe "on #{values.inspect}" do
18
+
19
+ before do
20
+ @list = Hamster.list(*values)
21
+ end
22
+
23
+ it "returns #{expected.inspect}" do
24
+ @list.send(method).should == expected
25
+ end
20
26
 
21
- it "returns #{expected.inspect}" do
22
- @list.head.should == expected
23
27
  end
24
28
 
25
29
  end