mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Add a new #filter alias for #select
* In Enumerable, Enumerator::Lazy, Array, Hash and Set [Feature #13784] [ruby-core:82285] * Share specs for the various #select#select! methods and reuse them for #filter/#filter!. * Add corresponding filter tests for select tests. * Update NEWS. [Fix GH-1824] From: Alexander Patrick <adp90@case.edu> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d1ea2f9d8f
commit
b1a8c64483
24 changed files with 406 additions and 171 deletions
6
spec/ruby/library/set/filter_spec.rb
Normal file
6
spec/ruby/library/set/filter_spec.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
require File.expand_path('../../../spec_helper', __FILE__)
|
||||
require File.expand_path('../shared/select', __FILE__)
|
||||
|
||||
describe "Set#filter!" do
|
||||
it_behaves_like :set_select_bang, :filter!
|
||||
end
|
|
@ -1,42 +1,6 @@
|
|||
require File.expand_path('../../../spec_helper', __FILE__)
|
||||
require 'set'
|
||||
require File.expand_path('../shared/select', __FILE__)
|
||||
|
||||
describe "Set#select!" do
|
||||
before :each do
|
||||
@set = Set["one", "two", "three"]
|
||||
end
|
||||
|
||||
it "yields every element of self" do
|
||||
ret = []
|
||||
@set.select! { |x| ret << x }
|
||||
ret.sort.should == ["one", "two", "three"].sort
|
||||
end
|
||||
|
||||
it "keeps every element from self for which the passed block returns true" do
|
||||
@set.select! { |x| x.size != 3 }
|
||||
@set.size.should eql(1)
|
||||
|
||||
@set.should_not include("one")
|
||||
@set.should_not include("two")
|
||||
@set.should include("three")
|
||||
end
|
||||
|
||||
it "returns self when self was modified" do
|
||||
@set.select! { false }.should equal(@set)
|
||||
end
|
||||
|
||||
it "returns nil when self was not modified" do
|
||||
@set.select! { true }.should be_nil
|
||||
end
|
||||
|
||||
it "returns an Enumerator when passed no block" do
|
||||
enum = @set.select!
|
||||
enum.should be_an_instance_of(Enumerator)
|
||||
|
||||
enum.each { |x| x.size != 3 }
|
||||
|
||||
@set.should_not include("one")
|
||||
@set.should_not include("two")
|
||||
@set.should include("three")
|
||||
end
|
||||
it_behaves_like :set_select_bang, :select!
|
||||
end
|
||||
|
|
42
spec/ruby/library/set/shared/select.rb
Normal file
42
spec/ruby/library/set/shared/select.rb
Normal file
|
@ -0,0 +1,42 @@
|
|||
require File.expand_path('../../../../spec_helper', __FILE__)
|
||||
require 'set'
|
||||
|
||||
describe :set_select_bang, shared: true do
|
||||
before :each do
|
||||
@set = Set["one", "two", "three"]
|
||||
end
|
||||
|
||||
it "yields every element of self" do
|
||||
ret = []
|
||||
@set.send(@method) { |x| ret << x }
|
||||
ret.sort.should == ["one", "two", "three"].sort
|
||||
end
|
||||
|
||||
it "keeps every element from self for which the passed block returns true" do
|
||||
@set.send(@method) { |x| x.size != 3 }
|
||||
@set.size.should eql(1)
|
||||
|
||||
@set.should_not include("one")
|
||||
@set.should_not include("two")
|
||||
@set.should include("three")
|
||||
end
|
||||
|
||||
it "returns self when self was modified" do
|
||||
@set.send(@method) { false }.should equal(@set)
|
||||
end
|
||||
|
||||
it "returns nil when self was not modified" do
|
||||
@set.send(@method) { true }.should be_nil
|
||||
end
|
||||
|
||||
it "returns an Enumerator when passed no block" do
|
||||
enum = @set.send(@method)
|
||||
enum.should be_an_instance_of(Enumerator)
|
||||
|
||||
enum.each { |x| x.size != 3 }
|
||||
|
||||
@set.should_not include("one")
|
||||
@set.should_not include("two")
|
||||
@set.should include("three")
|
||||
end
|
||||
end
|
7
spec/ruby/library/set/sortedset/filter_spec.rb
Normal file
7
spec/ruby/library/set/sortedset/filter_spec.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
require File.expand_path('../../../../spec_helper', __FILE__)
|
||||
require File.expand_path('../shared/select', __FILE__)
|
||||
require 'set'
|
||||
|
||||
describe "SortedSet#filter!" do
|
||||
it_behaves_like :sorted_set_select_bang, :filter!
|
||||
end
|
|
@ -1,35 +1,7 @@
|
|||
require File.expand_path('../../../../spec_helper', __FILE__)
|
||||
require File.expand_path('../shared/select', __FILE__)
|
||||
require 'set'
|
||||
|
||||
describe "SortedSet#select!" do
|
||||
before :each do
|
||||
@set = SortedSet["one", "two", "three"]
|
||||
end
|
||||
|
||||
it "yields each Object in self in sorted order" do
|
||||
res = []
|
||||
@set.select! { |x| res << x }
|
||||
res.should == ["one", "two", "three"].sort
|
||||
end
|
||||
|
||||
it "keeps every element from self for which the passed block returns true" do
|
||||
@set.select! { |x| x.size != 3 }
|
||||
@set.to_a.should == ["three"]
|
||||
end
|
||||
|
||||
it "returns self when self was modified" do
|
||||
@set.select! { false }.should equal(@set)
|
||||
end
|
||||
|
||||
it "returns nil when self was not modified" do
|
||||
@set.select! { true }.should be_nil
|
||||
end
|
||||
|
||||
it "returns an Enumerator when passed no block" do
|
||||
enum = @set.select!
|
||||
enum.should be_an_instance_of(Enumerator)
|
||||
|
||||
enum.each { |x| x.size != 3 }
|
||||
@set.to_a.should == ["three"]
|
||||
end
|
||||
it_behaves_like :sorted_set_select_bang, :select!
|
||||
end
|
||||
|
|
35
spec/ruby/library/set/sortedset/shared/select.rb
Normal file
35
spec/ruby/library/set/sortedset/shared/select.rb
Normal file
|
@ -0,0 +1,35 @@
|
|||
require File.expand_path('../../../../../spec_helper', __FILE__)
|
||||
require 'set'
|
||||
|
||||
describe :sorted_set_select_bang, shared: true do
|
||||
before :each do
|
||||
@set = SortedSet["one", "two", "three"]
|
||||
end
|
||||
|
||||
it "yields each Object in self in sorted order" do
|
||||
res = []
|
||||
@set.send(@method) { |x| res << x }
|
||||
res.should == ["one", "two", "three"].sort
|
||||
end
|
||||
|
||||
it "keeps every element from self for which the passed block returns true" do
|
||||
@set.send(@method) { |x| x.size != 3 }
|
||||
@set.to_a.should == ["three"]
|
||||
end
|
||||
|
||||
it "returns self when self was modified" do
|
||||
@set.send(@method) { false }.should equal(@set)
|
||||
end
|
||||
|
||||
it "returns nil when self was not modified" do
|
||||
@set.send(@method) { true }.should be_nil
|
||||
end
|
||||
|
||||
it "returns an Enumerator when passed no block" do
|
||||
enum = @set.send(@method)
|
||||
enum.should be_an_instance_of(Enumerator)
|
||||
|
||||
enum.each { |x| x.size != 3 }
|
||||
@set.to_a.should == ["three"]
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue