Skip to content

Commit

Permalink
Merge pull request ruby#74 from tapajos/array_find_index
Browse files Browse the repository at this point in the history
Spec for Array#find_index
  • Loading branch information
headius committed Oct 2, 2011
2 parents 36171e3 + fa2a9fc commit e463a3b
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 34 deletions.
9 changes: 5 additions & 4 deletions core/array/find_index_spec.rb
@@ -1,7 +1,8 @@
require File.expand_path('../../../spec_helper', __FILE__)
require File.expand_path('../shared/index', __FILE__)

ruby_version_is "1.9" do
describe "Array#find_index" do
it "needs to be reviewed for spec completeness"
describe "Array#find_index" do
ruby_version_is "1.8.7" do
it_behaves_like(:array_index, :find_index)
end
end
end
32 changes: 2 additions & 30 deletions core/array/index_spec.rb
@@ -1,34 +1,6 @@
require File.expand_path('../../../spec_helper', __FILE__)
require File.expand_path('../shared/index', __FILE__)

describe "Array#index" do
it "returns the index of the first element == to object" do
x = mock('3')
def x.==(obj) 3 == obj; end

[2, x, 3, 1, 3, 1].index(3).should == 1
[2, 3.0, 3, x, 1, 3, 1].index(x).should == 1
end

it "returns 0 if first element == to object" do
[2, 1, 3, 2, 5].index(2).should == 0
end

it "returns size-1 if only last element == to object" do
[2, 1, 3, 1, 5].index(5).should == 4
end

it "returns nil if no element == to object" do
[2, 1, 1, 1, 1].index(3).should == nil
end

ruby_version_is "1.8.7" do
it "accepts a block instead of an argument" do
[4, 2, 1, 5, 1, 3].index {|x| x < 2}.should == 2
end

it "ignore the block if there is an argument" do
[4, 2, 1, 5, 1, 3].index(5) {|x| x < 2}.should == 3
end

end
it_behaves_like(:array_index, :index)
end
30 changes: 30 additions & 0 deletions core/array/shared/index.rb
@@ -0,0 +1,30 @@
describe :array_index, :shared => true do
it "returns the index of the first element == to object" do
x = mock('3')
def x.==(obj) 3 == obj; end

[2, x, 3, 1, 3, 1].send(@method, 3).should == 1
[2, 3.0, 3, x, 1, 3, 1].send(@method, x).should == 1
end

it "returns 0 if first element == to object" do
[2, 1, 3, 2, 5].send(@method, 2).should == 0
end

it "returns size-1 if only last element == to object" do
[2, 1, 3, 1, 5].send(@method, 5).should == 4
end

it "returns nil if no element == to object" do
[2, 1, 1, 1, 1].send(@method, 3).should == nil
end
ruby_version_is "1.8.7" do
it "accepts a block instead of an argument" do
[4, 2, 1, 5, 1, 3].send(@method) {|x| x < 2}.should == 2
end

it "ignore the block if there is an argument" do
[4, 2, 1, 5, 1, 3].send(@method, 5) {|x| x < 2}.should == 3
end
end
end

0 comments on commit e463a3b

Please sign in to comment.