summaryrefslogtreecommitdiff
path: root/spec/rubyspec/core/enumerable
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-09-20 20:18:52 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-09-20 20:18:52 +0000
commit1d15d5f08032acf1b7bceacbb450d617ff6e0931 (patch)
treea3785a79899302bc149e4a6e72f624ac27dc1f10 /spec/rubyspec/core/enumerable
parent75bfc6440d595bf339007f4fb280fd4d743e89c1 (diff)
Move spec/rubyspec to spec/ruby for consistency
* Other ruby implementations use the spec/ruby directory. [Misc #13792] [ruby-core:82287] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/rubyspec/core/enumerable')
-rw-r--r--spec/rubyspec/core/enumerable/all_spec.rb121
-rw-r--r--spec/rubyspec/core/enumerable/any_spec.rb141
-rw-r--r--spec/rubyspec/core/enumerable/chunk_spec.rb100
-rw-r--r--spec/rubyspec/core/enumerable/chunk_while_spec.rb44
-rw-r--r--spec/rubyspec/core/enumerable/collect_concat_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/collect_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/count_spec.rb59
-rw-r--r--spec/rubyspec/core/enumerable/cycle_spec.rb104
-rw-r--r--spec/rubyspec/core/enumerable/detect_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/drop_spec.rb43
-rw-r--r--spec/rubyspec/core/enumerable/drop_while_spec.rb50
-rw-r--r--spec/rubyspec/core/enumerable/each_cons_spec.rb99
-rw-r--r--spec/rubyspec/core/enumerable/each_entry_spec.rb41
-rw-r--r--spec/rubyspec/core/enumerable/each_slice_spec.rb101
-rw-r--r--spec/rubyspec/core/enumerable/each_with_index_spec.rb53
-rw-r--r--spec/rubyspec/core/enumerable/each_with_object_spec.rb41
-rw-r--r--spec/rubyspec/core/enumerable/entries_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/find_all_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/find_index_spec.rb89
-rw-r--r--spec/rubyspec/core/enumerable/find_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/first_spec.rb28
-rw-r--r--spec/rubyspec/core/enumerable/fixtures/classes.rb331
-rw-r--r--spec/rubyspec/core/enumerable/flat_map_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/grep_spec.rb52
-rw-r--r--spec/rubyspec/core/enumerable/grep_v_spec.rb43
-rw-r--r--spec/rubyspec/core/enumerable/group_by_spec.rb45
-rw-r--r--spec/rubyspec/core/enumerable/include_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/inject_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/lazy_spec.rb10
-rw-r--r--spec/rubyspec/core/enumerable/map_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/max_by_spec.rb81
-rw-r--r--spec/rubyspec/core/enumerable/max_spec.rb119
-rw-r--r--spec/rubyspec/core/enumerable/member_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/min_by_spec.rb81
-rw-r--r--spec/rubyspec/core/enumerable/min_spec.rb123
-rw-r--r--spec/rubyspec/core/enumerable/minmax_by_spec.rb44
-rw-r--r--spec/rubyspec/core/enumerable/minmax_spec.rb44
-rw-r--r--spec/rubyspec/core/enumerable/none_spec.rb57
-rw-r--r--spec/rubyspec/core/enumerable/one_spec.rb49
-rw-r--r--spec/rubyspec/core/enumerable/partition_spec.rb20
-rw-r--r--spec/rubyspec/core/enumerable/reduce_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/reject_spec.rb25
-rw-r--r--spec/rubyspec/core/enumerable/reverse_each_spec.rb26
-rw-r--r--spec/rubyspec/core/enumerable/select_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/shared/collect.rb32
-rw-r--r--spec/rubyspec/core/enumerable/shared/collect_concat.rb54
-rw-r--r--spec/rubyspec/core/enumerable/shared/entries.rb24
-rw-r--r--spec/rubyspec/core/enumerable/shared/enumerable_enumeratorized.rb33
-rw-r--r--spec/rubyspec/core/enumerable/shared/enumeratorized.rb42
-rw-r--r--spec/rubyspec/core/enumerable/shared/find.rb73
-rw-r--r--spec/rubyspec/core/enumerable/shared/find_all.rb31
-rw-r--r--spec/rubyspec/core/enumerable/shared/include.rb34
-rw-r--r--spec/rubyspec/core/enumerable/shared/inject.rb69
-rw-r--r--spec/rubyspec/core/enumerable/shared/take.rb63
-rw-r--r--spec/rubyspec/core/enumerable/slice_after_spec.rb61
-rw-r--r--spec/rubyspec/core/enumerable/slice_before_spec.rb87
-rw-r--r--spec/rubyspec/core/enumerable/slice_when_spec.rb54
-rw-r--r--spec/rubyspec/core/enumerable/sort_by_spec.rb36
-rw-r--r--spec/rubyspec/core/enumerable/sort_spec.rb54
-rw-r--r--spec/rubyspec/core/enumerable/sum_spec.rb30
-rw-r--r--spec/rubyspec/core/enumerable/take_spec.rb13
-rw-r--r--spec/rubyspec/core/enumerable/take_while_spec.rb51
-rw-r--r--spec/rubyspec/core/enumerable/to_a_spec.rb7
-rw-r--r--spec/rubyspec/core/enumerable/to_h_spec.rb46
-rw-r--r--spec/rubyspec/core/enumerable/uniq_spec.rb29
-rw-r--r--spec/rubyspec/core/enumerable/zip_spec.rb42
66 files changed, 0 insertions, 3320 deletions
diff --git a/spec/rubyspec/core/enumerable/all_spec.rb b/spec/rubyspec/core/enumerable/all_spec.rb
deleted file mode 100644
index bfde584260..0000000000
--- a/spec/rubyspec/core/enumerable/all_spec.rb
+++ /dev/null
@@ -1,121 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#all?" do
-
- before :each do
- @enum = EnumerableSpecs::Numerous.new
- @empty = EnumerableSpecs::Empty.new()
- @enum1 = [0, 1, 2, -1]
- @enum2 = [nil, false, true]
- end
-
- it "always returns true on empty enumeration" do
- @empty.all?.should == true
- @empty.all? { nil }.should == true
-
- [].all?.should == true
- [].all? { false }.should == true
-
- {}.all?.should == true
- {}.all? { nil }.should == true
- end
-
- it "does not hide exceptions out of #each" do
- lambda {
- EnumerableSpecs::ThrowingEach.new.all?
- }.should raise_error(RuntimeError)
-
- lambda {
- EnumerableSpecs::ThrowingEach.new.all? { false }
- }.should raise_error(RuntimeError)
- end
-
- describe "with no block" do
- it "returns true if no elements are false or nil" do
- @enum.all?.should == true
- @enum1.all?.should == true
- @enum2.all?.should == false
-
- EnumerableSpecs::Numerous.new('a','b','c').all?.should == true
- EnumerableSpecs::Numerous.new(0, "x", true).all?.should == true
- end
-
- it "returns false if there are false or nil elements" do
- EnumerableSpecs::Numerous.new(false).all?.should == false
- EnumerableSpecs::Numerous.new(false, false).all?.should == false
-
- EnumerableSpecs::Numerous.new(nil).all?.should == false
- EnumerableSpecs::Numerous.new(nil, nil).all?.should == false
-
- EnumerableSpecs::Numerous.new(1, nil, 2).all?.should == false
- EnumerableSpecs::Numerous.new(0, "x", false, true).all?.should == false
- @enum2.all?.should == false
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMultiWithFalse.new
- multi.all?.should be_true
- end
-
- end
-
- describe "with block" do
- it "returns true if the block never returns false or nil" do
- @enum.all? { true }.should == true
- @enum1.all?{ |o| o < 5 }.should == true
- @enum1.all?{ |o| 5 }.should == true
- end
-
- it "returns false if the block ever returns false or nil" do
- @enum.all? { false }.should == false
- @enum.all? { nil }.should == false
- @enum1.all?{ |o| o > 2 }.should == false
-
- EnumerableSpecs::Numerous.new.all? { |i| i > 5 }.should == false
- EnumerableSpecs::Numerous.new.all? { |i| i == 3 ? nil : true }.should == false
- end
-
- it "stops iterating once the return value is determined" do
- yielded = []
- EnumerableSpecs::Numerous.new(:one, :two, :three).all? do |e|
- yielded << e
- false
- end.should == false
- yielded.should == [:one]
-
- yielded = []
- EnumerableSpecs::Numerous.new(true, true, false, true).all? do |e|
- yielded << e
- e
- end.should == false
- yielded.should == [true, true, false]
-
- yielded = []
- EnumerableSpecs::Numerous.new(1, 2, 3, 4, 5).all? do |e|
- yielded << e
- e
- end.should == true
- yielded.should == [1, 2, 3, 4, 5]
- end
-
- it "does not hide exceptions out of the block" do
- lambda {
- @enum.all? { raise "from block" }
- }.should raise_error(RuntimeError)
- end
-
- it "gathers initial args as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.all? {|e| !(Array === e) }.should be_true
- end
-
- it "yields multiple arguments when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- yielded = []
- multi.all? {|e, i| yielded << [e, i] }
- yielded.should == [[1, 2], [3, 4], [6, 7]]
- end
-
- end
-end
diff --git a/spec/rubyspec/core/enumerable/any_spec.rb b/spec/rubyspec/core/enumerable/any_spec.rb
deleted file mode 100644
index 4f7af68b07..0000000000
--- a/spec/rubyspec/core/enumerable/any_spec.rb
+++ /dev/null
@@ -1,141 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#any?" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new
- @empty = EnumerableSpecs::Empty.new()
- @enum1 = [0, 1, 2, -1]
- @enum2 = [nil, false, true]
- end
-
- it "always returns false on empty enumeration" do
- @empty.any?.should == false
- @empty.any? { nil }.should == false
-
- [].any?.should == false
- [].any? { false }.should == false
-
- {}.any?.should == false
- {}.any? { nil }.should == false
- end
-
- it "raises an ArgumentError when any arguments provided" do
- lambda { @enum.any?(Proc.new {}) }.should raise_error(ArgumentError)
- lambda { @enum.any?(nil) }.should raise_error(ArgumentError)
- lambda { @empty.any?(1) }.should raise_error(ArgumentError)
- lambda { @enum1.any?(1) {} }.should raise_error(ArgumentError)
- lambda { @enum2.any?(1, 2, 3) {} }.should raise_error(ArgumentError)
- end
-
- it "does not hide exceptions out of #each" do
- lambda {
- EnumerableSpecs::ThrowingEach.new.any?
- }.should raise_error(RuntimeError)
-
- lambda {
- EnumerableSpecs::ThrowingEach.new.any? { false }
- }.should raise_error(RuntimeError)
- end
-
- describe "with no block" do
- it "returns true if any element is not false or nil" do
- @enum.any?.should == true
- @enum1.any?.should == true
- @enum2.any?.should == true
- EnumerableSpecs::Numerous.new(true).any?.should == true
- EnumerableSpecs::Numerous.new('a','b','c').any?.should == true
- EnumerableSpecs::Numerous.new('a','b','c', nil).any?.should == true
- EnumerableSpecs::Numerous.new(1, nil, 2).any?.should == true
- EnumerableSpecs::Numerous.new(1, false).any?.should == true
- EnumerableSpecs::Numerous.new(false, nil, 1, false).any?.should == true
- EnumerableSpecs::Numerous.new(false, 0, nil).any?.should == true
- end
-
- it "returns false if all elements are false or nil" do
- EnumerableSpecs::Numerous.new(false).any?.should == false
- EnumerableSpecs::Numerous.new(false, false).any?.should == false
- EnumerableSpecs::Numerous.new(nil).any?.should == false
- EnumerableSpecs::Numerous.new(nil, nil).any?.should == false
- EnumerableSpecs::Numerous.new(nil, false, nil).any?.should == false
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMultiWithFalse.new
- multi.any?.should be_true
- end
- end
-
- describe "with block" do
- it "returns true if the block ever returns other than false or nil" do
- @enum.any? { true } == true
- @enum.any? { 0 } == true
- @enum.any? { 1 } == true
-
- @enum1.any? { Object.new } == true
- @enum1.any?{ |o| o < 1 }.should == true
- @enum1.any?{ |o| 5 }.should == true
-
- @enum2.any? { |i| i == nil }.should == true
- end
-
- it "any? should return false if the block never returns other than false or nil" do
- @enum.any? { false }.should == false
- @enum.any? { nil }.should == false
-
- @enum1.any?{ |o| o < -10 }.should == false
- @enum1.any?{ |o| nil }.should == false
-
- @enum2.any? { |i| i == :stuff }.should == false
- end
-
- it "stops iterating once the return value is determined" do
- yielded = []
- EnumerableSpecs::Numerous.new(:one, :two, :three).any? do |e|
- yielded << e
- false
- end.should == false
- yielded.should == [:one, :two, :three]
-
- yielded = []
- EnumerableSpecs::Numerous.new(true, true, false, true).any? do |e|
- yielded << e
- e
- end.should == true
- yielded.should == [true]
-
- yielded = []
- EnumerableSpecs::Numerous.new(false, nil, false, true, false).any? do |e|
- yielded << e
- e
- end.should == true
- yielded.should == [false, nil, false, true]
-
- yielded = []
- EnumerableSpecs::Numerous.new(1, 2, 3, 4, 5).any? do |e|
- yielded << e
- e
- end.should == true
- yielded.should == [1]
- end
-
- it "does not hide exceptions out of the block" do
- lambda {
- @enum.any? { raise "from block" }
- }.should raise_error(RuntimeError)
- end
-
- it "gathers initial args as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.any? {|e| e == 1 }.should be_true
- end
-
- it "yields multiple arguments when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- yielded = []
- multi.any? {|e, i| yielded << [e, i] }
- yielded.should == [[1, 2]]
- end
-
- end
-end
diff --git a/spec/rubyspec/core/enumerable/chunk_spec.rb b/spec/rubyspec/core/enumerable/chunk_spec.rb
deleted file mode 100644
index 9d658010e1..0000000000
--- a/spec/rubyspec/core/enumerable/chunk_spec.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#chunk" do
- before do
- ScratchPad.record []
- end
-
- ruby_version_is ""..."2.4" do
- it "raises an ArgumentError if called without a block" do
- lambda do
- EnumerableSpecs::Numerous.new.chunk
- end.should raise_error(ArgumentError)
- end
- end
-
- ruby_version_is "2.4" do
- it "returns an Enumerator if called without a block" do
- chunk = EnumerableSpecs::Numerous.new(1, 2, 3, 1, 2).chunk
- chunk.should be_an_instance_of(Enumerator)
- result = chunk.with_index {|elt, i| elt - i }.to_a
- result.should == [[1, [1, 2, 3]], [-2, [1, 2]]]
- end
- end
-
- it "returns an Enumerator if given a block" do
- EnumerableSpecs::Numerous.new.chunk {}.should be_an_instance_of(Enumerator)
- end
-
- it "yields the current element and the current chunk to the block" do
- e = EnumerableSpecs::Numerous.new(1, 2, 3)
- e.chunk { |x| ScratchPad << x }.to_a
- ScratchPad.recorded.should == [1, 2, 3]
- end
-
- it "returns elements of the Enumerable in an Array of Arrays, [v, ary], where 'ary' contains the consecutive elements for which the block returned the value 'v'" do
- e = EnumerableSpecs::Numerous.new(1, 2, 3, 2, 3, 2, 1)
- result = e.chunk { |x| x < 3 && 1 || 0 }.to_a
- result.should == [[1, [1, 2]], [0, [3]], [1, [2]], [0, [3]], [1, [2, 1]]]
- end
-
- it "returns elements for which the block returns :_alone in separate Arrays" do
- e = EnumerableSpecs::Numerous.new(1, 2, 3, 2, 1)
- result = e.chunk { |x| x < 2 && :_alone }.to_a
- result.should == [[:_alone, [1]], [false, [2, 3, 2]], [:_alone, [1]]]
- end
-
- it "does not return elements for which the block returns :_separator" do
- e = EnumerableSpecs::Numerous.new(1, 2, 3, 3, 2, 1)
- result = e.chunk { |x| x == 2 ? :_separator : 1 }.to_a
- result.should == [[1, [1]], [1, [3, 3]], [1, [1]]]
- end
-
- it "does not return elements for which the block returns nil" do
- e = EnumerableSpecs::Numerous.new(1, 2, 3, 2, 1)
- result = e.chunk { |x| x == 2 ? nil : 1 }.to_a
- result.should == [[1, [1]], [1, [3]], [1, [1]]]
- end
-
- it "raises a RuntimeError if the block returns a Symbol starting with an underscore other than :_alone or :_separator" do
- e = EnumerableSpecs::Numerous.new(1, 2, 3, 2, 1)
- lambda { e.chunk { |x| :_arbitrary }.to_a }.should raise_error(RuntimeError)
- end
-
- ruby_version_is ""..."2.3" do
- describe "with [initial_state]" do
- it "yields an element and an object value-equal but not identical to the object passed to #chunk" do
- e = EnumerableSpecs::Numerous.new(1)
- value = "value"
-
- e.chunk(value) do |x, v|
- x.should == 1
- v.should == value
- v.should_not equal(value)
- end.to_a
- end
-
- it "does not yield the object passed to #chunk if it is nil" do
- e = EnumerableSpecs::Numerous.new(1)
- e.chunk(nil) { |*x| ScratchPad << x }.to_a
- ScratchPad.recorded.should == [[1]]
- end
- end
- end
-
- ruby_version_is "2.3" do
- it "does not accept arguments" do
- e = EnumerableSpecs::Numerous.new(1, 2, 3)
- lambda {
- e.chunk(1) {}
- }.should raise_error(ArgumentError)
- end
- end
-
- it 'returned Enumerator size returns nil' do
- e = EnumerableSpecs::NumerousWithSize.new(1, 2, 3, 2, 1)
- enum = e.chunk { |x| true }
- enum.size.should == nil
- end
-end
diff --git a/spec/rubyspec/core/enumerable/chunk_while_spec.rb b/spec/rubyspec/core/enumerable/chunk_while_spec.rb
deleted file mode 100644
index a5cbdc3348..0000000000
--- a/spec/rubyspec/core/enumerable/chunk_while_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-ruby_version_is "2.3" do
- describe "Enumerable#chunk_while" do
- before :each do
- ary = [10, 9, 7, 6, 4, 3, 2, 1]
- @enum = EnumerableSpecs::Numerous.new(*ary)
- @result = @enum.chunk_while { |i, j| i - 1 == j }
- @enum_length = ary.length
- end
-
- context "when given a block" do
- it "returns an enumerator" do
- @result.should be_an_instance_of(Enumerator)
- end
-
- it "splits chunks between adjacent elements i and j where the block returns false" do
- @result.to_a.should == [[10, 9], [7, 6], [4, 3, 2, 1]]
- end
-
- it "calls the block for length of the receiver enumerable minus one times" do
- times_called = 0
- @enum.chunk_while do |i, j|
- times_called += 1
- i - 1 == j
- end.to_a
- times_called.should == (@enum_length - 1)
- end
- end
-
- context "when not given a block" do
- it "raises an ArgumentError" do
- lambda { @enum.chunk_while }.should raise_error(ArgumentError)
- end
- end
-
- context "on a single-element array" do
- it "ignores the block and returns an enumerator that yields [element]" do
- [1].chunk_while {|x| x.even?}.to_a.should == [[1]]
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/collect_concat_spec.rb b/spec/rubyspec/core/enumerable/collect_concat_spec.rb
deleted file mode 100644
index 6f21012060..0000000000
--- a/spec/rubyspec/core/enumerable/collect_concat_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/collect_concat', __FILE__)
-
-describe "Enumerable#collect_concat" do
- it_behaves_like(:enumerable_collect_concat , :collect_concat)
-end
diff --git a/spec/rubyspec/core/enumerable/collect_spec.rb b/spec/rubyspec/core/enumerable/collect_spec.rb
deleted file mode 100644
index a830eef9f7..0000000000
--- a/spec/rubyspec/core/enumerable/collect_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/collect', __FILE__)
-
-describe "Enumerable#collect" do
- it_behaves_like(:enumerable_collect , :collect)
-end
diff --git a/spec/rubyspec/core/enumerable/count_spec.rb b/spec/rubyspec/core/enumerable/count_spec.rb
deleted file mode 100644
index 9d1e08f3a9..0000000000
--- a/spec/rubyspec/core/enumerable/count_spec.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#count" do
- before :each do
- @elements = [1, 2, 4, 2]
- @numerous = EnumerableSpecs::Numerous.new(*@elements)
- end
-
- describe "when no argument or a block" do
- it "returns size" do
- @numerous.count.should == 4
- end
-
- describe "with a custom size method" do
- before :each do
- class << @numerous
- def size
- :any_object
- end
- end
- end
-
- it "ignores the custom size method" do
- @numerous.count.should == 4
- end
- end
- end
-
- it "counts nils if given nil as an argument" do
- EnumerableSpecs::Numerous.new(nil, nil, nil, false).count(nil).should == 3
- end
-
- it "accepts an argument for comparison using ==" do
- @numerous.count(2).should == 2
- end
-
- it "uses a block for comparison" do
- @numerous.count{|x| x%2==0 }.should == 3
- end
-
- it "ignores the block when given an argument" do
- -> {
- @numerous.count(4){|x| x%2==0 }.should == 1
- }.should complain(/given block not used/)
- end
-
- describe "when each yields multiple values" do
- it "gathers initial args as elements" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.count {|e| e == 1 }.should == 1
- end
-
- it "accepts an argument for comparison using ==" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.count([1, 2]).should == 1
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/cycle_spec.rb b/spec/rubyspec/core/enumerable/cycle_spec.rb
deleted file mode 100644
index 2f5760992d..0000000000
--- a/spec/rubyspec/core/enumerable/cycle_spec.rb
+++ /dev/null
@@ -1,104 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumeratorized', __FILE__)
-
-describe "Enumerable#cycle" do
- describe "passed no argument or nil" do
- it "loops indefinitely" do
- [[],[nil]].each do |args|
- bomb = 10
- EnumerableSpecs::Numerous.new.cycle(*args) do
- bomb -= 1
- break 42 if bomb <= 0
- end.should == 42
- bomb.should == 0
- end
- end
-
- it "returns nil if there are no elements" do
- out = EnumerableSpecs::Empty.new.cycle { break :nope }
- out.should be_nil
- end
-
- it "yields successive elements of the array repeatedly" do
- b = []
- EnumerableSpecs::Numerous.new(1,2,3).cycle do |elem|
- b << elem
- break if b.size == 7
- end
- b.should == [1,2,3,1,2,3,1]
- end
-
- it "calls each at most once" do
- enum = EnumerableSpecs::EachCounter.new(1, 2)
- enum.cycle.first(6).should == [1,2,1,2,1,2]
- enum.times_called.should == 1
- end
-
- it "yields only when necessary" do
- enum = EnumerableSpecs::EachCounter.new(10, 20, 30)
- enum.cycle { |x| break if x == 20}
- enum.times_yielded.should == 2
- end
- end
-
- describe "passed a number n as an argument" do
- it "returns nil and does nothing for non positive n" do
- EnumerableSpecs::ThrowingEach.new.cycle(0) {}.should be_nil
- EnumerableSpecs::NoEach.new.cycle(-22) {}.should be_nil
- end
-
- it "calls each at most once" do
- enum = EnumerableSpecs::EachCounter.new(1, 2)
- enum.cycle(3).to_a.should == [1,2,1,2,1,2]
- enum.times_called.should == 1
- end
-
- it "yields only when necessary" do
- enum = EnumerableSpecs::EachCounter.new(10, 20, 30)
- enum.cycle(3) { |x| break if x == 20}
- enum.times_yielded.should == 2
- end
-
- it "tries to convert n to an Integer using #to_int" do
- enum = EnumerableSpecs::Numerous.new(3, 2, 1)
- enum.cycle(2.3).to_a.should == [3, 2, 1, 3, 2, 1]
-
- obj = mock('to_int')
- obj.should_receive(:to_int).and_return(2)
- enum.cycle(obj).to_a.should == [3, 2, 1, 3, 2, 1]
- end
-
- it "raises a TypeError when the passed n can be coerced to Integer" do
- enum = EnumerableSpecs::Numerous.new
- lambda{ enum.cycle("cat"){} }.should raise_error(TypeError)
- end
-
- it "raises an ArgumentError if more arguments are passed" do
- enum = EnumerableSpecs::Numerous.new
- lambda{ enum.cycle(1, 2) {} }.should raise_error(ArgumentError)
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.cycle(2).to_a.should == [[1, 2], [3, 4, 5], [6, 7, 8, 9], [1, 2], [3, 4, 5], [6, 7, 8, 9]]
- end
- end
-
- describe "Enumerable with size" do
- before :all do
- @object = EnumerableSpecs::NumerousWithSize.new(1, 2, 3, 4)
- @empty_object = EnumerableSpecs::EmptyWithSize.new
- end
- it_should_behave_like :enumeratorized_with_cycle_size
- end
-
- describe "Enumerable with no size" do
- before :all do
- @object = EnumerableSpecs::Numerous.new(1, 2, 3, 4)
- @method = :cycle
- end
- it_should_behave_like :enumeratorized_with_unknown_size
- end
-
-end
diff --git a/spec/rubyspec/core/enumerable/detect_spec.rb b/spec/rubyspec/core/enumerable/detect_spec.rb
deleted file mode 100644
index f69e456052..0000000000
--- a/spec/rubyspec/core/enumerable/detect_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/find', __FILE__)
-
-describe "Enumerable#detect" do
- it_behaves_like(:enumerable_find , :detect)
-end
diff --git a/spec/rubyspec/core/enumerable/drop_spec.rb b/spec/rubyspec/core/enumerable/drop_spec.rb
deleted file mode 100644
index 1bcdc0ee9a..0000000000
--- a/spec/rubyspec/core/enumerable/drop_spec.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#drop" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(3, 2, 1, :go)
- end
-
- it "requires exactly one argument" do
- lambda{ @enum.drop{} }.should raise_error(ArgumentError)
- lambda{ @enum.drop(1, 2){} }.should raise_error(ArgumentError)
- end
-
- describe "passed a number n as an argument" do
- it "raises ArgumentError if n < 0" do
- lambda{ @enum.drop(-1) }.should raise_error(ArgumentError)
- end
-
- it "tries to convert n to an Integer using #to_int" do
- @enum.drop(2.3).should == [1, :go]
-
- obj = mock('to_int')
- obj.should_receive(:to_int).and_return(2)
- @enum.drop(obj).should == [1, :go]
- end
-
- it "returns [] for empty enumerables" do
- EnumerableSpecs::Empty.new.drop(0).should == []
- EnumerableSpecs::Empty.new.drop(2).should == []
- end
-
- it "returns [] if dropping all" do
- @enum.drop(5).should == []
- EnumerableSpecs::Numerous.new(3, 2, 1, :go).drop(4).should == []
- end
-
- it "raises a TypeError when the passed n can be coerced to Integer" do
- lambda{ @enum.drop("hat") }.should raise_error(TypeError)
- lambda{ @enum.drop(nil) }.should raise_error(TypeError)
- end
-
- end
-end
diff --git a/spec/rubyspec/core/enumerable/drop_while_spec.rb b/spec/rubyspec/core/enumerable/drop_while_spec.rb
deleted file mode 100644
index 731b9588e4..0000000000
--- a/spec/rubyspec/core/enumerable/drop_while_spec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#drop_while" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(3, 2, 1, :go)
- end
-
- it "returns an Enumerator if no block given" do
- @enum.drop_while.should be_an_instance_of(Enumerator)
- end
-
- it "returns no/all elements for {true/false} block" do
- @enum.drop_while{true}.should == []
- @enum.drop_while{false}.should == @enum.to_a
- end
-
- it "accepts returns other than true/false" do
- @enum.drop_while{1}.should == []
- @enum.drop_while{nil}.should == @enum.to_a
- end
-
- it "passes elements to the block until the first false" do
- a = []
- @enum.drop_while{|obj| (a << obj).size < 3}.should == [1, :go]
- a.should == [3, 2, 1]
- end
-
- it "will only go through what's needed" do
- enum = EnumerableSpecs::EachCounter.new(1,2,3,4)
- enum.drop_while { |x|
- break 42 if x == 3
- true
- }.should == 42
- enum.times_yielded.should == 3
- end
-
- it "doesn't return self when it could" do
- a = [1,2,3]
- a.drop_while{false}.should_not equal(a)
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.drop_while {|e| e != [6, 7, 8, 9] }.should == [[6, 7, 8, 9]]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_unknown_size, :drop_while
-end
diff --git a/spec/rubyspec/core/enumerable/each_cons_spec.rb b/spec/rubyspec/core/enumerable/each_cons_spec.rb
deleted file mode 100644
index 6720199bc3..0000000000
--- a/spec/rubyspec/core/enumerable/each_cons_spec.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumeratorized', __FILE__)
-
-describe "Enumerable#each_cons" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(4,3,2,1)
- @in_threes = [[4,3,2],[3,2,1]]
- end
-
- it "passes element groups to the block" do
- acc = []
- @enum.each_cons(3){|g| acc << g}.should be_nil
- acc.should == @in_threes
- end
-
- it "raises an ArgumentError if there is not a single parameter > 0" do
- lambda{ @enum.each_cons(0){} }.should raise_error(ArgumentError)
- lambda{ @enum.each_cons(-2){} }.should raise_error(ArgumentError)
- lambda{ @enum.each_cons{} }.should raise_error(ArgumentError)
- lambda{ @enum.each_cons(2,2){} }.should raise_error(ArgumentError)
- lambda{ @enum.each_cons(0) }.should raise_error(ArgumentError)
- lambda{ @enum.each_cons(-2) }.should raise_error(ArgumentError)
- lambda{ @enum.each_cons }.should raise_error(ArgumentError)
- lambda{ @enum.each_cons(2,2) }.should raise_error(ArgumentError)
- end
-
- it "tries to convert n to an Integer using #to_int" do
- acc = []
- @enum.each_cons(3.3){|g| acc << g}.should == nil
- acc.should == @in_threes
-
- obj = mock('to_int')
- obj.should_receive(:to_int).and_return(3)
- @enum.each_cons(obj){|g| break g.length}.should == 3
- end
-
- it "works when n is >= full length" do
- full = @enum.to_a
- acc = []
- @enum.each_cons(full.length){|g| acc << g}
- acc.should == [full]
- acc = []
- @enum.each_cons(full.length+1){|g| acc << g}
- acc.should == []
- end
-
- it "yields only as much as needed" do
- cnt = EnumerableSpecs::EachCounter.new(1, 2, :stop, "I said stop!", :got_it)
- cnt.each_cons(2) {|g| break 42 if g[-1] == :stop }.should == 42
- cnt.times_yielded.should == 3
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.each_cons(2).to_a.should == [[[1, 2], [3, 4, 5]], [[3, 4, 5], [6, 7, 8, 9]]]
- end
-
- describe "when no block is given" do
- it "returns an enumerator" do
- e = @enum.each_cons(3)
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == @in_threes
- end
-
- describe "Enumerable with size" do
- describe "returned Enumerator" do
- describe "size" do
- it "returns enum size - each_cons argument + 1" do
- enum = EnumerableSpecs::NumerousWithSize.new(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- enum.each_cons(10).size.should == 1
- enum.each_cons(9).size.should == 2
- enum.each_cons(3).size.should == 8
- enum.each_cons(2).size.should == 9
- enum.each_cons(1).size.should == 10
- end
-
- it "returns 0 when the argument is larger than self" do
- enum = EnumerableSpecs::NumerousWithSize.new(1, 2, 3)
- enum.each_cons(20).size.should == 0
- end
-
- it "returns 0 when the enum is empty" do
- enum = EnumerableSpecs::EmptyWithSize.new
- enum.each_cons(10).size.should == 0
- end
- end
- end
- end
-
- describe "Enumerable with no size" do
- before :all do
- @object = EnumerableSpecs::Numerous.new(1, 2, 3, 4)
- @method = [:each_cons, 8]
- end
- it_should_behave_like :enumeratorized_with_unknown_size
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/each_entry_spec.rb b/spec/rubyspec/core/enumerable/each_entry_spec.rb
deleted file mode 100644
index 05d181a998..0000000000
--- a/spec/rubyspec/core/enumerable/each_entry_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#each_entry" do
- before :each do
- ScratchPad.record []
- @enum = EnumerableSpecs::YieldsMixed.new
- @entries = [1, [2], [3,4], [5,6,7], [8,9], nil, []]
- end
-
- it "yields multiple arguments as an array" do
- acc = []
- @enum.each_entry {|g| acc << g}.should equal(@enum)
- acc.should == @entries
- end
-
- it "returns an enumerator if no block" do
- e = @enum.each_entry
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == @entries
- end
-
- it "passes through the values yielded by #each_with_index" do
- [:a, :b].each_with_index.each_entry { |x, i| ScratchPad << [x, i] }
- ScratchPad.recorded.should == [[:a, 0], [:b, 1]]
- end
-
- it "raises an ArgumentError when extra arguments" do
- lambda { @enum.each_entry("one").to_a }.should raise_error(ArgumentError)
- lambda { @enum.each_entry("one"){}.to_a }.should raise_error(ArgumentError)
- end
-
- it "passes extra arguments to #each" do
- enum = EnumerableSpecs::EachCounter.new(1, 2)
- enum.each_entry(:foo, "bar").to_a.should == [1,2]
- enum.arguments_passed.should == [:foo, "bar"]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :each_entry
-end
diff --git a/spec/rubyspec/core/enumerable/each_slice_spec.rb b/spec/rubyspec/core/enumerable/each_slice_spec.rb
deleted file mode 100644
index 62503fe206..0000000000
--- a/spec/rubyspec/core/enumerable/each_slice_spec.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumeratorized', __FILE__)
-
-describe "Enumerable#each_slice" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(7,6,5,4,3,2,1)
- @sliced = [[7,6,5],[4,3,2],[1]]
- end
-
- it "passes element groups to the block" do
- acc = []
- @enum.each_slice(3){|g| acc << g}.should be_nil
- acc.should == @sliced
- end
-
- it "raises an ArgumentError if there is not a single parameter > 0" do
- lambda{ @enum.each_slice(0){} }.should raise_error(ArgumentError)
- lambda{ @enum.each_slice(-2){} }.should raise_error(ArgumentError)
- lambda{ @enum.each_slice{} }.should raise_error(ArgumentError)
- lambda{ @enum.each_slice(2,2){} }.should raise_error(ArgumentError)
- lambda{ @enum.each_slice(0) }.should raise_error(ArgumentError)
- lambda{ @enum.each_slice(-2) }.should raise_error(ArgumentError)
- lambda{ @enum.each_slice }.should raise_error(ArgumentError)
- lambda{ @enum.each_slice(2,2) }.should raise_error(ArgumentError)
- end
-
- it "tries to convert n to an Integer using #to_int" do
- acc = []
- @enum.each_slice(3.3){|g| acc << g}.should == nil
- acc.should == @sliced
-
- obj = mock('to_int')
- obj.should_receive(:to_int).and_return(3)
- @enum.each_slice(obj){|g| break g.length}.should == 3
- end
-
- it "works when n is >= full length" do
- full = @enum.to_a
- acc = []
- @enum.each_slice(full.length){|g| acc << g}
- acc.should == [full]
- acc = []
- @enum.each_slice(full.length+1){|g| acc << g}
- acc.should == [full]
- end
-
- it "yields only as much as needed" do
- cnt = EnumerableSpecs::EachCounter.new(1, 2, :stop, "I said stop!", :got_it)
- cnt.each_slice(2) {|g| break 42 if g[0] == :stop }.should == 42
- cnt.times_yielded.should == 4
- end
-
- it "returns an enumerator if no block" do
- e = @enum.each_slice(3)
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == @sliced
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.each_slice(2).to_a.should == [[[1, 2], [3, 4, 5]], [[6, 7, 8, 9]]]
- end
-
- describe "when no block is given" do
- it "returns an enumerator" do
- e = @enum.each_slice(3)
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == @sliced
- end
-
- describe "Enumerable with size" do
- describe "returned Enumerator" do
- describe "size" do
- it "returns the ceil of Enumerable size divided by the argument value" do
- enum = EnumerableSpecs::NumerousWithSize.new(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- enum.each_slice(10).size.should == 1
- enum.each_slice(9).size.should == 2
- enum.each_slice(3).size.should == 4
- enum.each_slice(2).size.should == 5
- enum.each_slice(1).size.should == 10
- end
-
- it "returns 0 when the Enumerable is empty" do
- enum = EnumerableSpecs::EmptyWithSize.new
- enum.each_slice(10).size.should == 0
- end
- end
- end
- end
-
- describe "Enumerable with no size" do
- before :all do
- @object = EnumerableSpecs::Numerous.new(1, 2, 3, 4)
- @method = [:each_slice, 8]
- end
- it_should_behave_like :enumeratorized_with_unknown_size
- end
- end
-
-end
diff --git a/spec/rubyspec/core/enumerable/each_with_index_spec.rb b/spec/rubyspec/core/enumerable/each_with_index_spec.rb
deleted file mode 100644
index 9884e71167..0000000000
--- a/spec/rubyspec/core/enumerable/each_with_index_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#each_with_index" do
-
- before :each do
- @b = EnumerableSpecs::Numerous.new(2, 5, 3, 6, 1, 4)
- end
-
- it "passes each element and its index to block" do
- @a = []
- @b.each_with_index { |o, i| @a << [o, i] }
- @a.should == [[2, 0], [5, 1], [3, 2], [6, 3], [1, 4], [4, 5]]
- end
-
- it "provides each element to the block" do
- acc = []
- obj = EnumerableSpecs::EachDefiner.new()
- res = obj.each_with_index {|a,i| acc << [a,i]}
- acc.should == []
- obj.should == res
- end
-
- it "provides each element to the block and its index" do
- acc = []
- res = @b.each_with_index {|a,i| acc << [a,i]}
- [[2, 0], [5, 1], [3, 2], [6, 3], [1, 4], [4, 5]].should == acc
- res.should eql(@b)
- end
-
- it "binds splat arguments properly" do
- acc = []
- res = @b.each_with_index { |*b| c,d = b; acc << c; acc << d }
- [2, 0, 5, 1, 3, 2, 6, 3, 1, 4, 4, 5].should == acc
- res.should eql(@b)
- end
-
- it "returns an enumerator if no block" do
- e = @b.each_with_index
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == [[2, 0], [5, 1], [3, 2], [6, 3], [1, 4], [4, 5]]
- end
-
- it "passes extra parameters to each" do
- count = EnumerableSpecs::EachCounter.new(:apple)
- e = count.each_with_index(:foo, :bar)
- e.to_a.should == [[:apple, 0]]
- count.arguments_passed.should == [:foo, :bar]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :each_with_index
-end
diff --git a/spec/rubyspec/core/enumerable/each_with_object_spec.rb b/spec/rubyspec/core/enumerable/each_with_object_spec.rb
deleted file mode 100644
index 13a7c1c66d..0000000000
--- a/spec/rubyspec/core/enumerable/each_with_object_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#each_with_object" do
- before :each do
- @values = [2, 5, 3, 6, 1, 4]
- @enum = EnumerableSpecs::Numerous.new(*@values)
- @initial = "memo"
- end
-
- it "passes each element and its argument to the block" do
- acc = []
- @enum.each_with_object(@initial) do |elem, obj|
- obj.should equal(@initial)
- obj = 42
- acc << elem
- end.should equal(@initial)
- acc.should == @values
- end
-
- it "returns an enumerator if no block" do
- acc = []
- e = @enum.each_with_object(@initial)
- e.each do |elem, obj|
- obj.should equal(@initial)
- obj = 42
- acc << elem
- end.should equal(@initial)
- acc.should == @values
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- array = []
- multi.each_with_object(array) { |elem, obj| obj << elem }
- array.should == [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, [:each_with_object, []]
-end
diff --git a/spec/rubyspec/core/enumerable/entries_spec.rb b/spec/rubyspec/core/enumerable/entries_spec.rb
deleted file mode 100644
index 94eceee713..0000000000
--- a/spec/rubyspec/core/enumerable/entries_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/entries', __FILE__)
-
-describe "Enumerable#entries" do
- it_behaves_like(:enumerable_entries , :entries)
-end
diff --git a/spec/rubyspec/core/enumerable/find_all_spec.rb b/spec/rubyspec/core/enumerable/find_all_spec.rb
deleted file mode 100644
index 3d587d7709..0000000000
--- a/spec/rubyspec/core/enumerable/find_all_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/find_all', __FILE__)
-
-describe "Enumerable#find_all" do
- it_behaves_like(:enumerable_find_all , :find_all)
-end
diff --git a/spec/rubyspec/core/enumerable/find_index_spec.rb b/spec/rubyspec/core/enumerable/find_index_spec.rb
deleted file mode 100644
index c118a61fcf..0000000000
--- a/spec/rubyspec/core/enumerable/find_index_spec.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#find_index" do
- before :each do
- @elements = [2, 4, 6, 8, 10]
- @numerous = EnumerableSpecs::Numerous.new(*@elements)
- @yieldsmixed = EnumerableSpecs::YieldsMixed2.new
- end
-
- it "passes each entry in enum to block while block when block is false" do
- visited_elements = []
- @numerous.find_index do |element|
- visited_elements << element
- false
- end
- visited_elements.should == @elements
- end
-
- it "returns nil when the block is false" do
- @numerous.find_index {|e| false }.should == nil
- end
-
- it "returns the first index for which the block is not false" do
- @elements.each_with_index do |element, index|
- @numerous.find_index {|e| e > element - 1 }.should == index
- end
- end
-
- it "returns the first index found" do
- repeated = [10, 11, 11, 13, 11, 13, 10, 10, 13, 11]
- numerous_repeat = EnumerableSpecs::Numerous.new(*repeated)
- repeated.each do |element|
- numerous_repeat.find_index(element).should == element - 10
- end
- end
-
- it "returns nil when the element not found" do
- @numerous.find_index(-1).should == nil
- end
-
- it "ignores the block if an argument is given" do
- -> {
- @numerous.find_index(-1) {|e| true }.should == nil
- }.should complain(/given block not used/)
- end
-
- it "returns an Enumerator if no block given" do
- @numerous.find_index.should be_an_instance_of(Enumerator)
- end
-
- it "uses #== for testing equality" do
- [2].to_enum.find_index(2.0).should == 0
- [2.0].to_enum.find_index(2).should == 0
- end
-
- describe "without block" do
- it "gathers whole arrays as elements when each yields multiple" do
- @yieldsmixed.find_index([0, 1, 2]).should == 3
- end
- end
-
- describe "with block" do
- before :each do
- ScratchPad.record []
- end
-
- after :each do
- ScratchPad.clear
- end
-
- describe "given a single yield parameter" do
- it "passes first element to the parameter" do
- @yieldsmixed.find_index {|a| ScratchPad << a; false }
- ScratchPad.recorded.should == EnumerableSpecs::YieldsMixed2.first_yields
- end
- end
-
- describe "given a greedy yield parameter" do
- it "passes a gathered array to the parameter" do
- @yieldsmixed.find_index {|*args| ScratchPad << args; false }
- ScratchPad.recorded.should == EnumerableSpecs::YieldsMixed2.greedy_yields
- end
- end
- end
-
- it_behaves_like :enumerable_enumeratorized_with_unknown_size, :find_index
-end
diff --git a/spec/rubyspec/core/enumerable/find_spec.rb b/spec/rubyspec/core/enumerable/find_spec.rb
deleted file mode 100644
index 62e1194537..0000000000
--- a/spec/rubyspec/core/enumerable/find_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/find', __FILE__)
-
-describe "Enumerable#find" do
- it_behaves_like(:enumerable_find , :find)
-end
diff --git a/spec/rubyspec/core/enumerable/first_spec.rb b/spec/rubyspec/core/enumerable/first_spec.rb
deleted file mode 100644
index a85550ee3b..0000000000
--- a/spec/rubyspec/core/enumerable/first_spec.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/take', __FILE__)
-
-describe "Enumerable#first" do
- it "returns the first element" do
- EnumerableSpecs::Numerous.new.first.should == 2
- EnumerableSpecs::Empty.new.first.should == nil
- end
-
- it "returns nil if self is empty" do
- EnumerableSpecs::Empty.new.first.should == nil
- end
-
- it 'returns a gathered array from yield parameters' do
- EnumerableSpecs::YieldsMulti.new.to_enum.first.should == [1, 2]
- EnumerableSpecs::YieldsMixed2.new.to_enum.first.should == nil
- end
-
- it "raises a RangeError when passed a Bignum" do
- enum = EnumerableSpecs::Empty.new
- lambda { enum.first(bignum_value) }.should raise_error(RangeError)
- end
-
- describe "when passed an argument" do
- it_behaves_like :enumerable_take, :first
- end
-end
diff --git a/spec/rubyspec/core/enumerable/fixtures/classes.rb b/spec/rubyspec/core/enumerable/fixtures/classes.rb
deleted file mode 100644
index 26a8aff8e2..0000000000
--- a/spec/rubyspec/core/enumerable/fixtures/classes.rb
+++ /dev/null
@@ -1,331 +0,0 @@
-module EnumerableSpecs
-
- class Numerous
- include Enumerable
- def initialize(*list)
- @list = list.empty? ? [2, 5, 3, 6, 1, 4] : list
- end
-
- def each
- @list.each { |i| yield i }
- end
- end
-
- class NumerousWithSize < Numerous
- def size
- @list.size
- end
- end
-
- class EachCounter < Numerous
- attr_reader :times_called, :times_yielded, :arguments_passed
- def initialize(*list)
- super(*list)
- @times_yielded = @times_called = 0
- end
-
- def each(*arg)
- @times_called += 1
- @times_yielded = 0
- @arguments_passed = arg
- @list.each do |i|
- @times_yielded +=1
- yield i
- end
- end
- end
-
- class Empty
- include Enumerable
- def each
- end
- end
-
- class EmptyWithSize
- include Enumerable
- def each
- end
- def size
- 0
- end
- end
-
- class ThrowingEach
- include Enumerable
- def each
- raise "from each"
- end
- end
-
- class NoEach
- include Enumerable
- end
-
- # (Legacy form rubycon)
- class EachDefiner
-
- include Enumerable
-
- attr_reader :arr
-
- def initialize(*arr)
- @arr = arr
- end
-
- def each
- i = 0
- loop do
- break if i == @arr.size
- yield @arr[i]
- i += 1
- end
- end
-
- end
-
- class SortByDummy
- def initialize(s)
- @s = s
- end
-
- def s
- @s
- end
- end
-
- class ComparesByVowelCount
-
- attr_accessor :value, :vowels
-
- def self.wrap(*args)
- args.map {|element| ComparesByVowelCount.new(element)}
- end
-
- def initialize(string)
- self.value = string
- self.vowels = string.gsub(/[^aeiou]/, '').size
- end
-
- def <=>(other)
- self.vowels <=> other.vowels
- end
-
- end
-
- class InvalidComparable
- def <=>(other)
- "Not Valid"
- end
- end
-
- class ArrayConvertable
- attr_accessor :called
- def initialize(*values)
- @values = values
- end
-
- def to_a
- self.called = :to_a
- @values
- end
-
- def to_ary
- self.called = :to_ary
- @values
- end
- end
-
- class EnumConvertable
- attr_accessor :called
- attr_accessor :sym
- def initialize(delegate)
- @delegate = delegate
- end
-
- def to_enum(sym)
- self.called = :to_enum
- self.sym = sym
- @delegate.to_enum(sym)
- end
-
- def respond_to_missing?(*args)
- @delegate.respond_to?(*args)
- end
- end
-
- class Equals
- def initialize(obj)
- @obj = obj
- end
- def ==(other)
- @obj == other
- end
- end
-
- class YieldsMulti
- include Enumerable
- def each
- yield 1,2
- yield 3,4,5
- yield 6,7,8,9
- end
- end
-
- class YieldsMultiWithFalse
- include Enumerable
- def each
- yield false,2
- yield false,4,5
- yield false,7,8,9
- end
- end
-
- class YieldsMultiWithSingleTrue
- include Enumerable
- def each
- yield false,2
- yield true,4,5
- yield false,7,8,9
- end
- end
-
- class YieldsMixed
- include Enumerable
- def each
- yield 1
- yield [2]
- yield 3,4
- yield 5,6,7
- yield [8,9]
- yield nil
- yield []
- end
- end
-
- class YieldsMixed2
- include Enumerable
-
- def self.first_yields
- [nil, 0, 0, 0, 0, nil, :default_arg, [], [], [0], [0, 1], [0, 1, 2]]
- end
-
- def self.gathered_yields
- [nil, 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, :default_arg, [], [], [0], [0, 1], [0, 1, 2]]
- end
-
- def self.gathered_yields_with_args(arg, *args)
- [nil, 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, arg, args, [], [0], [0, 1], [0, 1, 2]]
- end
-
- def self.greedy_yields
- [[], [0], [0, 1], [0, 1, 2], [0, 1, 2], [nil], [:default_arg], [[]], [[]], [[0]], [[0, 1]], [[0, 1, 2]]]
- end
-
- def each(arg=:default_arg, *args)
- yield
- yield 0
- yield 0, 1
- yield 0, 1, 2
- yield(*[0, 1, 2])
- yield nil
- yield arg
- yield args
- yield []
- yield [0]
- yield [0, 1]
- yield [0, 1, 2]
- end
- end
-
- class ReverseComparable
- include Comparable
- def initialize(num)
- @num = num
- end
-
- attr_accessor :num
-
- # Reverse comparison
- def <=>(other)
- other.num <=> @num
- end
- end
-
- class ComparableWithFixnum
- include Comparable
- def initialize(num)
- @num = num
- end
-
- def <=>(fixnum)
- @num <=> fixnum
- end
- end
-
- class Uncomparable
- def <=>(obj)
- nil
- end
- end
-
- class Undupable
- attr_reader :initialize_called, :initialize_dup_called
- def dup
- raise "Can't, sorry"
- end
-
- def clone
- raise "Can't, either, sorry"
- end
-
- def initialize
- @initialize_dup = true
- end
-
- def initialize_dup(arg)
- @initialize_dup_called = true
- end
- end
-
- class Freezy
- include Enumerable
-
- def each
- yield 1
- yield 2
- end
-
- def to_a
- super.freeze
- end
- end
-
- class MapReturnsEnumerable
- include Enumerable
-
- class EnumerableMapping
- include Enumerable
-
- def initialize(items, block)
- @items = items
- @block = block
- end
-
- def each
- @items.each do |i|
- yield @block.call(i)
- end
- end
- end
-
- def each
- yield 1
- yield 2
- yield 3
- end
-
- def map(&block)
- EnumerableMapping.new(self, block)
- end
- end
-end # EnumerableSpecs utility classes
diff --git a/spec/rubyspec/core/enumerable/flat_map_spec.rb b/spec/rubyspec/core/enumerable/flat_map_spec.rb
deleted file mode 100644
index aaddeed05d..0000000000
--- a/spec/rubyspec/core/enumerable/flat_map_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/collect_concat', __FILE__)
-
-describe "Enumerable#flat_map" do
- it_behaves_like(:enumerable_collect_concat , :flat_map)
-end
diff --git a/spec/rubyspec/core/enumerable/grep_spec.rb b/spec/rubyspec/core/enumerable/grep_spec.rb
deleted file mode 100644
index 777d5e538e..0000000000
--- a/spec/rubyspec/core/enumerable/grep_spec.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#grep" do
- before :each do
- @a = EnumerableSpecs::EachDefiner.new( 2, 4, 6, 8, 10)
- end
-
- it "grep without a block should return an array of all elements === pattern" do
- class EnumerableSpecGrep; def ===(obj); obj == '2'; end; end
-
- EnumerableSpecs::Numerous.new('2', 'a', 'nil', '3', false).grep(EnumerableSpecGrep.new).should == ['2']
- end
-
- it "grep with a block should return an array of elements === pattern passed through block" do
- class EnumerableSpecGrep2; def ===(obj); /^ca/ =~ obj; end; end
-
- EnumerableSpecs::Numerous.new("cat", "coat", "car", "cadr", "cost").grep(EnumerableSpecGrep2.new) { |i| i.upcase }.should == ["CAT", "CAR", "CADR"]
- end
-
- it "grep the enumerable (rubycon legacy)" do
- EnumerableSpecs::EachDefiner.new().grep(1).should == []
- @a.grep(3..7).should == [4,6]
- @a.grep(3..7) {|a| a+1}.should == [5,7]
- end
-
- it "can use $~ in the block when used with a Regexp" do
- ary = ["aba", "aba"]
- ary.grep(/a(b)a/) { $1 }.should == ["b", "b"]
- end
-
- describe "with a block" do
- before :each do
- @numerous = EnumerableSpecs::Numerous.new(*(0..9).to_a)
- def (@odd_matcher = BasicObject.new).===(obj)
- obj.odd?
- end
- end
-
- it "returns an Array of matched elements that mapped by the block" do
- @numerous.grep(@odd_matcher) { |n| n * 2 }.should == [2, 6, 10, 14, 18]
- end
-
- it "calls the block with gathered array when yielded with multiple arguments" do
- EnumerableSpecs::YieldsMixed2.new.grep(Object){ |e| e }.should == EnumerableSpecs::YieldsMixed2.gathered_yields
- end
-
- it "raises an ArgumentError when not given a pattern" do
- -> { @numerous.grep { |e| e } }.should raise_error(ArgumentError)
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/grep_v_spec.rb b/spec/rubyspec/core/enumerable/grep_v_spec.rb
deleted file mode 100644
index 05c43a43ef..0000000000
--- a/spec/rubyspec/core/enumerable/grep_v_spec.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-ruby_version_is "2.3" do
- describe "Enumerable#grep_v" do
- before :each do
- @numerous = EnumerableSpecs::Numerous.new(*(0..9).to_a)
- def (@odd_matcher = BasicObject.new).===(obj)
- obj.odd?
- end
- end
-
- describe "without block" do
- it "returns an Array of matched elements" do
- @numerous.grep_v(@odd_matcher).should == [0, 2, 4, 6, 8]
- end
-
- it "compares pattern with gathered array when yielded with multiple arguments" do
- (unmatcher = Object.new).stub!(:===).and_return(false)
- EnumerableSpecs::YieldsMixed2.new.grep_v(unmatcher).should == EnumerableSpecs::YieldsMixed2.gathered_yields
- end
-
- it "raises an ArgumentError when not given a pattern" do
- -> { @numerous.grep_v }.should raise_error(ArgumentError)
- end
- end
-
- describe "with block" do
- it "returns an Array of matched elements that mapped by the block" do
- @numerous.grep_v(@odd_matcher) { |n| n * 2 }.should == [0, 4, 8, 12, 16]
- end
-
- it "calls the block with gathered array when yielded with multiple arguments" do
- (unmatcher = Object.new).stub!(:===).and_return(false)
- EnumerableSpecs::YieldsMixed2.new.grep_v(unmatcher){ |e| e }.should == EnumerableSpecs::YieldsMixed2.gathered_yields
- end
-
- it "raises an ArgumentError when not given a pattern" do
- -> { @numerous.grep_v { |e| e } }.should raise_error(ArgumentError)
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/group_by_spec.rb b/spec/rubyspec/core/enumerable/group_by_spec.rb
deleted file mode 100644
index 3513512ebf..0000000000
--- a/spec/rubyspec/core/enumerable/group_by_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#group_by" do
- it "returns a hash with values grouped according to the block" do
- e = EnumerableSpecs::Numerous.new("foo", "bar", "baz")
- h = e.group_by { |word| word[0..0].to_sym }
- h.should == { f: ["foo"], b: ["bar", "baz"]}
- end
-
- it "returns an empty hash for empty enumerables" do
- EnumerableSpecs::Empty.new.group_by { |x| x}.should == {}
- end
-
- it "returns a hash without default_proc" do
- e = EnumerableSpecs::Numerous.new("foo", "bar", "baz")
- h = e.group_by { |word| word[0..0].to_sym }
- h[:some].should be_nil
- h.default_proc.should be_nil
- h.default.should be_nil
- end
-
- it "returns an Enumerator if called without a block" do
- EnumerableSpecs::Numerous.new.group_by.should be_an_instance_of(Enumerator)
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- e = EnumerableSpecs::YieldsMulti.new
- h = e.group_by { |i| i }
- h.should == { [1, 2] => [[1, 2]],
- [6, 7, 8, 9] => [[6, 7, 8, 9]],
- [3, 4, 5] => [[3, 4, 5]] }
- end
-
- it "returns a tainted hash if self is tainted" do
- EnumerableSpecs::Empty.new.taint.group_by {}.tainted?.should be_true
- end
-
- it "returns an untrusted hash if self is untrusted" do
- EnumerableSpecs::Empty.new.untrust.group_by {}.untrusted?.should be_true
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :group_by
-end
diff --git a/spec/rubyspec/core/enumerable/include_spec.rb b/spec/rubyspec/core/enumerable/include_spec.rb
deleted file mode 100644
index 2cc0b6e83a..0000000000
--- a/spec/rubyspec/core/enumerable/include_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/include', __FILE__)
-
-describe "Enumerable#include?" do
- it_behaves_like(:enumerable_include, :include?)
-end
diff --git a/spec/rubyspec/core/enumerable/inject_spec.rb b/spec/rubyspec/core/enumerable/inject_spec.rb
deleted file mode 100644
index 289a451552..0000000000
--- a/spec/rubyspec/core/enumerable/inject_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/inject', __FILE__)
-
-describe "Enumerable#inject" do
- it_behaves_like :enumerable_inject, :inject
-end
diff --git a/spec/rubyspec/core/enumerable/lazy_spec.rb b/spec/rubyspec/core/enumerable/lazy_spec.rb
deleted file mode 100644
index f989fb947e..0000000000
--- a/spec/rubyspec/core/enumerable/lazy_spec.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- encoding: us-ascii -*-
-
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#lazy" do
- it "returns an instance of Enumerator::Lazy" do
- EnumerableSpecs::Numerous.new.lazy.should be_an_instance_of(Enumerator::Lazy)
- end
-end
diff --git a/spec/rubyspec/core/enumerable/map_spec.rb b/spec/rubyspec/core/enumerable/map_spec.rb
deleted file mode 100644
index b2ddf1eb9d..0000000000
--- a/spec/rubyspec/core/enumerable/map_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/collect', __FILE__)
-
-describe "Enumerable#map" do
- it_behaves_like(:enumerable_collect , :map)
-end
diff --git a/spec/rubyspec/core/enumerable/max_by_spec.rb b/spec/rubyspec/core/enumerable/max_by_spec.rb
deleted file mode 100644
index 4058cf0a40..0000000000
--- a/spec/rubyspec/core/enumerable/max_by_spec.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#max_by" do
- it "returns an enumerator if no block" do
- EnumerableSpecs::Numerous.new(42).max_by.should be_an_instance_of(Enumerator)
- end
-
- it "returns nil if #each yields no objects" do
- EnumerableSpecs::Empty.new.max_by {|o| o.nonesuch }.should == nil
- end
-
- it "returns the object for whom the value returned by block is the largest" do
- EnumerableSpecs::Numerous.new(*%w[1 2 3]).max_by {|obj| obj.to_i }.should == '3'
- EnumerableSpecs::Numerous.new(*%w[three five]).max_by {|obj| obj.length }.should == 'three'
- end
-
- it "returns the object that appears first in #each in case of a tie" do
- a, b, c = '1', '2', '2'
- EnumerableSpecs::Numerous.new(a, b, c).max_by {|obj| obj.to_i }.should equal(b)
- end
-
- it "uses max.<=>(current) to determine order" do
- a, b, c = (1..3).map{|n| EnumerableSpecs::ReverseComparable.new(n)}
-
- # Just using self here to avoid additional complexity
- EnumerableSpecs::Numerous.new(a, b, c).max_by {|obj| obj }.should == a
- end
-
- it "is able to return the maximum for enums that contain nils" do
- enum = EnumerableSpecs::Numerous.new(nil, nil, true)
- enum.max_by {|o| o.nil? ? 0 : 1 }.should == true
- enum.max_by {|o| o.nil? ? 1 : 0 }.should == nil
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.max_by {|e| e.size}.should == [6, 7, 8, 9]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :max_by
-
- context "when called with an argument n" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(101, 55, 1, 20, 33, 500, 60)
- end
-
- context "without a block" do
- it "returns an enumerator" do
- @enum.max_by(2).should be_an_instance_of(Enumerator)
- end
- end
-
- context "with a block" do
- it "returns an array containing the maximum n elements based on the block's value" do
- result = @enum.max_by(3) { |i| i.to_s }
- result.should == [60, 55, 500]
- end
-
- context "on a enumerable of length x where x < n" do
- it "returns an array containing the maximum n elements of length n" do
- result = @enum.max_by(500) { |i| i.to_s }
- result.length.should == 7
- end
- end
-
- context "when n is negative" do
- it "raises an ArgumentError" do
- lambda { @enum.max_by(-1) { |i| i.to_s } }.should raise_error(ArgumentError)
- end
- end
- end
-
- context "when n is nil" do
- it "returns the maximum element" do
- @enum.max_by(nil) { |i| i.to_s }.should == 60
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/max_spec.rb b/spec/rubyspec/core/enumerable/max_spec.rb
deleted file mode 100644
index e283a5d0e2..0000000000
--- a/spec/rubyspec/core/enumerable/max_spec.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#max" do
- before :each do
- @e_strs = EnumerableSpecs::EachDefiner.new("333", "22", "666666", "1", "55555", "1010101010")
- @e_ints = EnumerableSpecs::EachDefiner.new( 333, 22, 666666, 55555, 1010101010)
- end
-
- it "returns the maximum element" do
- EnumerableSpecs::Numerous.new.max.should == 6
- end
-
- it "returns the maximum element (basics cases)" do
- EnumerableSpecs::EachDefiner.new(55).max.should == 55
-
- EnumerableSpecs::EachDefiner.new(11,99).max.should == 99
- EnumerableSpecs::EachDefiner.new(99,11).max.should == 99
- EnumerableSpecs::EachDefiner.new(2, 33, 4, 11).max.should == 33
-
- EnumerableSpecs::EachDefiner.new(1,2,3,4,5).max.should == 5
- EnumerableSpecs::EachDefiner.new(5,4,3,2,1).max.should == 5
- EnumerableSpecs::EachDefiner.new(1,4,3,5,2).max.should == 5
- EnumerableSpecs::EachDefiner.new(5,5,5,5,5).max.should == 5
-
- EnumerableSpecs::EachDefiner.new("aa","tt").max.should == "tt"
- EnumerableSpecs::EachDefiner.new("tt","aa").max.should == "tt"
- EnumerableSpecs::EachDefiner.new("2","33","4","11").max.should == "4"
-
- @e_strs.max.should == "666666"
- @e_ints.max.should == 1010101010
- end
-
- it "returns nil for an empty Enumerable" do
- EnumerableSpecs::EachDefiner.new.max.should == nil
- end
-
- it "raises a NoMethodError for elements without #<=>" do
- lambda do
- EnumerableSpecs::EachDefiner.new(BasicObject.new, BasicObject.new).max
- end.should raise_error(NoMethodError)
- end
-
- it "raises an ArgumentError for incomparable elements" do
- lambda do
- EnumerableSpecs::EachDefiner.new(11,"22").max
- end.should raise_error(ArgumentError)
- lambda do
- EnumerableSpecs::EachDefiner.new(11,12,22,33).max{|a, b| nil}
- end.should raise_error(ArgumentError)
- end
-
- context "when passed a block" do
- it "returns the maximum element" do
- EnumerableSpecs::EachDefiner.new("2","33","4","11").max {|a,b| a <=> b }.should == "4"
- EnumerableSpecs::EachDefiner.new( 2 , 33 , 4 , 11 ).max {|a,b| a <=> b }.should == 33
-
- EnumerableSpecs::EachDefiner.new("2","33","4","11").max {|a,b| b <=> a }.should == "11"
- EnumerableSpecs::EachDefiner.new( 2 , 33 , 4 , 11 ).max {|a,b| b <=> a }.should == 2
-
- @e_strs.max {|a,b| a.length <=> b.length }.should == "1010101010"
-
- @e_strs.max {|a,b| a <=> b }.should == "666666"
- @e_strs.max {|a,b| a.to_i <=> b.to_i }.should == "1010101010"
-
- @e_ints.max {|a,b| a <=> b }.should == 1010101010
- @e_ints.max {|a,b| a.to_s <=> b.to_s }.should == 666666
- end
- end
-
- it "returns the maximum for enumerables that contain nils" do
- arr = EnumerableSpecs::Numerous.new(nil, nil, true)
- arr.max { |a, b|
- x = a.nil? ? 1 : a ? 0 : -1
- y = b.nil? ? 1 : b ? 0 : -1
- x <=> y
- }.should == nil
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.max.should == [6, 7, 8, 9]
- end
-
- context "when called with an argument n" do
- context "without a block" do
- it "returns an array containing the maximum n elements" do
- result = @e_ints.max(2)
- result.should == [1010101010, 666666]
- end
- end
-
- context "with a block" do
- it "returns an array containing the maximum n elements" do
- result = @e_ints.max(2) { |a, b| a * 2 <=> b * 2 }
- result.should == [1010101010, 666666]
- end
- end
-
- context "on a enumerable of length x where x < n" do
- it "returns an array containing the maximum n elements of length x" do
- result = @e_ints.max(500)
- result.length.should == 5
- end
- end
-
- context "that is negative" do
- it "raises an ArgumentError" do
- lambda { @e_ints.max(-1) }.should raise_error(ArgumentError)
- end
- end
- end
-
- context "that is nil" do
- it "returns the maximum element" do
- @e_ints.max(nil).should == 1010101010
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/member_spec.rb b/spec/rubyspec/core/enumerable/member_spec.rb
deleted file mode 100644
index 862c949817..0000000000
--- a/spec/rubyspec/core/enumerable/member_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/include', __FILE__)
-
-describe "Enumerable#member?" do
- it_behaves_like(:enumerable_include, :member?)
-end
diff --git a/spec/rubyspec/core/enumerable/min_by_spec.rb b/spec/rubyspec/core/enumerable/min_by_spec.rb
deleted file mode 100644
index 24fe995f09..0000000000
--- a/spec/rubyspec/core/enumerable/min_by_spec.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#min_by" do
- it "returns an enumerator if no block" do
- EnumerableSpecs::Numerous.new(42).min_by.should be_an_instance_of(Enumerator)
- end
-
- it "returns nil if #each yields no objects" do
- EnumerableSpecs::Empty.new.min_by {|o| o.nonesuch }.should == nil
- end
-
- it "returns the object for whom the value returned by block is the smallest" do
- EnumerableSpecs::Numerous.new(*%w[3 2 1]).min_by {|obj| obj.to_i }.should == '1'
- EnumerableSpecs::Numerous.new(*%w[five three]).min_by {|obj| obj.length }.should == 'five'
- end
-
- it "returns the object that appears first in #each in case of a tie" do
- a, b, c = '2', '1', '1'
- EnumerableSpecs::Numerous.new(a, b, c).min_by {|obj| obj.to_i }.should equal(b)
- end
-
- it "uses min.<=>(current) to determine order" do
- a, b, c = (1..3).map{|n| EnumerableSpecs::ReverseComparable.new(n)}
-
- # Just using self here to avoid additional complexity
- EnumerableSpecs::Numerous.new(a, b, c).min_by {|obj| obj }.should == c
- end
-
- it "is able to return the minimum for enums that contain nils" do
- enum = EnumerableSpecs::Numerous.new(nil, nil, true)
- enum.min_by {|o| o.nil? ? 0 : 1 }.should == nil
- enum.min_by {|o| o.nil? ? 1 : 0 }.should == true
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.min_by {|e| e.size}.should == [1, 2]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :min_by
-
- context "when called with an argument n" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(101, 55, 1, 20, 33, 500, 60)
- end
-
- context "without a block" do
- it "returns an enumerator" do
- @enum.min_by(2).should be_an_instance_of(Enumerator)
- end
- end
-
- context "with a block" do
- it "returns an array containing the minimum n elements based on the block's value" do
- result = @enum.min_by(3) { |i| i.to_s }
- result.should == [1, 101, 20]
- end
-
- context "on a enumerable of length x where x < n" do
- it "returns an array containing the minimum n elements of length n" do
- result = @enum.min_by(500) { |i| i.to_s }
- result.length.should == 7
- end
- end
-
- context "when n is negative" do
- it "raises an ArgumentError" do
- lambda { @enum.min_by(-1) { |i| i.to_s } }.should raise_error(ArgumentError)
- end
- end
- end
-
- context "when n is nil" do
- it "returns the minimum element" do
- @enum.min_by(nil) { |i| i.to_s }.should == 1
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/min_spec.rb b/spec/rubyspec/core/enumerable/min_spec.rb
deleted file mode 100644
index f56d0420c9..0000000000
--- a/spec/rubyspec/core/enumerable/min_spec.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#min" do
- before :each do
- @e_strs = EnumerableSpecs::EachDefiner.new("333", "22", "666666", "1", "55555", "1010101010")
- @e_ints = EnumerableSpecs::EachDefiner.new( 333, 22, 666666, 55555, 1010101010)
- end
-
- it "min should return the minimum element" do
- EnumerableSpecs::Numerous.new.min.should == 1
- end
-
- it "returns the minimum (basic cases)" do
- EnumerableSpecs::EachDefiner.new(55).min.should == 55
-
- EnumerableSpecs::EachDefiner.new(11,99).min.should == 11
- EnumerableSpecs::EachDefiner.new(99,11).min.should == 11
- EnumerableSpecs::EachDefiner.new(2, 33, 4, 11).min.should == 2
-
- EnumerableSpecs::EachDefiner.new(1,2,3,4,5).min.should == 1
- EnumerableSpecs::EachDefiner.new(5,4,3,2,1).min.should == 1
- EnumerableSpecs::EachDefiner.new(4,1,3,5,2).min.should == 1
- EnumerableSpecs::EachDefiner.new(5,5,5,5,5).min.should == 5
-
- EnumerableSpecs::EachDefiner.new("aa","tt").min.should == "aa"
- EnumerableSpecs::EachDefiner.new("tt","aa").min.should == "aa"
- EnumerableSpecs::EachDefiner.new("2","33","4","11").min.should == "11"
-
- @e_strs.min.should == "1"
- @e_ints.min.should == 22
- end
-
- it "returns nil for an empty Enumerable" do
- EnumerableSpecs::EachDefiner.new.min.should be_nil
- end
-
- it "raises a NoMethodError for elements without #<=>" do
- lambda do
- EnumerableSpecs::EachDefiner.new(BasicObject.new, BasicObject.new).min
- end.should raise_error(NoMethodError)
- end
-
- it "raises an ArgumentError for incomparable elements" do
- lambda do
- EnumerableSpecs::EachDefiner.new(11,"22").min
- end.should raise_error(ArgumentError)
- lambda do
- EnumerableSpecs::EachDefiner.new(11,12,22,33).min{|a, b| nil}
- end.should raise_error(ArgumentError)
- end
-
- it "returns the minimum when using a block rule" do
- EnumerableSpecs::EachDefiner.new("2","33","4","11").min {|a,b| a <=> b }.should == "11"
- EnumerableSpecs::EachDefiner.new( 2 , 33 , 4 , 11 ).min {|a,b| a <=> b }.should == 2
-
- EnumerableSpecs::EachDefiner.new("2","33","4","11").min {|a,b| b <=> a }.should == "4"
- EnumerableSpecs::EachDefiner.new( 2 , 33 , 4 , 11 ).min {|a,b| b <=> a }.should == 33
-
- EnumerableSpecs::EachDefiner.new( 1, 2, 3, 4 ).min {|a,b| 15 }.should == 1
-
- EnumerableSpecs::EachDefiner.new(11,12,22,33).min{|a, b| 2 }.should == 11
- @i = -2
- EnumerableSpecs::EachDefiner.new(11,12,22,33).min{|a, b| @i += 1 }.should == 12
-
- @e_strs.min {|a,b| a.length <=> b.length }.should == "1"
-
- @e_strs.min {|a,b| a <=> b }.should == "1"
- @e_strs.min {|a,b| a.to_i <=> b.to_i }.should == "1"
-
- @e_ints.min {|a,b| a <=> b }.should == 22
- @e_ints.min {|a,b| a.to_s <=> b.to_s }.should == 1010101010
- end
-
- it "returns the minimum for enumerables that contain nils" do
- arr = EnumerableSpecs::Numerous.new(nil, nil, true)
- arr.min { |a, b|
- x = a.nil? ? -1 : a ? 0 : 1
- y = b.nil? ? -1 : b ? 0 : 1
- x <=> y
- }.should == nil
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.min.should == [1, 2]
- end
-
- context "when called with an argument n" do
- context "without a block" do
- it "returns an array containing the minimum n elements" do
- result = @e_ints.min(2)
- result.should == [22, 333]
- end
- end
-
- context "with a block" do
- it "returns an array containing the minimum n elements" do
- result = @e_ints.min(2) { |a, b| a * 2 <=> b * 2 }
- result.should == [22, 333]
- end
- end
-
- context "on a enumerable of length x where x < n" do
- it "returns an array containing the minimum n elements of length x" do
- result = @e_ints.min(500)
- result.length.should == 5
- end
- end
-
- context "that is negative" do
- it "raises an ArgumentError" do
- lambda { @e_ints.min(-1) }.should raise_error(ArgumentError)
- end
- end
- end
-
- context "that is nil" do
- it "returns the minimum element" do
- @e_ints.min(nil).should == 22
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/minmax_by_spec.rb b/spec/rubyspec/core/enumerable/minmax_by_spec.rb
deleted file mode 100644
index c92eb381a4..0000000000
--- a/spec/rubyspec/core/enumerable/minmax_by_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#minmax_by" do
- it "returns an enumerator if no block" do
- EnumerableSpecs::Numerous.new(42).minmax_by.should be_an_instance_of(Enumerator)
- end
-
- it "returns nil if #each yields no objects" do
- EnumerableSpecs::Empty.new.minmax_by {|o| o.nonesuch }.should == [nil, nil]
- end
-
- it "returns the object for whom the value returned by block is the largest" do
- EnumerableSpecs::Numerous.new(*%w[1 2 3]).minmax_by {|obj| obj.to_i }.should == ['1', '3']
- EnumerableSpecs::Numerous.new(*%w[three five]).minmax_by {|obj| obj.length }.should == ['five', 'three']
- end
-
- it "returns the object that appears first in #each in case of a tie" do
- a, b, c, d = '1', '1', '2', '2'
- mm = EnumerableSpecs::Numerous.new(a, b, c, d).minmax_by {|obj| obj.to_i }
- mm[0].should equal(a)
- mm[1].should equal(c)
- end
-
- it "uses min/max.<=>(current) to determine order" do
- a, b, c = (1..3).map{|n| EnumerableSpecs::ReverseComparable.new(n)}
-
- # Just using self here to avoid additional complexity
- EnumerableSpecs::Numerous.new(a, b, c).minmax_by {|obj| obj }.should == [c, a]
- end
-
- it "is able to return the maximum for enums that contain nils" do
- enum = EnumerableSpecs::Numerous.new(nil, nil, true)
- enum.minmax_by {|o| o.nil? ? 0 : 1 }.should == [nil, true]
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.minmax_by {|e| e.size}.should == [[1, 2], [6, 7, 8, 9]]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :minmax_by
-end
diff --git a/spec/rubyspec/core/enumerable/minmax_spec.rb b/spec/rubyspec/core/enumerable/minmax_spec.rb
deleted file mode 100644
index 10bc9b68e4..0000000000
--- a/spec/rubyspec/core/enumerable/minmax_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#minmax" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(6, 4, 5, 10, 8)
-
- @strs = EnumerableSpecs::Numerous.new("333", "2", "60", "55555", "1010", "111")
- end
-
- it "min should return the minimum element" do
- @enum.minmax.should == [4, 10]
- @strs.minmax.should == ["1010", "60" ]
- end
-
- it "returns [nil, nil] for an empty Enumerable" do
- EnumerableSpecs::Empty.new.minmax.should == [nil, nil]
- end
-
- it "raises an ArgumentError when elements are incomparable" do
- lambda do
- EnumerableSpecs::Numerous.new(11,"22").minmax
- end.should raise_error(ArgumentError)
- lambda do
- EnumerableSpecs::Numerous.new(11,12,22,33).minmax{|a, b| nil}
- end.should raise_error(ArgumentError)
- end
-
- it "raises a NoMethodError for elements without #<=>" do
- lambda do
- EnumerableSpecs::Numerous.new(BasicObject.new, BasicObject.new).minmax
- end.should raise_error(NoMethodError)
- end
-
- it "returns the minimum when using a block rule" do
- @enum.minmax {|a,b| b <=> a }.should == [10, 4]
- @strs.minmax {|a,b| a.length <=> b.length }.should == ["2", "55555"]
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.minmax.should == [[1, 2], [6, 7, 8, 9]]
- end
-end
diff --git a/spec/rubyspec/core/enumerable/none_spec.rb b/spec/rubyspec/core/enumerable/none_spec.rb
deleted file mode 100644
index 0646c13b34..0000000000
--- a/spec/rubyspec/core/enumerable/none_spec.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#none?" do
- it "returns true if none of the elements in self are true" do
- e = EnumerableSpecs::Numerous.new(false, nil, false)
- e.none?.should be_true
- end
-
- it "returns false if at least one of the elements in self are true" do
- e = EnumerableSpecs::Numerous.new(false, nil, true, false)
- e.none?.should be_false
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMultiWithFalse.new
- multi.none?.should be_false
- end
-end
-
-describe "Enumerable#none? with a block" do
- before :each do
- @e = EnumerableSpecs::Numerous.new(1,1,2,3,4)
- end
-
- it "passes each element to the block in turn until it returns true" do
- acc = []
- @e.none? {|e| acc << e; false }
- acc.should == [1,1,2,3,4]
- end
-
- it "stops passing elements to the block when it returns true" do
- acc = []
- @e.none? {|e| acc << e; e == 3 ? true : false }
- acc.should == [1,1,2,3]
- end
-
- it "returns true if the block never returns true" do
- @e.none? {|e| false }.should be_true
- end
-
- it "returns false if the block ever returns true" do
- @e.none? {|e| e == 3 ? true : false }.should be_false
- end
-
- it "gathers initial args as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.none? {|e| e == [1, 2] }.should be_true
- end
-
- it "yields multiple arguments when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- yielded = []
- multi.none? {|e, i| yielded << [e, i] }
- yielded.should == [[1, 2]]
- end
-end
diff --git a/spec/rubyspec/core/enumerable/one_spec.rb b/spec/rubyspec/core/enumerable/one_spec.rb
deleted file mode 100644
index 818d4663a4..0000000000
--- a/spec/rubyspec/core/enumerable/one_spec.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#one?" do
- describe "when passed a block" do
- it "returns true if block returns true once" do
- [:a, :b, :c].one? { |s| s == :a }.should be_true
- end
-
- it "returns false if the block returns true more than once" do
- [:a, :b, :c].one? { |s| s == :a || s == :b }.should be_false
- end
-
- it "returns false if the block only returns false" do
- [:a, :b, :c].one? { |s| s == :d }.should be_false
- end
-
- it "gathers initial args as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.one? {|e| e == 1 }.should be_true
- end
-
- it "yields multiple arguments when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- yielded = []
- multi.one? {|e, i| yielded << [e, i] }
- yielded.should == [[1, 2], [3, 4]]
- end
- end
-
- describe "when not passed a block" do
- it "returns true if only one element evaluates to true" do
- [false, nil, true].one?.should be_true
- end
-
- it "returns false if two elements evaluate to true" do
- [false, :value, nil, true].one?.should be_false
- end
-
- it "returns false if all elements evaluate to false" do
- [false, nil, false].one?.should be_false
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMultiWithSingleTrue.new
- multi.one?.should be_false
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/partition_spec.rb b/spec/rubyspec/core/enumerable/partition_spec.rb
deleted file mode 100644
index 4319a9328f..0000000000
--- a/spec/rubyspec/core/enumerable/partition_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#partition" do
- it "returns two arrays, the first containing elements for which the block is true, the second containing the rest" do
- EnumerableSpecs::Numerous.new.partition { |i| i % 2 == 0 }.should == [[2, 6, 4], [5, 3, 1]]
- end
-
- it "returns an Enumerator if called without a block" do
- EnumerableSpecs::Numerous.new.partition.should be_an_instance_of(Enumerator)
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.partition {|e| e == [3, 4, 5] }.should == [[[3, 4, 5]], [[1, 2], [6, 7, 8, 9]]]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :partition
-end
diff --git a/spec/rubyspec/core/enumerable/reduce_spec.rb b/spec/rubyspec/core/enumerable/reduce_spec.rb
deleted file mode 100644
index 8afecb2a8e..0000000000
--- a/spec/rubyspec/core/enumerable/reduce_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/inject', __FILE__)
-
-describe "Enumerable#reduce" do
- it_behaves_like :enumerable_inject, :reduce
-end
diff --git a/spec/rubyspec/core/enumerable/reject_spec.rb b/spec/rubyspec/core/enumerable/reject_spec.rb
deleted file mode 100644
index 3dbfb07067..0000000000
--- a/spec/rubyspec/core/enumerable/reject_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#reject" do
- it "returns an array of the elements for which block is false" do
- EnumerableSpecs::Numerous.new.reject { |i| i > 3 }.should == [2, 3, 1]
- entries = (1..10).to_a
- numerous = EnumerableSpecs::Numerous.new(*entries)
- numerous.reject {|i| i % 2 == 0 }.should == [1,3,5,7,9]
- numerous.reject {|i| true }.should == []
- numerous.reject {|i| false }.should == entries
- end
-
- it "returns an Enumerator if called without a block" do
- EnumerableSpecs::Numerous.new.reject.should be_an_instance_of(Enumerator)
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.reject {|e| e == [3, 4, 5] }.should == [[1, 2], [6, 7, 8, 9]]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :reject
-end
diff --git a/spec/rubyspec/core/enumerable/reverse_each_spec.rb b/spec/rubyspec/core/enumerable/reverse_each_spec.rb
deleted file mode 100644
index 62c3c0daef..0000000000
--- a/spec/rubyspec/core/enumerable/reverse_each_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#reverse_each" do
- it "traverses enum in reverse order and pass each element to block" do
- a=[]
- EnumerableSpecs::Numerous.new.reverse_each { |i| a << i }
- a.should == [4, 1, 6, 3, 5, 2]
- end
-
- it "returns an Enumerator if no block given" do
- enum = EnumerableSpecs::Numerous.new.reverse_each
- enum.should be_an_instance_of(Enumerator)
- enum.to_a.should == [4, 1, 6, 3, 5, 2]
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- yielded = []
- multi.reverse_each {|e| yielded << e }
- yielded.should == [[6, 7, 8, 9], [3, 4, 5], [1, 2]]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :reverse_each
-end
diff --git a/spec/rubyspec/core/enumerable/select_spec.rb b/spec/rubyspec/core/enumerable/select_spec.rb
deleted file mode 100644
index b4da35c754..0000000000
--- a/spec/rubyspec/core/enumerable/select_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/find_all', __FILE__)
-
-describe "Enumerable#select" do
- it_behaves_like(:enumerable_find_all , :select)
-end
diff --git a/spec/rubyspec/core/enumerable/shared/collect.rb b/spec/rubyspec/core/enumerable/shared/collect.rb
deleted file mode 100644
index f66c539904..0000000000
--- a/spec/rubyspec/core/enumerable/shared/collect.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require File.expand_path('../enumerable_enumeratorized', __FILE__)
-
-describe :enumerable_collect, shared: true do
- before :each do
- ScratchPad.record []
- end
-
- it "returns a new array with the results of passing each element to block" do
- entries = [0, 1, 3, 4, 5, 6]
- numerous = EnumerableSpecs::Numerous.new(*entries)
- numerous.send(@method) { |i| i % 2 }.should == [0, 1, 1, 0, 1, 0]
- numerous.send(@method) { |i| i }.should == entries
- end
-
- it "passes through the values yielded by #each_with_index" do
- [:a, :b].each_with_index.send(@method) { |x, i| ScratchPad << [x, i]; nil }
- ScratchPad.recorded.should == [[:a, 0], [:b, 1]]
- end
-
- it "gathers initial args as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.send(@method) {|e| e}.should == [1,3,6]
- end
-
- it "returns an enumerator when no block given" do
- enum = EnumerableSpecs::Numerous.new.send(@method)
- enum.should be_an_instance_of(Enumerator)
- enum.each { |i| -i }.should == [-2, -5, -3, -6, -1, -4]
- end
-
- it_should_behave_like :enumerable_enumeratorized_with_origin_size
-end
diff --git a/spec/rubyspec/core/enumerable/shared/collect_concat.rb b/spec/rubyspec/core/enumerable/shared/collect_concat.rb
deleted file mode 100644
index 54e10692eb..0000000000
--- a/spec/rubyspec/core/enumerable/shared/collect_concat.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require File.expand_path('../enumerable_enumeratorized', __FILE__)
-
-describe :enumerable_collect_concat, shared: true do
- it "yields elements to the block and flattens one level" do
- numerous = EnumerableSpecs::Numerous.new(1, [2, 3], [4, [5, 6]], {foo: :bar})
- numerous.send(@method) { |i| i }.should == [1, 2, 3, 4, [5, 6], {foo: :bar}]
- end
-
- it "appends non-Array elements that do not define #to_ary" do
- obj = mock("to_ary undefined")
-
- numerous = EnumerableSpecs::Numerous.new(1, obj, 2)
- numerous.send(@method) { |i| i }.should == [1, obj, 2]
- end
-
- it "concatenates the result of calling #to_ary if it returns an Array" do
- obj = mock("to_ary defined")
- obj.should_receive(:to_ary).and_return([:a, :b])
-
- numerous = EnumerableSpecs::Numerous.new(1, obj, 2)
- numerous.send(@method) { |i| i }.should == [1, :a, :b, 2]
- end
-
- it "does not call #to_a" do
- obj = mock("to_ary undefined")
- obj.should_not_receive(:to_a)
-
- numerous = EnumerableSpecs::Numerous.new(1, obj, 2)
- numerous.send(@method) { |i| i }.should == [1, obj, 2]
- end
-
- it "appends an element that defines #to_ary that returns nil" do
- obj = mock("to_ary defined")
- obj.should_receive(:to_ary).and_return(nil)
-
- numerous = EnumerableSpecs::Numerous.new(1, obj, 2)
- numerous.send(@method) { |i| i }.should == [1, obj, 2]
- end
-
- it "raises a TypeError if an element defining #to_ary does not return an Array or nil" do
- obj = mock("to_ary defined")
- obj.should_receive(:to_ary).and_return("array")
-
- lambda { [1, obj, 3].send(@method) { |i| i } }.should raise_error(TypeError)
- end
-
- it "returns an enumerator when no block given" do
- enum = EnumerableSpecs::Numerous.new(1, 2).send(@method)
- enum.should be_an_instance_of(Enumerator)
- enum.each{ |i| [i] * i }.should == [1, 2, 2]
- end
-
- it_should_behave_like :enumerable_enumeratorized_with_origin_size
-end
diff --git a/spec/rubyspec/core/enumerable/shared/entries.rb b/spec/rubyspec/core/enumerable/shared/entries.rb
deleted file mode 100644
index f52844cb45..0000000000
--- a/spec/rubyspec/core/enumerable/shared/entries.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-describe :enumerable_entries, shared: true do
- it "returns an array containing the elements" do
- numerous = EnumerableSpecs::Numerous.new(1, nil, 'a', 2, false, true)
- numerous.send(@method).should == [1, nil, "a", 2, false, true]
- end
-
- it "passes through the values yielded by #each_with_index" do
- [:a, :b].each_with_index.send(@method).should == [[:a, 0], [:b, 1]]
- end
-
- it "passes arguments to each" do
- count = EnumerableSpecs::EachCounter.new(1, 2, 3)
- count.send(@method, :hello, "world").should == [1, 2, 3]
- count.arguments_passed.should == [:hello, "world"]
- end
-
- it "returns a tainted array if self is tainted" do
- EnumerableSpecs::Empty.new.taint.send(@method).tainted?.should be_true
- end
-
- it "returns an untrusted array if self is untrusted" do
- EnumerableSpecs::Empty.new.untrust.send(@method).untrusted?.should be_true
- end
-end
diff --git a/spec/rubyspec/core/enumerable/shared/enumerable_enumeratorized.rb b/spec/rubyspec/core/enumerable/shared/enumerable_enumeratorized.rb
deleted file mode 100644
index b03ce9ed4e..0000000000
--- a/spec/rubyspec/core/enumerable/shared/enumerable_enumeratorized.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require File.expand_path('../enumeratorized', __FILE__)
-
-describe :enumerable_enumeratorized_with_unknown_size, shared: true do
- describe "Enumerable with size" do
- before :all do
- @object = EnumerableSpecs::NumerousWithSize.new(1, 2, 3, 4)
- end
- it_should_behave_like :enumeratorized_with_unknown_size
- end
-
- describe "Enumerable with no size" do
- before :all do
- @object = EnumerableSpecs::Numerous.new(1, 2, 3, 4)
- end
- it_should_behave_like :enumeratorized_with_unknown_size
- end
-end
-
-describe :enumerable_enumeratorized_with_origin_size, shared: true do
- describe "Enumerable with size" do
- before :all do
- @object = EnumerableSpecs::NumerousWithSize.new(1, 2, 3, 4)
- end
- it_should_behave_like :enumeratorized_with_origin_size
- end
-
- describe "Enumerable with no size" do
- before :all do
- @object = EnumerableSpecs::Numerous.new(1, 2, 3, 4)
- end
- it_should_behave_like :enumeratorized_with_unknown_size
- end
-end
diff --git a/spec/rubyspec/core/enumerable/shared/enumeratorized.rb b/spec/rubyspec/core/enumerable/shared/enumeratorized.rb
deleted file mode 100644
index 05d27b5783..0000000000
--- a/spec/rubyspec/core/enumerable/shared/enumeratorized.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-describe :enumeratorized_with_unknown_size, shared: true do
- describe "when no block is given" do
- describe "returned Enumerator" do
- it "size returns nil" do
- @object.send(*@method).size.should == nil
- end
- end
- end
-end
-
-describe :enumeratorized_with_origin_size, shared: true do
- describe "when no block is given" do
- describe "returned Enumerator" do
- it "size returns the enumerable size" do
- @object.send(*@method).size.should == @object.size
- end
- end
- end
-end
-
-describe :enumeratorized_with_cycle_size, shared: true do
- describe "when no block is given" do
- describe "returned Enumerator" do
- describe "size" do
- it "should be the result of multiplying the enumerable size by the argument passed" do
- @object.cycle(2).size.should == @object.size * 2
- @object.cycle(7).size.should == @object.size * 7
- @object.cycle(0).size.should == 0
- @empty_object.cycle(2).size.should == 0
- end
-
- it "should be zero when the argument passed is 0 or less" do
- @object.cycle(-1).size.should == 0
- end
-
- it "should be Float::INFINITY when no argument is passed" do
- @object.cycle.size.should == Float::INFINITY
- end
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/shared/find.rb b/spec/rubyspec/core/enumerable/shared/find.rb
deleted file mode 100644
index 4cbbf07be0..0000000000
--- a/spec/rubyspec/core/enumerable/shared/find.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require File.expand_path('../enumerable_enumeratorized', __FILE__)
-
-describe :enumerable_find, shared: true do
- # #detect and #find are aliases, so we only need one function
- before :each do
- ScratchPad.record []
- @elements = [2, 4, 6, 8, 10]
- @numerous = EnumerableSpecs::Numerous.new(*@elements)
- @empty = []
- end
-
- it "passes each entry in enum to block while block when block is false" do
- visited_elements = []
- @numerous.send(@method) do |element|
- visited_elements << element
- false
- end
- visited_elements.should == @elements
- end
-
- it "returns nil when the block is false and there is no ifnone proc given" do
- @numerous.send(@method) {|e| false }.should == nil
- end
-
- it "returns the first element for which the block is not false" do
- @elements.each do |element|
- @numerous.send(@method) {|e| e > element - 1 }.should == element
- end
- end
-
- it "returns the value of the ifnone proc if the block is false" do
- fail_proc = lambda { "cheeseburgers" }
- @numerous.send(@method, fail_proc) {|e| false }.should == "cheeseburgers"
- end
-
- it "doesn't call the ifnone proc if an element is found" do
- fail_proc = lambda { raise "This shouldn't have been called" }
- @numerous.send(@method, fail_proc) {|e| e == @elements.first }.should == 2
- end
-
- it "calls the ifnone proc only once when the block is false" do
- times = 0
- fail_proc = lambda { times += 1; raise if times > 1; "cheeseburgers" }
- @numerous.send(@method, fail_proc) {|e| false }.should == "cheeseburgers"
- end
-
- it "calls the ifnone proc when there are no elements" do
- fail_proc = lambda { "yay" }
- @empty.send(@method, fail_proc) {|e| true}.should == "yay"
- end
-
- it "passes through the values yielded by #each_with_index" do
- [:a, :b].each_with_index.send(@method) { |x, i| ScratchPad << [x, i]; nil }
- ScratchPad.recorded.should == [[:a, 0], [:b, 1]]
- end
-
- it "returns an enumerator when no block given" do
- @numerous.send(@method).should be_an_instance_of(Enumerator)
- end
-
- it "passes the ifnone proc to the enumerator" do
- times = 0
- fail_proc = lambda { times += 1; raise if times > 1; "cheeseburgers" }
- @numerous.send(@method, fail_proc).each {|e| false }.should == "cheeseburgers"
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.send(@method) {|e| e == [1, 2] }.should == [1, 2]
- end
-
- it_should_behave_like :enumerable_enumeratorized_with_unknown_size
-end
diff --git a/spec/rubyspec/core/enumerable/shared/find_all.rb b/spec/rubyspec/core/enumerable/shared/find_all.rb
deleted file mode 100644
index 3e15c68e9f..0000000000
--- a/spec/rubyspec/core/enumerable/shared/find_all.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require File.expand_path('../enumerable_enumeratorized', __FILE__)
-
-describe :enumerable_find_all, shared: true do
- before :each do
- ScratchPad.record []
- @elements = (1..10).to_a
- @numerous = EnumerableSpecs::Numerous.new(*@elements)
- end
-
- it "returns all elements for which the block is not false" do
- @numerous.send(@method) {|i| i % 3 == 0 }.should == [3, 6, 9]
- @numerous.send(@method) {|i| true }.should == @elements
- @numerous.send(@method) {|i| false }.should == []
- end
-
- it "returns an enumerator when no block given" do
- @numerous.send(@method).should be_an_instance_of(Enumerator)
- end
-
- it "passes through the values yielded by #each_with_index" do
- [:a, :b].each_with_index.send(@method) { |x, i| ScratchPad << [x, i] }
- ScratchPad.recorded.should == [[:a, 0], [:b, 1]]
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.send(@method) {|e| e == [3, 4, 5] }.should == [[3, 4, 5]]
- end
-
- it_should_behave_like :enumerable_enumeratorized_with_origin_size
-end
diff --git a/spec/rubyspec/core/enumerable/shared/include.rb b/spec/rubyspec/core/enumerable/shared/include.rb
deleted file mode 100644
index 569f350fd5..0000000000
--- a/spec/rubyspec/core/enumerable/shared/include.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-describe :enumerable_include, shared: true do
- it "returns true if any element == argument for numbers" do
- class EnumerableSpecIncludeP; def ==(obj) obj == 5; end; end
-
- elements = (0..5).to_a
- EnumerableSpecs::Numerous.new(*elements).send(@method,5).should == true
- EnumerableSpecs::Numerous.new(*elements).send(@method,10).should == false
- EnumerableSpecs::Numerous.new(*elements).send(@method,EnumerableSpecIncludeP.new).should == true
- end
-
- it "returns true if any element == argument for other objects" do
- class EnumerableSpecIncludeP11; def ==(obj); obj == '11'; end; end
-
- elements = ('0'..'5').to_a + [EnumerableSpecIncludeP11.new]
- EnumerableSpecs::Numerous.new(*elements).send(@method,'5').should == true
- EnumerableSpecs::Numerous.new(*elements).send(@method,'10').should == false
- EnumerableSpecs::Numerous.new(*elements).send(@method,EnumerableSpecIncludeP11.new).should == true
- EnumerableSpecs::Numerous.new(*elements).send(@method,'11').should == true
- end
-
-
- it "returns true if any member of enum equals obj when == compare different classes (legacy rubycon)" do
- # equality is tested with ==
- EnumerableSpecs::Numerous.new(2,4,6,8,10).send(@method, 2.0).should == true
- EnumerableSpecs::Numerous.new(2,4,[6,8],10).send(@method, [6, 8]).should == true
- EnumerableSpecs::Numerous.new(2,4,[6,8],10).send(@method, [6.0, 8.0]).should == true
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.send(@method, [1,2]).should be_true
- end
-
-end
diff --git a/spec/rubyspec/core/enumerable/shared/inject.rb b/spec/rubyspec/core/enumerable/shared/inject.rb
deleted file mode 100644
index 12e0665dda..0000000000
--- a/spec/rubyspec/core/enumerable/shared/inject.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-describe :enumerable_inject, shared: true do
- it "with argument takes a block with an accumulator (with argument as initial value) and the current element. Value of block becomes new accumulator" do
- a = []
- EnumerableSpecs::Numerous.new.send(@method, 0) { |memo, i| a << [memo, i]; i }
- a.should == [[0, 2], [2, 5], [5, 3], [3, 6], [6, 1], [1, 4]]
- EnumerableSpecs::EachDefiner.new(true, true, true).send(@method, nil) {|result, i| i && result}.should == nil
- end
-
- it "produces an array of the accumulator and the argument when given a block with a *arg" do
- a = []
- [1,2].send(@method, 0) {|*args| a << args; args[0] + args[1]}
- a.should == [[0, 1], [1, 2]]
- end
-
- it "can take two argument" do
- EnumerableSpecs::Numerous.new(1, 2, 3).send(@method, 10, :-).should == 4
- end
-
- it "ignores the block if two arguments" do
- EnumerableSpecs::Numerous.new(1, 2, 3).send(@method, 10, :-){ raise "we never get here"}.should == 4
- end
-
- it "can take a symbol argument" do
- EnumerableSpecs::Numerous.new(10, 1, 2, 3).send(@method, :-).should == 4
- end
-
- it "without argument takes a block with an accumulator (with first element as initial value) and the current element. Value of block becomes new accumulator" do
- a = []
- EnumerableSpecs::Numerous.new.send(@method) { |memo, i| a << [memo, i]; i }
- a.should == [[2, 5], [5, 3], [3, 6], [6, 1], [1, 4]]
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.send(@method, []) {|acc, e| acc << e }.should == [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
- end
-
- it "with inject arguments(legacy rubycon)" do
- # with inject argument
- EnumerableSpecs::EachDefiner.new().send(@method, 1) {|acc,x| 999 }.should == 1
- EnumerableSpecs::EachDefiner.new(2).send(@method, 1) {|acc,x| 999 }.should == 999
- EnumerableSpecs::EachDefiner.new(2).send(@method, 1) {|acc,x| acc }.should == 1
- EnumerableSpecs::EachDefiner.new(2).send(@method, 1) {|acc,x| x }.should == 2
-
- EnumerableSpecs::EachDefiner.new(1,2,3,4).send(@method, 100) {|acc,x| acc + x }.should == 110
- EnumerableSpecs::EachDefiner.new(1,2,3,4).send(@method, 100) {|acc,x| acc * x }.should == 2400
-
- EnumerableSpecs::EachDefiner.new('a','b','c').send(@method, "z") {|result, i| i+result}.should == "cbaz"
- end
-
- it "without inject arguments(legacy rubycon)" do
- # no inject argument
- EnumerableSpecs::EachDefiner.new(2).send(@method) {|acc,x| 999 } .should == 2
- EnumerableSpecs::EachDefiner.new(2).send(@method) {|acc,x| acc }.should == 2
- EnumerableSpecs::EachDefiner.new(2).send(@method) {|acc,x| x }.should == 2
-
- EnumerableSpecs::EachDefiner.new(1,2,3,4).send(@method) {|acc,x| acc + x }.should == 10
- EnumerableSpecs::EachDefiner.new(1,2,3,4).send(@method) {|acc,x| acc * x }.should == 24
-
- EnumerableSpecs::EachDefiner.new('a','b','c').send(@method) {|result, i| i+result}.should == "cba"
- EnumerableSpecs::EachDefiner.new(3, 4, 5).send(@method) {|result, i| result*i}.should == 60
- EnumerableSpecs::EachDefiner.new([1], 2, 'a','b').send(@method){|r,i| r<<i}.should == [1, 2, 'a', 'b']
-
- end
-
- it "returns nil when fails(legacy rubycon)" do
- EnumerableSpecs::EachDefiner.new().send(@method) {|acc,x| 999 }.should == nil
- end
-end
diff --git a/spec/rubyspec/core/enumerable/shared/take.rb b/spec/rubyspec/core/enumerable/shared/take.rb
deleted file mode 100644
index bf2536acda..0000000000
--- a/spec/rubyspec/core/enumerable/shared/take.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-describe :enumerable_take, shared: true do
- before :each do
- @values = [4,3,2,1,0,-1]
- @enum = EnumerableSpecs::Numerous.new(*@values)
- end
-
- it "returns the first count elements if given a count" do
- @enum.send(@method, 2).should == [4, 3]
- @enum.send(@method, 4).should == [4, 3, 2, 1] # See redmine #1686 !
- end
-
- it "returns an empty array when passed count on an empty array" do
- empty = EnumerableSpecs::Empty.new
- empty.send(@method, 0).should == []
- empty.send(@method, 1).should == []
- empty.send(@method, 2).should == []
- end
-
- it "returns an empty array when passed count == 0" do
- @enum.send(@method, 0).should == []
- end
-
- it "returns an array containing the first element when passed count == 1" do
- @enum.send(@method, 1).should == [4]
- end
-
- it "raises an ArgumentError when count is negative" do
- lambda { @enum.send(@method, -1) }.should raise_error(ArgumentError)
- end
-
- it "returns the entire array when count > length" do
- @enum.send(@method, 100).should == @values
- @enum.send(@method, 8).should == @values # See redmine #1686 !
- end
-
- it "tries to convert the passed argument to an Integer using #to_int" do
- obj = mock('to_int')
- obj.should_receive(:to_int).and_return(3).at_most(:twice) # called twice, no apparent reason. See redmine #1554
- @enum.send(@method, obj).should == [4, 3, 2]
- end
-
- it "raises a TypeError if the passed argument is not numeric" do
- lambda { @enum.send(@method, nil) }.should raise_error(TypeError)
- lambda { @enum.send(@method, "a") }.should raise_error(TypeError)
-
- obj = mock("nonnumeric")
- lambda { @enum.send(@method, obj) }.should raise_error(TypeError)
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.send(@method, 1).should == [[1, 2]]
- end
-
- it "consumes only what is needed" do
- thrower = EnumerableSpecs::ThrowingEach.new
- thrower.send(@method, 0).should == []
- counter = EnumerableSpecs::EachCounter.new(1,2,3,4)
- counter.send(@method, 2).should == [1,2]
- counter.times_called.should == 1
- counter.times_yielded.should == 2
- end
-end
diff --git a/spec/rubyspec/core/enumerable/slice_after_spec.rb b/spec/rubyspec/core/enumerable/slice_after_spec.rb
deleted file mode 100644
index a199b9f1ed..0000000000
--- a/spec/rubyspec/core/enumerable/slice_after_spec.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#slice_after" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(7, 6, 5, 4, 3, 2, 1)
- end
-
- describe "when given an argument and no block" do
- it "calls === on the argument to determine when to yield" do
- arg = mock("filter")
- arg.should_receive(:===).and_return(false, true, false, false, false, true, false)
- e = @enum.slice_after(arg)
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == [[7, 6], [5, 4, 3, 2], [1]]
- end
-
- it "doesn't yield an empty array if the filter matches the first entry or the last entry" do
- arg = mock("filter")
- arg.should_receive(:===).and_return(true).exactly(7)
- e = @enum.slice_after(arg)
- e.to_a.should == [[7], [6], [5], [4], [3], [2], [1]]
- end
-
- it "uses standard boolean as a test" do
- arg = mock("filter")
- arg.should_receive(:===).and_return(false, :foo, nil, false, false, 42, false)
- e = @enum.slice_after(arg)
- e.to_a.should == [[7, 6], [5, 4, 3, 2], [1]]
- end
- end
-
- describe "when given a block" do
- describe "and no argument" do
- it "calls the block to determine when to yield" do
- e = @enum.slice_after{ |i| i == 6 || i == 2 }
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == [[7, 6], [5, 4, 3, 2], [1]]
- end
- end
-
- describe "and an argument" do
- it "raises an ArgumentError" do
- lambda { @enum.slice_after(42) { |i| i == 6 } }.should raise_error(ArgumentError)
- end
- end
- end
-
- it "raises an ArgumentError when given an incorrect number of arguments" do
- lambda { @enum.slice_after("one", "two") }.should raise_error(ArgumentError)
- lambda { @enum.slice_after }.should raise_error(ArgumentError)
- end
-end
-
-describe "when an iterator method yields more than one value" do
- it "processes all yielded values" do
- enum = EnumerableSpecs::YieldsMulti.new
- result = enum.slice_after { |i| i == [3, 4, 5] }.to_a
- result.should == [[[1, 2], [3, 4, 5]], [[6, 7, 8, 9]]]
- end
-end
diff --git a/spec/rubyspec/core/enumerable/slice_before_spec.rb b/spec/rubyspec/core/enumerable/slice_before_spec.rb
deleted file mode 100644
index 1594372d32..0000000000
--- a/spec/rubyspec/core/enumerable/slice_before_spec.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#slice_before" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(7,6,5,4,3,2,1)
- end
-
- describe "when given an argument and no block" do
- it "calls === on the argument to determine when to yield" do
- arg = mock "filter"
- arg.should_receive(:===).and_return(false, true, false, false, false, true, false)
- e = @enum.slice_before(arg)
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == [[7], [6, 5, 4, 3], [2, 1]]
- end
-
- it "doesn't yield an empty array if the filter matches the first entry or the last entry" do
- arg = mock "filter"
- arg.should_receive(:===).and_return(true).exactly(7)
- e = @enum.slice_before(arg)
- e.to_a.should == [[7], [6], [5], [4], [3], [2], [1]]
- end
-
- it "uses standard boolean as a test" do
- arg = mock "filter"
- arg.should_receive(:===).and_return(false, :foo, nil, false, false, 42, false)
- e = @enum.slice_before(arg)
- e.to_a.should == [[7], [6, 5, 4, 3], [2, 1]]
- end
- end
-
- describe "when given a block" do
- describe "and no argument" do
- it "calls the block to determine when to yield" do
- e = @enum.slice_before{|i| i == 6 || i == 2}
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == [[7], [6, 5, 4, 3], [2, 1]]
- end
- end
-
- ruby_version_is ""..."2.3" do
- describe "and an argument" do
- it "calls the block with a copy of that argument" do
- arg = [:foo]
- first = nil
- e = @enum.slice_before(arg) do |i, init|
- init.should == arg
- init.should_not equal(arg)
- first = init
- i == 6 || i == 2
- end
- e.should be_an_instance_of(Enumerator)
- e.to_a.should == [[7], [6, 5, 4, 3], [2, 1]]
- e = @enum.slice_before(arg) do |i, init|
- init.should_not equal(first)
- end
- e.to_a
- end
- end
- end
-
- ruby_version_is "2.3" do
- it "does not accept arguments" do
- lambda {
- @enum.slice_before(1) {}
- }.should raise_error(ArgumentError)
- end
- end
- end
-
- it "raises an ArgumentError when given an incorrect number of arguments" do
- lambda { @enum.slice_before("one", "two") }.should raise_error(ArgumentError)
- lambda { @enum.slice_before }.should raise_error(ArgumentError)
- end
-
- describe "when an iterator method yields more than one value" do
- it "processes all yielded values" do
- enum = EnumerableSpecs::YieldsMulti.new
- result = enum.slice_before { |i| i == [3, 4, 5] }.to_a
- result.should == [[[1, 2]], [[3, 4, 5], [6, 7, 8, 9]]]
- end
- end
-
- it_behaves_like :enumerable_enumeratorized_with_unknown_size, [:slice_before, 3]
-end
diff --git a/spec/rubyspec/core/enumerable/slice_when_spec.rb b/spec/rubyspec/core/enumerable/slice_when_spec.rb
deleted file mode 100644
index 593e623b1b..0000000000
--- a/spec/rubyspec/core/enumerable/slice_when_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#slice_when" do
- before :each do
- ary = [10, 9, 7, 6, 4, 3, 2, 1]
- @enum = EnumerableSpecs::Numerous.new(*ary)
- @result = @enum.slice_when { |i, j| i - 1 != j }
- @enum_length = ary.length
- end
-
- context "when given a block" do
- it "returns an enumerator" do
- @result.should be_an_instance_of(Enumerator)
- end
-
- it "splits chunks between adjacent elements i and j where the block returns true" do
- @result.to_a.should == [[10, 9], [7, 6], [4, 3, 2, 1]]
- end
-
- it "calls the block for length of the receiver enumerable minus one times" do
- times_called = 0
- @enum.slice_when do |i, j|
- times_called += 1
- i - 1 != j
- end.to_a
- times_called.should == (@enum_length - 1)
- end
-
- it "doesn't yield an empty array if the block matches the first or the last time" do
- @enum.slice_when { true }.to_a.should == [[10], [9], [7], [6], [4], [3], [2], [1]]
- end
-
- it "doesn't yield an empty array on a small enumerable" do
- EnumerableSpecs::Empty.new.slice_when { raise }.to_a.should == []
- EnumerableSpecs::Numerous.new(42).slice_when { raise }.to_a.should == [[42]]
- end
- end
-
- context "when not given a block" do
- it "raises an ArgumentError" do
- lambda { @enum.slice_when }.should raise_error(ArgumentError)
- end
- end
-
- describe "when an iterator method yields more than one value" do
- it "processes all yielded values" do
- def foo
- yield 1, 2
- end
- to_enum(:foo).slice_when { true }.to_a.should == [[[1, 2]]]
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/sort_by_spec.rb b/spec/rubyspec/core/enumerable/sort_by_spec.rb
deleted file mode 100644
index f7df8659a8..0000000000
--- a/spec/rubyspec/core/enumerable/sort_by_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#sort_by" do
- it "returns an array of elements ordered by the result of block" do
- a = EnumerableSpecs::Numerous.new("once", "upon", "a", "time")
- a.sort_by { |i| i[0] }.should == ["a", "once", "time", "upon"]
- end
-
- it "sorts the object by the given attribute" do
- a = EnumerableSpecs::SortByDummy.new("fooo")
- b = EnumerableSpecs::SortByDummy.new("bar")
-
- ar = [a, b].sort_by { |d| d.s }
- ar.should == [b, a]
- end
-
- it "returns an Enumerator when a block is not supplied" do
- a = EnumerableSpecs::Numerous.new("a","b")
- a.sort_by.should be_an_instance_of(Enumerator)
- a.to_a.should == ["a", "b"]
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.sort_by {|e| e.size}.should == [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
- end
-
- it "returns an array of elements when a block is supplied and #map returns an enumerable" do
- b = EnumerableSpecs::MapReturnsEnumerable.new
- b.sort_by{ |x| -x }.should == [3, 2, 1]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_origin_size, :sort_by
-end
diff --git a/spec/rubyspec/core/enumerable/sort_spec.rb b/spec/rubyspec/core/enumerable/sort_spec.rb
deleted file mode 100644
index a39fa7ed34..0000000000
--- a/spec/rubyspec/core/enumerable/sort_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#sort" do
- it "sorts by the natural order as defined by <=>" do
- EnumerableSpecs::Numerous.new.sort.should == [1, 2, 3, 4, 5, 6]
- sorted = EnumerableSpecs::ComparesByVowelCount.wrap("a" * 1, "a" * 2, "a"*3, "a"*4, "a"*5)
- EnumerableSpecs::Numerous.new(sorted[2],sorted[0],sorted[1],sorted[3],sorted[4]).sort.should == sorted
- end
-
- it "yields elements to the provided block" do
- EnumerableSpecs::Numerous.new.sort { |a, b| b <=> a }.should == [6, 5, 4, 3, 2, 1]
- EnumerableSpecs::Numerous.new(2,0,1,3,4).sort { |n, m| -(n <=> m) }.should == [4,3,2,1,0]
- end
-
- it "raises a NoMethodError if elements do not define <=>" do
- lambda do
- EnumerableSpecs::Numerous.new(BasicObject.new, BasicObject.new, BasicObject.new).sort
- end.should raise_error(NoMethodError)
- end
-
- it "sorts enumerables that contain nils" do
- arr = EnumerableSpecs::Numerous.new(nil, true, nil, false, nil, true, nil, false, nil)
- arr.sort { |a, b|
- x = a ? -1 : a.nil? ? 0 : 1
- y = b ? -1 : b.nil? ? 0 : 1
- x <=> y
- }.should == [true, true, nil, nil, nil, nil, nil, false, false]
- end
-
- it "compare values returned by block with 0" do
- EnumerableSpecs::Numerous.new.sort { |n, m| -(n+m) * (n <=> m) }.should == [6, 5, 4, 3, 2, 1]
- EnumerableSpecs::Numerous.new.sort { |n, m|
- EnumerableSpecs::ComparableWithFixnum.new(-(n+m) * (n <=> m))
- }.should == [6, 5, 4, 3, 2, 1]
- lambda {
- EnumerableSpecs::Numerous.new.sort { |n, m| (n <=> m).to_s }
- }.should raise_error(ArgumentError)
- end
-
- it "raises an error if objects can't be compared" do
- a=EnumerableSpecs::Numerous.new(EnumerableSpecs::Uncomparable.new, EnumerableSpecs::Uncomparable.new)
- lambda {a.sort}.should raise_error(ArgumentError)
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.sort {|a, b| a.first <=> b.first}.should == [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
- end
-
- it "doesn't raise an error if #to_a returns a frozen Array" do
- EnumerableSpecs::Freezy.new.sort.should == [1,2]
- end
-end
diff --git a/spec/rubyspec/core/enumerable/sum_spec.rb b/spec/rubyspec/core/enumerable/sum_spec.rb
deleted file mode 100644
index 4881039a8d..0000000000
--- a/spec/rubyspec/core/enumerable/sum_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-ruby_version_is '2.4' do
- describe 'Enumerable#sum' do
- before :each do
- @enum = Object.new.to_enum
- class << @enum
- def each
- yield 0
- yield(-1)
- yield 2
- yield 2/3r
- end
- end
- end
-
- it 'returns amount of the elements with taking an argument as the initial value' do
- @enum.sum(10).should == 35/3r
- end
-
- it 'gives 0 as a default argument' do
- @enum.sum.should == 5/3r
- end
-
- it 'takes a block to transform the elements' do
- @enum.sum { |element| element * 2 }.should == 10/3r
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/take_spec.rb b/spec/rubyspec/core/enumerable/take_spec.rb
deleted file mode 100644
index 71bf77050c..0000000000
--- a/spec/rubyspec/core/enumerable/take_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/take', __FILE__)
-
-describe "Enumerable#take" do
- it "requires an argument" do
- lambda{ EnumerableSpecs::Numerous.new.take}.should raise_error(ArgumentError)
- end
-
- describe "when passed an argument" do
- it_behaves_like :enumerable_take, :take
- end
-end
diff --git a/spec/rubyspec/core/enumerable/take_while_spec.rb b/spec/rubyspec/core/enumerable/take_while_spec.rb
deleted file mode 100644
index 990d16209a..0000000000
--- a/spec/rubyspec/core/enumerable/take_while_spec.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/enumerable_enumeratorized', __FILE__)
-
-describe "Enumerable#take_while" do
- before :each do
- @enum = EnumerableSpecs::Numerous.new(3, 2, 1, :go)
- end
-
- it "returns an Enumerator if no block given" do
- @enum.take_while.should be_an_instance_of(Enumerator)
- end
-
- it "returns no/all elements for {true/false} block" do
- @enum.take_while{true}.should == @enum.to_a
- @enum.take_while{false}.should == []
- end
-
- it "accepts returns other than true/false" do
- @enum.take_while{1}.should == @enum.to_a
- @enum.take_while{nil}.should == []
- end
-
- it "passes elements to the block until the first false" do
- a = []
- @enum.take_while{|obj| (a << obj).size < 3}.should == [3, 2]
- a.should == [3, 2, 1]
- end
-
- it "will only go through what's needed" do
- enum = EnumerableSpecs::EachCounter.new(4, 3, 2, 1, :stop)
- enum.take_while { |x|
- break 42 if x == 3
- true
- }.should == 42
- enum.times_yielded.should == 2
- end
-
- it "doesn't return self when it could" do
- a = [1,2,3]
- a.take_while{true}.should_not equal(a)
- end
-
- it "calls the block with initial args when yielded with multiple arguments" do
- yields = []
- EnumerableSpecs::YieldsMixed.new.take_while{ |v| yields << v }
- yields.should == [1, [2], 3, 5, [8, 9], nil, []]
- end
-
- it_behaves_like :enumerable_enumeratorized_with_unknown_size, :take_while
-end
diff --git a/spec/rubyspec/core/enumerable/to_a_spec.rb b/spec/rubyspec/core/enumerable/to_a_spec.rb
deleted file mode 100644
index b14a3c7a1a..0000000000
--- a/spec/rubyspec/core/enumerable/to_a_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-require File.expand_path('../shared/entries', __FILE__)
-
-describe "Enumerable#to_a" do
- it_behaves_like(:enumerable_entries , :to_a)
-end
diff --git a/spec/rubyspec/core/enumerable/to_h_spec.rb b/spec/rubyspec/core/enumerable/to_h_spec.rb
deleted file mode 100644
index b5b301b882..0000000000
--- a/spec/rubyspec/core/enumerable/to_h_spec.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#to_h" do
- it "converts empty enumerable to empty hash" do
- enum = EnumerableSpecs::EachDefiner.new
- enum.to_h.should == {}
- end
-
- it "converts yielded [key, value] pairs to a hash" do
- enum = EnumerableSpecs::EachDefiner.new([:a, 1], [:b, 2])
- enum.to_h.should == { a: 1, b: 2 }
- end
-
- it "uses the last value of a duplicated key" do
- enum = EnumerableSpecs::EachDefiner.new([:a, 1], [:b, 2], [:a, 3])
- enum.to_h.should == { a: 3, b: 2 }
- end
-
- it "calls #to_ary on contents" do
- pair = mock('to_ary')
- pair.should_receive(:to_ary).and_return([:b, 2])
- enum = EnumerableSpecs::EachDefiner.new([:a, 1], pair)
- enum.to_h.should == { a: 1, b: 2 }
- end
-
- it "forwards arguments to #each" do
- enum = Object.new
- def enum.each(*args)
- yield(*args)
- yield([:b, 2])
- end
- enum.extend Enumerable
- enum.to_h(:a, 1).should == { a: 1, b: 2 }
- end
-
- it "raises TypeError if an element is not an array" do
- enum = EnumerableSpecs::EachDefiner.new(:x)
- lambda { enum.to_h }.should raise_error(TypeError)
- end
-
- it "raises ArgumentError if an element is not a [key, value] pair" do
- enum = EnumerableSpecs::EachDefiner.new([:x])
- lambda { enum.to_h }.should raise_error(ArgumentError)
- end
-end
diff --git a/spec/rubyspec/core/enumerable/uniq_spec.rb b/spec/rubyspec/core/enumerable/uniq_spec.rb
deleted file mode 100644
index 0ede0170ce..0000000000
--- a/spec/rubyspec/core/enumerable/uniq_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-ruby_version_is '2.4' do
- describe 'Enumerable#uniq' do
- it 'returns an array that contains only unique elements' do
- [0, 1, 2, 3].to_enum.uniq { |n| n.even? }.should == [0, 1]
- end
-
- context 'when yielded with multiple arguments' do
- before :each do
- @enum = Object.new.to_enum
- class << @enum
- def each
- yield 0, 'foo'
- yield 1, 'FOO'
- yield 2, 'bar'
- end
- end
- end
-
- ruby_bug '#13669', ''...'2.5' do
- it 'returns all yield arguments as an array' do
- @enum.uniq { |_, label| label.downcase }.should == [[0, 'foo'], [2, 'bar']]
- end
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/enumerable/zip_spec.rb b/spec/rubyspec/core/enumerable/zip_spec.rb
deleted file mode 100644
index 2d090f335c..0000000000
--- a/spec/rubyspec/core/enumerable/zip_spec.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Enumerable#zip" do
-
- it "combines each element of the receiver with the element of the same index in arrays given as arguments" do
- EnumerableSpecs::Numerous.new(1,2,3).zip([4,5,6],[7,8,9]).should == [[1,4,7],[2,5,8],[3,6,9]]
- EnumerableSpecs::Numerous.new(1,2,3).zip.should == [[1],[2],[3]]
- end
-
- it "passes each element of the result array to a block and return nil if a block is given" do
- expected = [[1,4,7],[2,5,8],[3,6,9]]
- EnumerableSpecs::Numerous.new(1,2,3).zip([4,5,6],[7,8,9]) do |result_component|
- result_component.should == expected.shift
- end.should == nil
- expected.size.should == 0
- end
-
- it "fills resulting array with nils if an argument array is too short" do
- EnumerableSpecs::Numerous.new(1,2,3).zip([4,5,6], [7,8]).should == [[1,4,7],[2,5,8],[3,6,nil]]
- end
-
- it "converts arguments to arrays using #to_ary" do
- convertable = EnumerableSpecs::ArrayConvertable.new(4,5,6)
- EnumerableSpecs::Numerous.new(1,2,3).zip(convertable).should == [[1,4],[2,5],[3,6]]
- convertable.called.should == :to_ary
- end
-
- it "converts arguments to enums using #to_enum" do
- convertable = EnumerableSpecs::EnumConvertable.new(4..6)
- EnumerableSpecs::Numerous.new(1,2,3).zip(convertable).should == [[1,4],[2,5],[3,6]]
- convertable.called.should == :to_enum
- convertable.sym.should == :each
- end
-
- it "gathers whole arrays as elements when each yields multiple" do
- multi = EnumerableSpecs::YieldsMulti.new
- multi.zip(multi).should == [[[1, 2], [1, 2]], [[3, 4, 5], [3, 4, 5]], [[6, 7, 8, 9], [6, 7, 8, 9]]]
- end
-
-end
-