summaryrefslogtreecommitdiff
path: root/spec/ruby/core/set
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/set')
-rw-r--r--spec/ruby/core/set/add_spec.rb22
-rw-r--r--spec/ruby/core/set/append_spec.rb5
-rw-r--r--spec/ruby/core/set/case_compare_spec.rb8
-rw-r--r--spec/ruby/core/set/case_equality_spec.rb6
-rw-r--r--spec/ruby/core/set/classify_spec.rb2
-rw-r--r--spec/ruby/core/set/clear_spec.rb4
-rw-r--r--spec/ruby/core/set/collect_spec.rb5
-rw-r--r--spec/ruby/core/set/compare_by_identity_spec.rb20
-rw-r--r--spec/ruby/core/set/comparison_spec.rb4
-rw-r--r--spec/ruby/core/set/constructor_spec.rb10
-rw-r--r--spec/ruby/core/set/delete_if_spec.rb18
-rw-r--r--spec/ruby/core/set/delete_spec.rb12
-rw-r--r--spec/ruby/core/set/difference_spec.rb5
-rw-r--r--spec/ruby/core/set/disjoint_spec.rb4
-rw-r--r--spec/ruby/core/set/divide_spec.rb12
-rw-r--r--spec/ruby/core/set/each_spec.rb4
-rw-r--r--spec/ruby/core/set/empty_spec.rb6
-rw-r--r--spec/ruby/core/set/eql_spec.rb24
-rw-r--r--spec/ruby/core/set/equal_value_spec.rb2
-rw-r--r--spec/ruby/core/set/exclusion_spec.rb4
-rw-r--r--spec/ruby/core/set/filter_spec.rb5
-rw-r--r--spec/ruby/core/set/flatten_merge_spec.rb6
-rw-r--r--spec/ruby/core/set/flatten_spec.rb22
-rw-r--r--spec/ruby/core/set/gt_spec.rb7
-rw-r--r--spec/ruby/core/set/gte_spec.rb7
-rw-r--r--spec/ruby/core/set/hash_spec.rb2
-rw-r--r--spec/ruby/core/set/include_spec.rb29
-rw-r--r--spec/ruby/core/set/initialize_spec.rb64
-rw-r--r--spec/ruby/core/set/inspect_spec.rb5
-rw-r--r--spec/ruby/core/set/intersect_spec.rb4
-rw-r--r--spec/ruby/core/set/intersection_spec.rb19
-rw-r--r--spec/ruby/core/set/join_spec.rb2
-rw-r--r--spec/ruby/core/set/keep_if_spec.rb18
-rw-r--r--spec/ruby/core/set/length_spec.rb5
-rw-r--r--spec/ruby/core/set/lt_spec.rb7
-rw-r--r--spec/ruby/core/set/lte_spec.rb7
-rw-r--r--spec/ruby/core/set/map_spec.rb20
-rw-r--r--spec/ruby/core/set/member_spec.rb5
-rw-r--r--spec/ruby/core/set/merge_spec.rb20
-rw-r--r--spec/ruby/core/set/minus_spec.rb15
-rw-r--r--spec/ruby/core/set/plus_spec.rb5
-rw-r--r--spec/ruby/core/set/pretty_print_cycle_spec.rb7
-rw-r--r--spec/ruby/core/set/proper_subset_spec.rb44
-rw-r--r--spec/ruby/core/set/proper_superset_spec.rb38
-rw-r--r--spec/ruby/core/set/reject_spec.rb20
-rw-r--r--spec/ruby/core/set/replace_spec.rb2
-rw-r--r--spec/ruby/core/set/select_spec.rb39
-rw-r--r--spec/ruby/core/set/shared/add.rb14
-rw-r--r--spec/ruby/core/set/shared/collect.rb20
-rw-r--r--spec/ruby/core/set/shared/difference.rb15
-rw-r--r--spec/ruby/core/set/shared/include.rb29
-rw-r--r--spec/ruby/core/set/shared/inspect.rb45
-rw-r--r--spec/ruby/core/set/shared/intersection.rb15
-rw-r--r--spec/ruby/core/set/shared/length.rb6
-rw-r--r--spec/ruby/core/set/shared/select.rb41
-rw-r--r--spec/ruby/core/set/shared/union.rb15
-rw-r--r--spec/ruby/core/set/size_spec.rb6
-rw-r--r--spec/ruby/core/set/sortedset/sortedset_spec.rb4
-rw-r--r--spec/ruby/core/set/subset_spec.rb44
-rw-r--r--spec/ruby/core/set/superset_spec.rb38
-rw-r--r--spec/ruby/core/set/to_s_spec.rb46
-rw-r--r--spec/ruby/core/set/union_spec.rb19
62 files changed, 468 insertions, 490 deletions
diff --git a/spec/ruby/core/set/add_spec.rb b/spec/ruby/core/set/add_spec.rb
index 0fe1a0926c..1a018b186a 100644
--- a/spec/ruby/core/set/add_spec.rb
+++ b/spec/ruby/core/set/add_spec.rb
@@ -1,8 +1,18 @@
require_relative '../../spec_helper'
-require_relative 'shared/add'
describe "Set#add" do
- it_behaves_like :set_add, :add
+ before :each do
+ @set = Set.new
+ end
+
+ it "adds the passed Object to self" do
+ @set.add("dog")
+ @set.should.include?("dog")
+ end
+
+ it "returns self" do
+ @set.add("dog").should.equal?(@set)
+ end
end
describe "Set#add?" do
@@ -12,22 +22,22 @@ describe "Set#add?" do
it "adds the passed Object to self" do
@set.add?("cat")
- @set.should include("cat")
+ @set.should.include?("cat")
end
it "returns self when the Object has not yet been added to self" do
- @set.add?("cat").should equal(@set)
+ @set.add?("cat").should.equal?(@set)
end
it "returns nil when the Object has already been added to self" do
@set.add?("cat")
- @set.add?("cat").should be_nil
+ @set.add?("cat").should == nil
end
it "raises RuntimeError when called during iteration" do
set = Set[:a, :b, :c, :d, :e, :f]
set.each do |_m|
- -> { set << 1 }.should raise_error(RuntimeError, /iteration/)
+ -> { set << 1 }.should.raise(RuntimeError, /iteration/)
end
set.should == Set[:a, :b, :c, :d, :e, :f]
end
diff --git a/spec/ruby/core/set/append_spec.rb b/spec/ruby/core/set/append_spec.rb
index 82d34d9130..4f4e2351e2 100644
--- a/spec/ruby/core/set/append_spec.rb
+++ b/spec/ruby/core/set/append_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/add'
describe "Set#<<" do
- it_behaves_like :set_add, :<<
+ it "is an alias of Set#add" do
+ Set.instance_method(:<<).should == Set.instance_method(:add)
+ end
end
diff --git a/spec/ruby/core/set/case_compare_spec.rb b/spec/ruby/core/set/case_compare_spec.rb
index 3781b1b963..6fe749c79b 100644
--- a/spec/ruby/core/set/case_compare_spec.rb
+++ b/spec/ruby/core/set/case_compare_spec.rb
@@ -1,11 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/include'
describe "Set#===" do
- it_behaves_like :set_include, :===
-
- it "is an alias for include?" do
- set = Set.new
- set.method(:===).should == set.method(:include?)
+ it "is an alias of Set#include?" do
+ Set.instance_method(:===).should == Set.instance_method(:include?)
end
end
diff --git a/spec/ruby/core/set/case_equality_spec.rb b/spec/ruby/core/set/case_equality_spec.rb
deleted file mode 100644
index 19c1fb6b9c..0000000000
--- a/spec/ruby/core/set/case_equality_spec.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require_relative '../../spec_helper'
-require_relative 'shared/include'
-
-describe "Set#===" do
- it_behaves_like :set_include, :===
-end
diff --git a/spec/ruby/core/set/classify_spec.rb b/spec/ruby/core/set/classify_spec.rb
index d86ea2722d..a225ab7cbb 100644
--- a/spec/ruby/core/set/classify_spec.rb
+++ b/spec/ruby/core/set/classify_spec.rb
@@ -13,7 +13,7 @@ describe "Set#classify" do
it "returns an Enumerator when passed no block" do
enum = @set.classify
- enum.should be_an_instance_of(Enumerator)
+ enum.should.instance_of?(Enumerator)
classified = enum.each { |x| x.length }
classified.should == { 3 => Set["one", "two"], 4 => Set["four"], 5 => Set["three"] }
diff --git a/spec/ruby/core/set/clear_spec.rb b/spec/ruby/core/set/clear_spec.rb
index ebeac211d3..c61a0d78f2 100644
--- a/spec/ruby/core/set/clear_spec.rb
+++ b/spec/ruby/core/set/clear_spec.rb
@@ -7,10 +7,10 @@ describe "Set#clear" do
it "removes all elements from self" do
@set.clear
- @set.should be_empty
+ @set.should.empty?
end
it "returns self" do
- @set.clear.should equal(@set)
+ @set.clear.should.equal?(@set)
end
end
diff --git a/spec/ruby/core/set/collect_spec.rb b/spec/ruby/core/set/collect_spec.rb
index d186f1a0d9..b78ee493d4 100644
--- a/spec/ruby/core/set/collect_spec.rb
+++ b/spec/ruby/core/set/collect_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/collect'
describe "Set#collect!" do
- it_behaves_like :set_collect_bang, :collect!
+ it "is an alias of Set#map!" do
+ Set.instance_method(:collect!).should == Set.instance_method(:map!)
+ end
end
diff --git a/spec/ruby/core/set/compare_by_identity_spec.rb b/spec/ruby/core/set/compare_by_identity_spec.rb
index 0dda6d79f0..458e760da0 100644
--- a/spec/ruby/core/set/compare_by_identity_spec.rb
+++ b/spec/ruby/core/set/compare_by_identity_spec.rb
@@ -16,9 +16,9 @@ describe "Set#compare_by_identity" do
elt = [1]
set = Set.new
set << elt
- set.member?(elt.dup).should be_true
+ set.member?(elt.dup).should == true
set.compare_by_identity
- set.member?(elt.dup).should be_false
+ set.member?(elt.dup).should == false
end
it "rehashes internally so that old members can be looked up" do
@@ -28,19 +28,19 @@ describe "Set#compare_by_identity" do
def o.hash; 123; end
set << o
set.compare_by_identity
- set.member?(o).should be_true
+ set.member?(o).should == true
end
it "returns self" do
set = Set.new
result = set.compare_by_identity
- result.should equal(set)
+ result.should.equal?(set)
end
it "is idempotent and has no effect on an already compare_by_identity set" do
set = Set.new.compare_by_identity
set << :foo
- set.compare_by_identity.should equal(set)
+ set.compare_by_identity.should.equal?(set)
set.should.compare_by_identity?
set.to_a.should == [:foo]
end
@@ -69,7 +69,7 @@ describe "Set#compare_by_identity" do
elt.should_not_receive(:hash)
set = Set.new.compare_by_identity
set << elt
- set.member?(elt).should be_true
+ set.member?(elt).should == true
end
it "regards #dup'd objects as having different identities" do
@@ -90,21 +90,21 @@ describe "Set#compare_by_identity" do
set.to_a.sort.should == [a1, a2].sort
end
- ruby_version_is "3.5" do
+ ruby_version_is "4.0" do
it "raises a FrozenError on frozen sets" do
set = Set.new.freeze
-> {
set.compare_by_identity
- }.should raise_error(FrozenError, /can't modify frozen Set: (#<)?Set(\[|: {)[\]}]>?/)
+ }.should.raise(FrozenError, /can't modify frozen Set: (#<)?Set(\[|: {)[\]}]>?/)
end
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
it "raises a FrozenError on frozen sets" do
set = Set.new.freeze
-> {
set.compare_by_identity
- }.should raise_error(FrozenError, /frozen Hash/)
+ }.should.raise(FrozenError, /frozen Hash/)
end
end
diff --git a/spec/ruby/core/set/comparison_spec.rb b/spec/ruby/core/set/comparison_spec.rb
index 62059b70b3..eb18a198e5 100644
--- a/spec/ruby/core/set/comparison_spec.rb
+++ b/spec/ruby/core/set/comparison_spec.rb
@@ -17,10 +17,10 @@ describe "Set#<=>" do
end
it "returns nil if the set has unique elements" do
- (Set[1, 2, 3] <=> Set[:a, :b, :c]).should be_nil
+ (Set[1, 2, 3] <=> Set[:a, :b, :c]).should == nil
end
it "returns nil when the argument is not set-like" do
- (Set[] <=> false).should be_nil
+ (Set[] <=> false).should == nil
end
end
diff --git a/spec/ruby/core/set/constructor_spec.rb b/spec/ruby/core/set/constructor_spec.rb
index 365081ad39..11138f3a5b 100644
--- a/spec/ruby/core/set/constructor_spec.rb
+++ b/spec/ruby/core/set/constructor_spec.rb
@@ -4,11 +4,11 @@ describe "Set[]" do
it "returns a new Set populated with the passed Objects" do
set = Set[1, 2, 3]
- set.instance_of?(Set).should be_true
- set.size.should eql(3)
+ set.instance_of?(Set).should == true
+ set.size.should.eql?(3)
- set.should include(1)
- set.should include(2)
- set.should include(3)
+ set.should.include?(1)
+ set.should.include?(2)
+ set.should.include?(3)
end
end
diff --git a/spec/ruby/core/set/delete_if_spec.rb b/spec/ruby/core/set/delete_if_spec.rb
index beda73a5e5..b231dff50d 100644
--- a/spec/ruby/core/set/delete_if_spec.rb
+++ b/spec/ruby/core/set/delete_if_spec.rb
@@ -13,25 +13,25 @@ describe "Set#delete_if" do
it "deletes every element from self for which the passed block returns true" do
@set.delete_if { |x| x.size == 3 }
- @set.size.should eql(1)
+ @set.size.should.eql?(1)
- @set.should_not include("one")
- @set.should_not include("two")
- @set.should include("three")
+ @set.should_not.include?("one")
+ @set.should_not.include?("two")
+ @set.should.include?("three")
end
it "returns self" do
- @set.delete_if { |x| x }.should equal(@set)
+ @set.delete_if { |x| x }.should.equal?(@set)
end
it "returns an Enumerator when passed no block" do
enum = @set.delete_if
- enum.should be_an_instance_of(Enumerator)
+ enum.should.instance_of?(Enumerator)
enum.each { |x| x.size == 3 }
- @set.should_not include("one")
- @set.should_not include("two")
- @set.should include("three")
+ @set.should_not.include?("one")
+ @set.should_not.include?("two")
+ @set.should.include?("three")
end
end
diff --git a/spec/ruby/core/set/delete_spec.rb b/spec/ruby/core/set/delete_spec.rb
index a2543ecbee..cdc6dd7b36 100644
--- a/spec/ruby/core/set/delete_spec.rb
+++ b/spec/ruby/core/set/delete_spec.rb
@@ -7,12 +7,12 @@ describe "Set#delete" do
it "deletes the passed Object from self" do
@set.delete("a")
- @set.should_not include("a")
+ @set.should_not.include?("a")
end
it "returns self" do
- @set.delete("a").should equal(@set)
- @set.delete("x").should equal(@set)
+ @set.delete("a").should.equal?(@set)
+ @set.delete("x").should.equal?(@set)
end
end
@@ -23,14 +23,14 @@ describe "Set#delete?" do
it "deletes the passed Object from self" do
@set.delete?("a")
- @set.should_not include("a")
+ @set.should_not.include?("a")
end
it "returns self when the passed Object is in self" do
- @set.delete?("a").should equal(@set)
+ @set.delete?("a").should.equal?(@set)
end
it "returns nil when the passed Object is not in self" do
- @set.delete?("x").should be_nil
+ @set.delete?("x").should == nil
end
end
diff --git a/spec/ruby/core/set/difference_spec.rb b/spec/ruby/core/set/difference_spec.rb
index 149f946592..22d89973a8 100644
--- a/spec/ruby/core/set/difference_spec.rb
+++ b/spec/ruby/core/set/difference_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/difference'
describe "Set#difference" do
- it_behaves_like :set_difference, :difference
+ it "is an alias of Set#-" do
+ Set.instance_method(:difference).should == Set.instance_method(:-)
+ end
end
diff --git a/spec/ruby/core/set/disjoint_spec.rb b/spec/ruby/core/set/disjoint_spec.rb
index 89a3c4b157..d415c21045 100644
--- a/spec/ruby/core/set/disjoint_spec.rb
+++ b/spec/ruby/core/set/disjoint_spec.rb
@@ -12,11 +12,11 @@ describe "Set#disjoint?" do
context "when comparing to a Set-like object" do
it "returns false when a Set has at least one element in common with a Set-like object" do
- Set[1, 2].disjoint?(SetSpecs::SetLike.new([2, 3])).should be_false
+ Set[1, 2].disjoint?(SetSpecs::SetLike.new([2, 3])).should == false
end
it "returns true when a Set has no element in common with a Set-like object" do
- Set[1, 2].disjoint?(SetSpecs::SetLike.new([3, 4])).should be_true
+ Set[1, 2].disjoint?(SetSpecs::SetLike.new([3, 4])).should == true
end
end
end
diff --git a/spec/ruby/core/set/divide_spec.rb b/spec/ruby/core/set/divide_spec.rb
index cbe0042f16..409a22df75 100644
--- a/spec/ruby/core/set/divide_spec.rb
+++ b/spec/ruby/core/set/divide_spec.rb
@@ -14,7 +14,7 @@ describe "Set#divide" do
it "returns an enumerator when not passed a block" do
ret = Set[1, 2, 3, 4].divide
- ret.should be_kind_of(Enumerator)
+ ret.should.is_a?(Enumerator)
ret.each(&:even?).should == Set[Set[1, 3], Set[2, 4]]
end
end
@@ -25,7 +25,7 @@ describe "Set#divide when passed a block with an arity of 2" do
set.map{ |x| x.to_a.sort }.sort.should == [[1], [3, 4], [6], [9, 10, 11]]
end
- ruby_version_is "3.5" do
+ ruby_version_is "4.0" do
it "yields each two Object to the block" do
ret = []
Set[1, 2].divide { |x, y| ret << [x, y] }
@@ -33,7 +33,7 @@ describe "Set#divide when passed a block with an arity of 2" do
end
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
it "yields each two Object to the block" do
ret = []
Set[1, 2].divide { |x, y| ret << [x, y] }
@@ -43,7 +43,7 @@ describe "Set#divide when passed a block with an arity of 2" do
it "returns an enumerator when not passed a block" do
ret = Set[1, 2, 3, 4].divide
- ret.should be_kind_of(Enumerator)
+ ret.should.is_a?(Enumerator)
ret.each { |a, b| (a + b).even? }.should == Set[Set[1, 3], Set[2, 4]]
end
end
@@ -51,8 +51,8 @@ end
describe "Set#divide when passed a block with an arity of > 2" do
it "only uses the first element if the arity > 2" do
set = Set["one", "two", "three", "four", "five"].divide do |x, y, z|
- y.should be_nil
- z.should be_nil
+ y.should == nil
+ z.should == nil
x.length
end
set.map { |x| x.to_a.sort }.sort.should == [["five", "four"], ["one", "two"], ["three"]]
diff --git a/spec/ruby/core/set/each_spec.rb b/spec/ruby/core/set/each_spec.rb
index 3d9cdc2d46..bdafc99571 100644
--- a/spec/ruby/core/set/each_spec.rb
+++ b/spec/ruby/core/set/each_spec.rb
@@ -12,12 +12,12 @@ describe "Set#each" do
end
it "returns self" do
- @set.each { |x| x }.should equal(@set)
+ @set.each { |x| x }.should.equal?(@set)
end
it "returns an Enumerator when not passed a block" do
enum = @set.each
- enum.should be_an_instance_of(Enumerator)
+ enum.should.instance_of?(Enumerator)
ret = []
enum.each { |x| ret << x }
diff --git a/spec/ruby/core/set/empty_spec.rb b/spec/ruby/core/set/empty_spec.rb
index 4b55658e20..c71f2ce18d 100644
--- a/spec/ruby/core/set/empty_spec.rb
+++ b/spec/ruby/core/set/empty_spec.rb
@@ -2,8 +2,8 @@ require_relative '../../spec_helper'
describe "Set#empty?" do
it "returns true if self is empty" do
- Set[].empty?.should be_true
- Set[1].empty?.should be_false
- Set[1,2,3].empty?.should be_false
+ Set[].empty?.should == true
+ Set[1].empty?.should == false
+ Set[1,2,3].empty?.should == false
end
end
diff --git a/spec/ruby/core/set/eql_spec.rb b/spec/ruby/core/set/eql_spec.rb
index 4ad5c3aa5a..e7eacf2999 100644
--- a/spec/ruby/core/set/eql_spec.rb
+++ b/spec/ruby/core/set/eql_spec.rb
@@ -1,14 +1,22 @@
require_relative '../../spec_helper'
describe "Set#eql?" do
- it "returns true when the passed argument is a Set and contains the same elements" do
- Set[].should eql(Set[])
- Set[1, 2, 3].should eql(Set[1, 2, 3])
- Set[1, 2, 3].should eql(Set[3, 2, 1])
- Set["a", :b, ?c].should eql(Set[?c, :b, "a"])
+ ruby_version_is ""..."4.0" do
+ it "returns true when the passed argument is a Set and contains the same elements" do
+ Set[].should.eql?(Set[])
+ Set[1, 2, 3].should.eql?(Set[1, 2, 3])
+ Set[1, 2, 3].should.eql?(Set[3, 2, 1])
+ Set["a", :b, ?c].should.eql?(Set[?c, :b, "a"])
- Set[1, 2, 3].should_not eql(Set[1.0, 2, 3])
- Set[1, 2, 3].should_not eql(Set[2, 3])
- Set[1, 2, 3].should_not eql(Set[])
+ Set[1, 2, 3].should_not.eql?(Set[1.0, 2, 3])
+ Set[1, 2, 3].should_not.eql?(Set[2, 3])
+ Set[1, 2, 3].should_not.eql?(Set[])
+ end
+ end
+
+ ruby_version_is "4.0" do
+ it "is an alias of Set#==" do
+ Set.instance_method(:eql?).should == Set.instance_method(:==)
+ end
end
end
diff --git a/spec/ruby/core/set/equal_value_spec.rb b/spec/ruby/core/set/equal_value_spec.rb
index e3514928c8..721a79a3f1 100644
--- a/spec/ruby/core/set/equal_value_spec.rb
+++ b/spec/ruby/core/set/equal_value_spec.rb
@@ -24,7 +24,7 @@ describe "Set#==" do
set1.should == set2
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
context "when comparing to a Set-like object" do
it "returns true when a Set and a Set-like object contain the same elements" do
Set[1, 2, 3].should == SetSpecs::SetLike.new([1, 2, 3])
diff --git a/spec/ruby/core/set/exclusion_spec.rb b/spec/ruby/core/set/exclusion_spec.rb
index bbc29afa95..52ee34fe78 100644
--- a/spec/ruby/core/set/exclusion_spec.rb
+++ b/spec/ruby/core/set/exclusion_spec.rb
@@ -11,7 +11,7 @@ describe "Set#^" do
end
it "raises an ArgumentError when passed a non-Enumerable" do
- -> { @set ^ 3 }.should raise_error(ArgumentError)
- -> { @set ^ Object.new }.should raise_error(ArgumentError)
+ -> { @set ^ 3 }.should.raise(ArgumentError)
+ -> { @set ^ Object.new }.should.raise(ArgumentError)
end
end
diff --git a/spec/ruby/core/set/filter_spec.rb b/spec/ruby/core/set/filter_spec.rb
index 779254ad68..d0c294c27f 100644
--- a/spec/ruby/core/set/filter_spec.rb
+++ b/spec/ruby/core/set/filter_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/select'
describe "Set#filter!" do
- it_behaves_like :set_select_bang, :filter!
+ it "is an alias of Set#select!" do
+ Set.instance_method(:filter!).should == Set.instance_method(:select!)
+ end
end
diff --git a/spec/ruby/core/set/flatten_merge_spec.rb b/spec/ruby/core/set/flatten_merge_spec.rb
index d7c2b30657..3904d969ae 100644
--- a/spec/ruby/core/set/flatten_merge_spec.rb
+++ b/spec/ruby/core/set/flatten_merge_spec.rb
@@ -1,9 +1,9 @@
require_relative '../../spec_helper'
describe "Set#flatten_merge" do
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
it "is protected" do
- Set.should have_protected_instance_method("flatten_merge")
+ Set.protected_instance_methods(false).should.include?(:flatten_merge)
end
it "flattens the passed Set and merges it into self" do
@@ -18,7 +18,7 @@ describe "Set#flatten_merge" do
set2 = Set[5, 6, 7]
set2 << set2
- -> { set1.send(:flatten_merge, set2) }.should raise_error(ArgumentError)
+ -> { set1.send(:flatten_merge, set2) }.should.raise(ArgumentError)
end
end
end
diff --git a/spec/ruby/core/set/flatten_spec.rb b/spec/ruby/core/set/flatten_spec.rb
index 870eccc2f1..ca6323fac8 100644
--- a/spec/ruby/core/set/flatten_spec.rb
+++ b/spec/ruby/core/set/flatten_spec.rb
@@ -7,16 +7,16 @@ describe "Set#flatten" do
set = Set[1, 2, Set[3, 4, Set[5, 6, Set[7, 8]]], 9, 10]
flattened_set = set.flatten
- flattened_set.should_not equal(set)
+ flattened_set.should_not.equal?(set)
flattened_set.should == Set[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
end
it "raises an ArgumentError when self is recursive" do
(set = Set[]) << set
- -> { set.flatten }.should raise_error(ArgumentError)
+ -> { set.flatten }.should.raise(ArgumentError)
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
context "when Set contains a Set-like object" do
it "returns a copy of self with each included Set-like object flattened" do
Set[SetSpecs::SetLike.new([1])].flatten.should == Set[1]
@@ -34,26 +34,16 @@ describe "Set#flatten!" do
it "returns self when self was modified" do
set = Set[1, 2, Set[3, 4]]
- set.flatten!.should equal(set)
+ set.flatten!.should.equal?(set)
end
it "returns nil when self was not modified" do
set = Set[1, 2, 3, 4]
- set.flatten!.should be_nil
+ set.flatten!.should == nil
end
it "raises an ArgumentError when self is recursive" do
(set = Set[]) << set
- -> { set.flatten! }.should raise_error(ArgumentError)
- end
-
- version_is(set_version, ""..."1.1.0") do #ruby_version_is ""..."3.3" do
- ruby_version_is ""..."3.5" do
- context "when Set contains a Set-like object" do
- it "flattens self, including Set-like objects" do
- Set[SetSpecs::SetLike.new([1])].flatten!.should == Set[1]
- end
- end
- end
+ -> { set.flatten! }.should.raise(ArgumentError)
end
end
diff --git a/spec/ruby/core/set/gt_spec.rb b/spec/ruby/core/set/gt_spec.rb
new file mode 100644
index 0000000000..8a7e421e40
--- /dev/null
+++ b/spec/ruby/core/set/gt_spec.rb
@@ -0,0 +1,7 @@
+require_relative '../../spec_helper'
+
+describe "Set#>" do
+ it "is an alias of Set#proper_superset?" do
+ Set.instance_method(:>).should == Set.instance_method(:proper_superset?)
+ end
+end
diff --git a/spec/ruby/core/set/gte_spec.rb b/spec/ruby/core/set/gte_spec.rb
new file mode 100644
index 0000000000..e98c3cb1e2
--- /dev/null
+++ b/spec/ruby/core/set/gte_spec.rb
@@ -0,0 +1,7 @@
+require_relative '../../spec_helper'
+
+describe "Set#>=" do
+ it "is an alias of Set#superset?" do
+ Set.instance_method(:>=).should == Set.instance_method(:superset?)
+ end
+end
diff --git a/spec/ruby/core/set/hash_spec.rb b/spec/ruby/core/set/hash_spec.rb
index 4b4696e34c..63a0aa66a5 100644
--- a/spec/ruby/core/set/hash_spec.rb
+++ b/spec/ruby/core/set/hash_spec.rb
@@ -10,7 +10,7 @@ describe "Set#hash" do
Set[1, 2, 3].hash.should_not == Set[:a, "b", ?c].hash
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
# see https://github.com/jruby/jruby/issues/8393
it "is equal to nil.hash for an uninitialized Set" do
Set.allocate.hash.should == nil.hash
diff --git a/spec/ruby/core/set/include_spec.rb b/spec/ruby/core/set/include_spec.rb
index dd33bbc3bd..92a6ca04e6 100644
--- a/spec/ruby/core/set/include_spec.rb
+++ b/spec/ruby/core/set/include_spec.rb
@@ -1,6 +1,31 @@
require_relative '../../spec_helper'
-require_relative 'shared/include'
describe "Set#include?" do
- it_behaves_like :set_include, :include?
+ it "returns true when self contains the passed Object" do
+ set = Set[:a, :b, :c]
+ set.include?(:a).should == true
+ set.include?(:e).should == false
+ end
+
+ describe "member equality" do
+ it "is checked using both #hash and #eql?" do
+ obj = Object.new
+ obj_another = Object.new
+
+ def obj.hash; 42 end
+ def obj_another.hash; 42 end
+ def obj_another.eql?(o) hash == o.hash end
+
+ set = Set["a", "b", "c", obj]
+ set.include?(obj_another).should == true
+ end
+
+ it "is not checked using #==" do
+ obj = Object.new
+ set = Set["a", "b", "c"]
+
+ obj.should_not_receive(:==)
+ set.include?(obj)
+ end
+ end
end
diff --git a/spec/ruby/core/set/initialize_spec.rb b/spec/ruby/core/set/initialize_spec.rb
index ad9e1bd8c9..45538b38fb 100644
--- a/spec/ruby/core/set/initialize_spec.rb
+++ b/spec/ruby/core/set/initialize_spec.rb
@@ -2,71 +2,87 @@ require_relative '../../spec_helper'
describe "Set#initialize" do
it "is private" do
- Set.should have_private_instance_method(:initialize)
+ Set.private_instance_methods(false).should.include?(:initialize)
end
it "adds all elements of the passed Enumerable to self" do
s = Set.new([1, 2, 3])
- s.size.should eql(3)
- s.should include(1)
- s.should include(2)
- s.should include(3)
+ s.size.should.eql?(3)
+ s.should.include?(1)
+ s.should.include?(2)
+ s.should.include?(3)
end
it "uses #each_entry on the provided Enumerable" do
enumerable = MockObject.new('mock-enumerable')
enumerable.should_receive(:each_entry).and_yield(1).and_yield(2).and_yield(3)
s = Set.new(enumerable)
- s.size.should eql(3)
- s.should include(1)
- s.should include(2)
- s.should include(3)
+ s.size.should.eql?(3)
+ s.should.include?(1)
+ s.should.include?(2)
+ s.should.include?(3)
end
it "uses #each on the provided Enumerable if it does not respond to #each_entry" do
enumerable = MockObject.new('mock-enumerable')
enumerable.should_receive(:each).and_yield(1).and_yield(2).and_yield(3)
s = Set.new(enumerable)
- s.size.should eql(3)
- s.should include(1)
- s.should include(2)
- s.should include(3)
+ s.size.should.eql?(3)
+ s.should.include?(1)
+ s.should.include?(2)
+ s.should.include?(3)
end
it "raises if the provided Enumerable does not respond to #each_entry or #each" do
enumerable = MockObject.new('mock-enumerable')
- -> { Set.new(enumerable) }.should raise_error(ArgumentError, "value must be enumerable")
+ -> { Set.new(enumerable) }.should.raise(ArgumentError, "value must be enumerable")
end
it "should initialize with empty array and set" do
s = Set.new([])
- s.size.should eql(0)
+ s.size.should.eql?(0)
s = Set.new({})
- s.size.should eql(0)
+ s.size.should.eql?(0)
end
it "preprocesses all elements by a passed block before adding to self" do
s = Set.new([1, 2, 3]) { |x| x * x }
- s.size.should eql(3)
- s.should include(1)
- s.should include(4)
- s.should include(9)
+ s.size.should.eql?(3)
+ s.should.include?(1)
+ s.should.include?(4)
+ s.should.include?(9)
end
it "should initialize with empty array and block" do
s = Set.new([]) { |x| x * x }
- s.size.should eql(0)
+ s.size.should.eql?(0)
end
it "should initialize with empty set and block" do
s = Set.new(Set.new) { |x| x * x }
- s.size.should eql(0)
+ s.size.should.eql?(0)
+ end
+
+ it "should initialize with set" do
+ o = Set.new([1, 2])
+ s = Set.new(o)
+ s.size.should.eql?(2)
+ s.should.include?(1)
+ s.should.include?(2)
+ end
+
+ it "should initialize with set and block" do
+ o = Set.new([1, 2])
+ s = Set.new(o) { |e| e + 2 }
+ s.size.should.eql?(2)
+ s.should.include?(3)
+ s.should.include?(4)
end
it "should initialize with just block" do
s = Set.new { |x| x * x }
- s.size.should eql(0)
- s.should eql(Set.new)
+ s.size.should.eql?(0)
+ s.should.eql?(Set.new)
end
end
diff --git a/spec/ruby/core/set/inspect_spec.rb b/spec/ruby/core/set/inspect_spec.rb
index 0dcce83eb6..45aeed280e 100644
--- a/spec/ruby/core/set/inspect_spec.rb
+++ b/spec/ruby/core/set/inspect_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/inspect'
describe "Set#inspect" do
- it_behaves_like :set_inspect, :inspect
+ it "is an alias of Set#to_s" do
+ Set.instance_method(:inspect).should == Set.instance_method(:to_s)
+ end
end
diff --git a/spec/ruby/core/set/intersect_spec.rb b/spec/ruby/core/set/intersect_spec.rb
index 0736dea5fd..d04a1af441 100644
--- a/spec/ruby/core/set/intersect_spec.rb
+++ b/spec/ruby/core/set/intersect_spec.rb
@@ -12,11 +12,11 @@ describe "Set#intersect?" do
context "when comparing to a Set-like object" do
it "returns true when a Set has at least one element in common with a Set-like object" do
- Set[1, 2].intersect?(SetSpecs::SetLike.new([2, 3])).should be_true
+ Set[1, 2].intersect?(SetSpecs::SetLike.new([2, 3])).should == true
end
it "returns false when a Set has no element in common with a Set-like object" do
- Set[1, 2].intersect?(SetSpecs::SetLike.new([3, 4])).should be_false
+ Set[1, 2].intersect?(SetSpecs::SetLike.new([3, 4])).should == false
end
end
end
diff --git a/spec/ruby/core/set/intersection_spec.rb b/spec/ruby/core/set/intersection_spec.rb
index 136b886775..c14e1f62ad 100644
--- a/spec/ruby/core/set/intersection_spec.rb
+++ b/spec/ruby/core/set/intersection_spec.rb
@@ -1,10 +1,23 @@
require_relative '../../spec_helper'
-require_relative 'shared/intersection'
describe "Set#intersection" do
- it_behaves_like :set_intersection, :intersection
+ it "is an alias of Set#&" do
+ Set.instance_method(:intersection).should == Set.instance_method(:&)
+ end
end
describe "Set#&" do
- it_behaves_like :set_intersection, :&
+ before :each do
+ @set = Set[:a, :b, :c]
+ end
+
+ it "returns a new Set containing only elements shared by self and the passed Enumerable" do
+ (@set & Set[:b, :c, :d, :e]).should == Set[:b, :c]
+ (@set & [:b, :c, :d]).should == Set[:b, :c]
+ end
+
+ it "raises an ArgumentError when passed a non-Enumerable" do
+ -> { @set & 1 }.should.raise(ArgumentError)
+ -> { @set & Object.new }.should.raise(ArgumentError)
+ end
end
diff --git a/spec/ruby/core/set/join_spec.rb b/spec/ruby/core/set/join_spec.rb
index cdb593597d..1c1e8a8af8 100644
--- a/spec/ruby/core/set/join_spec.rb
+++ b/spec/ruby/core/set/join_spec.rb
@@ -20,7 +20,7 @@ describe "Set#join" do
set.join(' | ').should == "a | b | c"
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
it "calls #to_a to convert the Set in to an Array" do
set = Set[:a, :b, :c]
set.should_receive(:to_a).and_return([:a, :b, :c])
diff --git a/spec/ruby/core/set/keep_if_spec.rb b/spec/ruby/core/set/keep_if_spec.rb
index d6abdd6adc..7ca5d0cd43 100644
--- a/spec/ruby/core/set/keep_if_spec.rb
+++ b/spec/ruby/core/set/keep_if_spec.rb
@@ -13,25 +13,25 @@ describe "Set#keep_if" do
it "keeps every element from self for which the passed block returns true" do
@set.keep_if { |x| x.size != 3 }
- @set.size.should eql(1)
+ @set.size.should.eql?(1)
- @set.should_not include("one")
- @set.should_not include("two")
- @set.should include("three")
+ @set.should_not.include?("one")
+ @set.should_not.include?("two")
+ @set.should.include?("three")
end
it "returns self" do
- @set.keep_if {}.should equal(@set)
+ @set.keep_if {}.should.equal?(@set)
end
it "returns an Enumerator when passed no block" do
enum = @set.keep_if
- enum.should be_an_instance_of(Enumerator)
+ enum.should.instance_of?(Enumerator)
enum.each { |x| x.size != 3 }
- @set.should_not include("one")
- @set.should_not include("two")
- @set.should include("three")
+ @set.should_not.include?("one")
+ @set.should_not.include?("two")
+ @set.should.include?("three")
end
end
diff --git a/spec/ruby/core/set/length_spec.rb b/spec/ruby/core/set/length_spec.rb
index 6bb697b4ca..9b0d3622b8 100644
--- a/spec/ruby/core/set/length_spec.rb
+++ b/spec/ruby/core/set/length_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/length'
describe "Set#length" do
- it_behaves_like :set_length, :length
+ it "is an alias of Set#size" do
+ Set.instance_method(:length).should == Set.instance_method(:size)
+ end
end
diff --git a/spec/ruby/core/set/lt_spec.rb b/spec/ruby/core/set/lt_spec.rb
new file mode 100644
index 0000000000..0f5bc9c642
--- /dev/null
+++ b/spec/ruby/core/set/lt_spec.rb
@@ -0,0 +1,7 @@
+require_relative '../../spec_helper'
+
+describe "Set#<" do
+ it "is an alias of Set#proper_subset?" do
+ Set.instance_method(:<).should == Set.instance_method(:proper_subset?)
+ end
+end
diff --git a/spec/ruby/core/set/lte_spec.rb b/spec/ruby/core/set/lte_spec.rb
new file mode 100644
index 0000000000..291d582240
--- /dev/null
+++ b/spec/ruby/core/set/lte_spec.rb
@@ -0,0 +1,7 @@
+require_relative '../../spec_helper'
+
+describe "Set#<=" do
+ it "is an alias of Set#subset?" do
+ Set.instance_method(:<=).should == Set.instance_method(:subset?)
+ end
+end
diff --git a/spec/ruby/core/set/map_spec.rb b/spec/ruby/core/set/map_spec.rb
index 996191b0a8..fd04a8bde1 100644
--- a/spec/ruby/core/set/map_spec.rb
+++ b/spec/ruby/core/set/map_spec.rb
@@ -1,6 +1,22 @@
require_relative '../../spec_helper'
-require_relative 'shared/collect'
describe "Set#map!" do
- it_behaves_like :set_collect_bang, :map!
+ before :each do
+ @set = Set[1, 2, 3, 4, 5]
+ end
+
+ it "yields each Object in self" do
+ res = []
+ @set.map! { |x| res << x }
+ res.sort.should == [1, 2, 3, 4, 5].sort
+ end
+
+ it "returns self" do
+ @set.map! { |x| x }.should.equal?(@set)
+ end
+
+ it "replaces self with the return values of the block" do
+ @set.map! { |x| x * 2 }
+ @set.should == Set[2, 4, 6, 8, 10]
+ end
end
diff --git a/spec/ruby/core/set/member_spec.rb b/spec/ruby/core/set/member_spec.rb
index 5c82e8f826..a36308eec7 100644
--- a/spec/ruby/core/set/member_spec.rb
+++ b/spec/ruby/core/set/member_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/include'
describe "Set#member?" do
- it_behaves_like :set_include, :member?
+ it "is an alias of Set#include?" do
+ Set.instance_method(:member?).should == Set.instance_method(:include?)
+ end
end
diff --git a/spec/ruby/core/set/merge_spec.rb b/spec/ruby/core/set/merge_spec.rb
index 0c6ed27670..a2c1a7e706 100644
--- a/spec/ruby/core/set/merge_spec.rb
+++ b/spec/ruby/core/set/merge_spec.rb
@@ -8,30 +8,22 @@ describe "Set#merge" do
it "returns self" do
set = Set[1, 2]
- set.merge([3, 4]).should equal(set)
+ set.merge([3, 4]).should.equal?(set)
end
it "raises an ArgumentError when passed a non-Enumerable" do
- -> { Set[1, 2].merge(1) }.should raise_error(ArgumentError)
- -> { Set[1, 2].merge(Object.new) }.should raise_error(ArgumentError)
+ -> { Set[1, 2].merge(1) }.should.raise(ArgumentError)
+ -> { Set[1, 2].merge(Object.new) }.should.raise(ArgumentError)
end
it "raises RuntimeError when called during iteration" do
set = Set[:a, :b]
set.each do |_m|
- -> { set.merge([1, 2]) }.should raise_error(RuntimeError, /iteration/)
+ -> { set.merge([1, 2]) }.should.raise(RuntimeError, /iteration/)
end
end
- ruby_version_is ""..."3.3" do
- it "accepts only a single argument" do
- -> { Set[].merge([], []) }.should raise_error(ArgumentError, "wrong number of arguments (given 2, expected 1)")
- end
- end
-
- ruby_version_is "3.3" do
- it "accepts multiple arguments" do
- Set[:a, :b].merge(Set[:b, :c], [:d]).should == Set[:a, :b, :c, :d]
- end
+ it "accepts multiple arguments" do
+ Set[:a, :b].merge(Set[:b, :c], [:d]).should == Set[:a, :b, :c, :d]
end
end
diff --git a/spec/ruby/core/set/minus_spec.rb b/spec/ruby/core/set/minus_spec.rb
index 72f98f985e..8574708559 100644
--- a/spec/ruby/core/set/minus_spec.rb
+++ b/spec/ruby/core/set/minus_spec.rb
@@ -1,6 +1,17 @@
require_relative '../../spec_helper'
-require_relative 'shared/difference'
describe "Set#-" do
- it_behaves_like :set_difference, :-
+ before :each do
+ @set = Set[:a, :b, :c]
+ end
+
+ it "returns a new Set containing self's elements excluding the elements in the passed Enumerable" do
+ (@set - Set[:a, :b]).should == Set[:c]
+ (@set - [:b, :c]).should == Set[:a]
+ end
+
+ it "raises an ArgumentError when passed a non-Enumerable" do
+ -> { @set - 1 }.should.raise(ArgumentError)
+ -> { @set - Object.new }.should.raise(ArgumentError)
+ end
end
diff --git a/spec/ruby/core/set/plus_spec.rb b/spec/ruby/core/set/plus_spec.rb
index 7e44ff0b7e..839f77fc39 100644
--- a/spec/ruby/core/set/plus_spec.rb
+++ b/spec/ruby/core/set/plus_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/union'
describe "Set#+" do
- it_behaves_like :set_union, :+
+ it "is an alias of Set#|" do
+ Set.instance_method(:+).should == Set.instance_method(:|)
+ end
end
diff --git a/spec/ruby/core/set/pretty_print_cycle_spec.rb b/spec/ruby/core/set/pretty_print_cycle_spec.rb
index c3b383fe80..7e6017c112 100644
--- a/spec/ruby/core/set/pretty_print_cycle_spec.rb
+++ b/spec/ruby/core/set/pretty_print_cycle_spec.rb
@@ -3,7 +3,12 @@ require_relative '../../spec_helper'
describe "Set#pretty_print_cycle" do
it "passes the 'pretty print' representation of a self-referencing Set to the pretty print writer" do
pp = mock("PrettyPrint")
- pp.should_receive(:text).with("#<Set: {...}>")
+ ruby_version_is(""..."4.0") do
+ pp.should_receive(:text).with("#<Set: {...}>")
+ end
+ ruby_version_is("4.0") do
+ pp.should_receive(:text).with("Set[...]")
+ end
Set[1, 2, 3].pretty_print_cycle(pp)
end
end
diff --git a/spec/ruby/core/set/proper_subset_spec.rb b/spec/ruby/core/set/proper_subset_spec.rb
index a84c4197c2..3fd27da131 100644
--- a/spec/ruby/core/set/proper_subset_spec.rb
+++ b/spec/ruby/core/set/proper_subset_spec.rb
@@ -8,38 +8,28 @@ describe "Set#proper_subset?" do
end
it "returns true if passed a Set that self is a proper subset of" do
- Set[].proper_subset?(@set).should be_true
- Set[].proper_subset?(Set[1, 2, 3]).should be_true
- Set[].proper_subset?(Set["a", :b, ?c]).should be_true
+ Set[].proper_subset?(@set).should == true
+ Set[].proper_subset?(Set[1, 2, 3]).should == true
+ Set[].proper_subset?(Set["a", :b, ?c]).should == true
- Set[1, 2, 3].proper_subset?(@set).should be_true
- Set[1, 3].proper_subset?(@set).should be_true
- Set[1, 2].proper_subset?(@set).should be_true
- Set[1].proper_subset?(@set).should be_true
+ Set[1, 2, 3].proper_subset?(@set).should == true
+ Set[1, 3].proper_subset?(@set).should == true
+ Set[1, 2].proper_subset?(@set).should == true
+ Set[1].proper_subset?(@set).should == true
- Set[5].proper_subset?(@set).should be_false
- Set[1, 5].proper_subset?(@set).should be_false
- Set[nil].proper_subset?(@set).should be_false
- Set["test"].proper_subset?(@set).should be_false
+ Set[5].proper_subset?(@set).should == false
+ Set[1, 5].proper_subset?(@set).should == false
+ Set[nil].proper_subset?(@set).should == false
+ Set["test"].proper_subset?(@set).should == false
- @set.proper_subset?(@set).should be_false
- Set[].proper_subset?(Set[]).should be_false
+ @set.proper_subset?(@set).should == false
+ Set[].proper_subset?(Set[]).should == false
end
it "raises an ArgumentError when passed a non-Set" do
- -> { Set[].proper_subset?([]) }.should raise_error(ArgumentError)
- -> { Set[].proper_subset?(1) }.should raise_error(ArgumentError)
- -> { Set[].proper_subset?("test") }.should raise_error(ArgumentError)
- -> { Set[].proper_subset?(Object.new) }.should raise_error(ArgumentError)
- end
-
- version_is(set_version, ""..."1.1.0") do #ruby_version_is ""..."3.3" do
- ruby_version_is ""..."3.5" do
- context "when comparing to a Set-like object" do
- it "returns true if passed a Set-like object that self is a proper subset of" do
- Set[1, 2, 3].proper_subset?(SetSpecs::SetLike.new([1, 2, 3, 4])).should be_true
- end
- end
- end
+ -> { Set[].proper_subset?([]) }.should.raise(ArgumentError)
+ -> { Set[].proper_subset?(1) }.should.raise(ArgumentError)
+ -> { Set[].proper_subset?("test") }.should.raise(ArgumentError)
+ -> { Set[].proper_subset?(Object.new) }.should.raise(ArgumentError)
end
end
diff --git a/spec/ruby/core/set/proper_superset_spec.rb b/spec/ruby/core/set/proper_superset_spec.rb
index 653411f6b2..e95c67ef0e 100644
--- a/spec/ruby/core/set/proper_superset_spec.rb
+++ b/spec/ruby/core/set/proper_superset_spec.rb
@@ -7,35 +7,35 @@ describe "Set#proper_superset?" do
end
it "returns true if passed a Set that self is a proper superset of" do
- @set.proper_superset?(Set[]).should be_true
- Set[1, 2, 3].proper_superset?(Set[]).should be_true
- Set["a", :b, ?c].proper_superset?(Set[]).should be_true
+ @set.proper_superset?(Set[]).should == true
+ Set[1, 2, 3].proper_superset?(Set[]).should == true
+ Set["a", :b, ?c].proper_superset?(Set[]).should == true
- @set.proper_superset?(Set[1, 2, 3]).should be_true
- @set.proper_superset?(Set[1, 3]).should be_true
- @set.proper_superset?(Set[1, 2]).should be_true
- @set.proper_superset?(Set[1]).should be_true
+ @set.proper_superset?(Set[1, 2, 3]).should == true
+ @set.proper_superset?(Set[1, 3]).should == true
+ @set.proper_superset?(Set[1, 2]).should == true
+ @set.proper_superset?(Set[1]).should == true
- @set.proper_superset?(Set[5]).should be_false
- @set.proper_superset?(Set[1, 5]).should be_false
- @set.proper_superset?(Set[nil]).should be_false
- @set.proper_superset?(Set["test"]).should be_false
+ @set.proper_superset?(Set[5]).should == false
+ @set.proper_superset?(Set[1, 5]).should == false
+ @set.proper_superset?(Set[nil]).should == false
+ @set.proper_superset?(Set["test"]).should == false
- @set.proper_superset?(@set).should be_false
- Set[].proper_superset?(Set[]).should be_false
+ @set.proper_superset?(@set).should == false
+ Set[].proper_superset?(Set[]).should == false
end
it "raises an ArgumentError when passed a non-Set" do
- -> { Set[].proper_superset?([]) }.should raise_error(ArgumentError)
- -> { Set[].proper_superset?(1) }.should raise_error(ArgumentError)
- -> { Set[].proper_superset?("test") }.should raise_error(ArgumentError)
- -> { Set[].proper_superset?(Object.new) }.should raise_error(ArgumentError)
+ -> { Set[].proper_superset?([]) }.should.raise(ArgumentError)
+ -> { Set[].proper_superset?(1) }.should.raise(ArgumentError)
+ -> { Set[].proper_superset?("test") }.should.raise(ArgumentError)
+ -> { Set[].proper_superset?(Object.new) }.should.raise(ArgumentError)
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
context "when comparing to a Set-like object" do
it "returns true if passed a Set-like object that self is a proper superset of" do
- Set[1, 2, 3, 4].proper_superset?(SetSpecs::SetLike.new([1, 2, 3])).should be_true
+ Set[1, 2, 3, 4].proper_superset?(SetSpecs::SetLike.new([1, 2, 3])).should == true
end
end
end
diff --git a/spec/ruby/core/set/reject_spec.rb b/spec/ruby/core/set/reject_spec.rb
index 91d0293415..b00a36812b 100644
--- a/spec/ruby/core/set/reject_spec.rb
+++ b/spec/ruby/core/set/reject_spec.rb
@@ -13,29 +13,29 @@ describe "Set#reject!" do
it "deletes every element from self for which the passed block returns true" do
@set.reject! { |x| x.size == 3 }
- @set.size.should eql(1)
+ @set.size.should.eql?(1)
- @set.should_not include("one")
- @set.should_not include("two")
- @set.should include("three")
+ @set.should_not.include?("one")
+ @set.should_not.include?("two")
+ @set.should.include?("three")
end
it "returns self when self was modified" do
- @set.reject! { |x| true }.should equal(@set)
+ @set.reject! { |x| true }.should.equal?(@set)
end
it "returns nil when self was not modified" do
- @set.reject! { |x| false }.should be_nil
+ @set.reject! { |x| false }.should == nil
end
it "returns an Enumerator when passed no block" do
enum = @set.reject!
- enum.should be_an_instance_of(Enumerator)
+ enum.should.instance_of?(Enumerator)
enum.each { |x| x.size == 3 }
- @set.should_not include("one")
- @set.should_not include("two")
- @set.should include("three")
+ @set.should_not.include?("one")
+ @set.should_not.include?("two")
+ @set.should.include?("three")
end
end
diff --git a/spec/ruby/core/set/replace_spec.rb b/spec/ruby/core/set/replace_spec.rb
index c66a2d0ec3..2a51a024dc 100644
--- a/spec/ruby/core/set/replace_spec.rb
+++ b/spec/ruby/core/set/replace_spec.rb
@@ -13,7 +13,7 @@ describe "Set#replace" do
it "raises RuntimeError when called during iteration" do
set = Set[:a, :b, :c, :d, :e, :f]
set.each do |_m|
- -> { set.replace(Set[1, 2, 3]) }.should raise_error(RuntimeError, /iteration/)
+ -> { set.replace(Set[1, 2, 3]) }.should.raise(RuntimeError, /iteration/)
end
set.should == Set[:a, :b, :c, :d, :e, :f]
end
diff --git a/spec/ruby/core/set/select_spec.rb b/spec/ruby/core/set/select_spec.rb
index b458ffacaa..619194605b 100644
--- a/spec/ruby/core/set/select_spec.rb
+++ b/spec/ruby/core/set/select_spec.rb
@@ -1,6 +1,41 @@
require_relative '../../spec_helper'
-require_relative 'shared/select'
describe "Set#select!" do
- it_behaves_like :set_select_bang, :select!
+ 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 == nil
+ end
+
+ it "returns an Enumerator when passed no block" do
+ enum = @set.select!
+ enum.should.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
diff --git a/spec/ruby/core/set/shared/add.rb b/spec/ruby/core/set/shared/add.rb
deleted file mode 100644
index 9e797f5df9..0000000000
--- a/spec/ruby/core/set/shared/add.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-describe :set_add, shared: true do
- before :each do
- @set = Set.new
- end
-
- it "adds the passed Object to self" do
- @set.send(@method, "dog")
- @set.should include("dog")
- end
-
- it "returns self" do
- @set.send(@method, "dog").should equal(@set)
- end
-end
diff --git a/spec/ruby/core/set/shared/collect.rb b/spec/ruby/core/set/shared/collect.rb
deleted file mode 100644
index bc58c231be..0000000000
--- a/spec/ruby/core/set/shared/collect.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-describe :set_collect_bang, shared: true do
- before :each do
- @set = Set[1, 2, 3, 4, 5]
- end
-
- it "yields each Object in self" do
- res = []
- @set.send(@method) { |x| res << x }
- res.sort.should == [1, 2, 3, 4, 5].sort
- end
-
- it "returns self" do
- @set.send(@method) { |x| x }.should equal(@set)
- end
-
- it "replaces self with the return values of the block" do
- @set.send(@method) { |x| x * 2 }
- @set.should == Set[2, 4, 6, 8, 10]
- end
-end
diff --git a/spec/ruby/core/set/shared/difference.rb b/spec/ruby/core/set/shared/difference.rb
deleted file mode 100644
index f88987ed2a..0000000000
--- a/spec/ruby/core/set/shared/difference.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-describe :set_difference, shared: true do
- before :each do
- @set = Set[:a, :b, :c]
- end
-
- it "returns a new Set containing self's elements excluding the elements in the passed Enumerable" do
- @set.send(@method, Set[:a, :b]).should == Set[:c]
- @set.send(@method, [:b, :c]).should == Set[:a]
- end
-
- it "raises an ArgumentError when passed a non-Enumerable" do
- -> { @set.send(@method, 1) }.should raise_error(ArgumentError)
- -> { @set.send(@method, Object.new) }.should raise_error(ArgumentError)
- end
-end
diff --git a/spec/ruby/core/set/shared/include.rb b/spec/ruby/core/set/shared/include.rb
deleted file mode 100644
index b4d95cde24..0000000000
--- a/spec/ruby/core/set/shared/include.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-describe :set_include, shared: true do
- it "returns true when self contains the passed Object" do
- set = Set[:a, :b, :c]
- set.send(@method, :a).should be_true
- set.send(@method, :e).should be_false
- end
-
- describe "member equality" do
- it "is checked using both #hash and #eql?" do
- obj = Object.new
- obj_another = Object.new
-
- def obj.hash; 42 end
- def obj_another.hash; 42 end
- def obj_another.eql?(o) hash == o.hash end
-
- set = Set["a", "b", "c", obj]
- set.send(@method, obj_another).should == true
- end
-
- it "is not checked using #==" do
- obj = Object.new
- set = Set["a", "b", "c"]
-
- obj.should_not_receive(:==)
- set.send(@method, obj)
- end
- end
-end
diff --git a/spec/ruby/core/set/shared/inspect.rb b/spec/ruby/core/set/shared/inspect.rb
deleted file mode 100644
index fbc7486acd..0000000000
--- a/spec/ruby/core/set/shared/inspect.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-describe :set_inspect, shared: true do
- it "returns a String representation of self" do
- Set[].send(@method).should be_kind_of(String)
- Set[nil, false, true].send(@method).should be_kind_of(String)
- Set[1, 2, 3].send(@method).should be_kind_of(String)
- Set["1", "2", "3"].send(@method).should be_kind_of(String)
- Set[:a, "b", Set[?c]].send(@method).should be_kind_of(String)
- end
-
- ruby_version_is "3.5" do
- it "does include the elements of the set" do
- Set["1"].send(@method).should == 'Set["1"]'
- end
- end
-
- ruby_version_is ""..."3.5" do
- it "does include the elements of the set" do
- Set["1"].send(@method).should == '#<Set: {"1"}>'
- end
- end
-
- it "puts spaces between the elements" do
- Set["1", "2"].send(@method).should include('", "')
- end
-
- ruby_version_is "3.5" do
- it "correctly handles cyclic-references" do
- set1 = Set[]
- set2 = Set[set1]
- set1 << set2
- set1.send(@method).should be_kind_of(String)
- set1.send(@method).should include("Set[...]")
- end
- end
-
- ruby_version_is ""..."3.5" do
- it "correctly handles cyclic-references" do
- set1 = Set[]
- set2 = Set[set1]
- set1 << set2
- set1.send(@method).should be_kind_of(String)
- set1.send(@method).should include("#<Set: {...}>")
- end
- end
-end
diff --git a/spec/ruby/core/set/shared/intersection.rb b/spec/ruby/core/set/shared/intersection.rb
deleted file mode 100644
index 5ae4199c94..0000000000
--- a/spec/ruby/core/set/shared/intersection.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-describe :set_intersection, shared: true do
- before :each do
- @set = Set[:a, :b, :c]
- end
-
- it "returns a new Set containing only elements shared by self and the passed Enumerable" do
- @set.send(@method, Set[:b, :c, :d, :e]).should == Set[:b, :c]
- @set.send(@method, [:b, :c, :d]).should == Set[:b, :c]
- end
-
- it "raises an ArgumentError when passed a non-Enumerable" do
- -> { @set.send(@method, 1) }.should raise_error(ArgumentError)
- -> { @set.send(@method, Object.new) }.should raise_error(ArgumentError)
- end
-end
diff --git a/spec/ruby/core/set/shared/length.rb b/spec/ruby/core/set/shared/length.rb
deleted file mode 100644
index a8fcee9f39..0000000000
--- a/spec/ruby/core/set/shared/length.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-describe :set_length, shared: true do
- it "returns the number of elements in the set" do
- set = Set[:a, :b, :c]
- set.send(@method).should == 3
- end
-end
diff --git a/spec/ruby/core/set/shared/select.rb b/spec/ruby/core/set/shared/select.rb
deleted file mode 100644
index 467b236ed3..0000000000
--- a/spec/ruby/core/set/shared/select.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require_relative '../../../spec_helper'
-
-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
diff --git a/spec/ruby/core/set/shared/union.rb b/spec/ruby/core/set/shared/union.rb
deleted file mode 100644
index 314f0e852d..0000000000
--- a/spec/ruby/core/set/shared/union.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-describe :set_union, shared: true do
- before :each do
- @set = Set[:a, :b, :c]
- end
-
- it "returns a new Set containing all elements of self and the passed Enumerable" do
- @set.send(@method, Set[:b, :d, :e]).should == Set[:a, :b, :c, :d, :e]
- @set.send(@method, [:b, :e]).should == Set[:a, :b, :c, :e]
- end
-
- it "raises an ArgumentError when passed a non-Enumerable" do
- -> { @set.send(@method, 1) }.should raise_error(ArgumentError)
- -> { @set.send(@method, Object.new) }.should raise_error(ArgumentError)
- end
-end
diff --git a/spec/ruby/core/set/size_spec.rb b/spec/ruby/core/set/size_spec.rb
index 4ae22c5f0a..c57272a235 100644
--- a/spec/ruby/core/set/size_spec.rb
+++ b/spec/ruby/core/set/size_spec.rb
@@ -1,6 +1,8 @@
require_relative '../../spec_helper'
-require_relative 'shared/length'
describe "Set#size" do
- it_behaves_like :set_length, :size
+ it "returns the number of elements in the set" do
+ set = Set[:a, :b, :c]
+ set.size.should == 3
+ end
end
diff --git a/spec/ruby/core/set/sortedset/sortedset_spec.rb b/spec/ruby/core/set/sortedset/sortedset_spec.rb
index 41f010e011..c8f65f0851 100644
--- a/spec/ruby/core/set/sortedset/sortedset_spec.rb
+++ b/spec/ruby/core/set/sortedset/sortedset_spec.rb
@@ -1,11 +1,11 @@
require_relative '../../../spec_helper'
describe "SortedSet" do
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
it "raises error including message that it has been extracted from the set stdlib" do
-> {
SortedSet
- }.should raise_error(RuntimeError) { |e|
+ }.should.raise(RuntimeError) { |e|
e.message.should.include?("The `SortedSet` class has been extracted from the `set` library")
}
end
diff --git a/spec/ruby/core/set/subset_spec.rb b/spec/ruby/core/set/subset_spec.rb
index cde61d7cd7..81869d4993 100644
--- a/spec/ruby/core/set/subset_spec.rb
+++ b/spec/ruby/core/set/subset_spec.rb
@@ -8,38 +8,28 @@ describe "Set#subset?" do
end
it "returns true if passed a Set that is equal to self or self is a subset of" do
- @set.subset?(@set).should be_true
- Set[].subset?(Set[]).should be_true
+ @set.subset?(@set).should == true
+ Set[].subset?(Set[]).should == true
- Set[].subset?(@set).should be_true
- Set[].subset?(Set[1, 2, 3]).should be_true
- Set[].subset?(Set["a", :b, ?c]).should be_true
+ Set[].subset?(@set).should == true
+ Set[].subset?(Set[1, 2, 3]).should == true
+ Set[].subset?(Set["a", :b, ?c]).should == true
- Set[1, 2, 3].subset?(@set).should be_true
- Set[1, 3].subset?(@set).should be_true
- Set[1, 2].subset?(@set).should be_true
- Set[1].subset?(@set).should be_true
+ Set[1, 2, 3].subset?(@set).should == true
+ Set[1, 3].subset?(@set).should == true
+ Set[1, 2].subset?(@set).should == true
+ Set[1].subset?(@set).should == true
- Set[5].subset?(@set).should be_false
- Set[1, 5].subset?(@set).should be_false
- Set[nil].subset?(@set).should be_false
- Set["test"].subset?(@set).should be_false
+ Set[5].subset?(@set).should == false
+ Set[1, 5].subset?(@set).should == false
+ Set[nil].subset?(@set).should == false
+ Set["test"].subset?(@set).should == false
end
it "raises an ArgumentError when passed a non-Set" do
- -> { Set[].subset?([]) }.should raise_error(ArgumentError)
- -> { Set[].subset?(1) }.should raise_error(ArgumentError)
- -> { Set[].subset?("test") }.should raise_error(ArgumentError)
- -> { Set[].subset?(Object.new) }.should raise_error(ArgumentError)
- end
-
- version_is(set_version, ""..."1.1.0") do #ruby_version_is ""..."3.3" do
- ruby_version_is ""..."3.5" do
- context "when comparing to a Set-like object" do
- it "returns true if passed a Set-like object that self is a subset of" do
- Set[1, 2, 3].subset?(SetSpecs::SetLike.new([1, 2, 3, 4])).should be_true
- end
- end
- end
+ -> { Set[].subset?([]) }.should.raise(ArgumentError)
+ -> { Set[].subset?(1) }.should.raise(ArgumentError)
+ -> { Set[].subset?("test") }.should.raise(ArgumentError)
+ -> { Set[].subset?(Object.new) }.should.raise(ArgumentError)
end
end
diff --git a/spec/ruby/core/set/superset_spec.rb b/spec/ruby/core/set/superset_spec.rb
index 9d7bab964a..7e7db2b179 100644
--- a/spec/ruby/core/set/superset_spec.rb
+++ b/spec/ruby/core/set/superset_spec.rb
@@ -7,35 +7,35 @@ describe "Set#superset?" do
end
it "returns true if passed a Set that equals self or self is a proper superset of" do
- @set.superset?(@set).should be_true
- Set[].superset?(Set[]).should be_true
+ @set.superset?(@set).should == true
+ Set[].superset?(Set[]).should == true
- @set.superset?(Set[]).should be_true
- Set[1, 2, 3].superset?(Set[]).should be_true
- Set["a", :b, ?c].superset?(Set[]).should be_true
+ @set.superset?(Set[]).should == true
+ Set[1, 2, 3].superset?(Set[]).should == true
+ Set["a", :b, ?c].superset?(Set[]).should == true
- @set.superset?(Set[1, 2, 3]).should be_true
- @set.superset?(Set[1, 3]).should be_true
- @set.superset?(Set[1, 2]).should be_true
- @set.superset?(Set[1]).should be_true
+ @set.superset?(Set[1, 2, 3]).should == true
+ @set.superset?(Set[1, 3]).should == true
+ @set.superset?(Set[1, 2]).should == true
+ @set.superset?(Set[1]).should == true
- @set.superset?(Set[5]).should be_false
- @set.superset?(Set[1, 5]).should be_false
- @set.superset?(Set[nil]).should be_false
- @set.superset?(Set["test"]).should be_false
+ @set.superset?(Set[5]).should == false
+ @set.superset?(Set[1, 5]).should == false
+ @set.superset?(Set[nil]).should == false
+ @set.superset?(Set["test"]).should == false
end
it "raises an ArgumentError when passed a non-Set" do
- -> { Set[].superset?([]) }.should raise_error(ArgumentError)
- -> { Set[].superset?(1) }.should raise_error(ArgumentError)
- -> { Set[].superset?("test") }.should raise_error(ArgumentError)
- -> { Set[].superset?(Object.new) }.should raise_error(ArgumentError)
+ -> { Set[].superset?([]) }.should.raise(ArgumentError)
+ -> { Set[].superset?(1) }.should.raise(ArgumentError)
+ -> { Set[].superset?("test") }.should.raise(ArgumentError)
+ -> { Set[].superset?(Object.new) }.should.raise(ArgumentError)
end
- ruby_version_is ""..."3.5" do
+ ruby_version_is ""..."4.0" do
context "when comparing to a Set-like object" do
it "returns true if passed a Set-like object that self is a superset of" do
- Set[1, 2, 3, 4].superset?(SetSpecs::SetLike.new([1, 2, 3])).should be_true
+ Set[1, 2, 3, 4].superset?(SetSpecs::SetLike.new([1, 2, 3])).should == true
end
end
end
diff --git a/spec/ruby/core/set/to_s_spec.rb b/spec/ruby/core/set/to_s_spec.rb
index 55b8bfd9b2..7f768bdcbf 100644
--- a/spec/ruby/core/set/to_s_spec.rb
+++ b/spec/ruby/core/set/to_s_spec.rb
@@ -1,11 +1,47 @@
require_relative "../../spec_helper"
-require_relative 'shared/inspect'
describe "Set#to_s" do
- it_behaves_like :set_inspect, :to_s
+ it "returns a String representation of self" do
+ Set[].to_s.should.is_a?(String)
+ Set[nil, false, true].to_s.should.is_a?(String)
+ Set[1, 2, 3].to_s.should.is_a?(String)
+ Set["1", "2", "3"].to_s.should.is_a?(String)
+ Set[:a, "b", Set[?c]].to_s.should.is_a?(String)
+ end
+
+ ruby_version_is "4.0" do
+ it "does include the elements of the set" do
+ Set["1"].to_s.should == 'Set["1"]'
+ end
+ end
+
+ ruby_version_is ""..."4.0" do
+ it "does include the elements of the set" do
+ Set["1"].to_s.should == '#<Set: {"1"}>'
+ end
+ end
+
+ it "puts spaces between the elements" do
+ Set["1", "2"].to_s.should.include?('", "')
+ end
+
+ ruby_version_is "4.0" do
+ it "correctly handles cyclic-references" do
+ set1 = Set[]
+ set2 = Set[set1]
+ set1 << set2
+ set1.to_s.should.is_a?(String)
+ set1.to_s.should.include?("Set[...]")
+ end
+ end
- it "is an alias of inspect" do
- set = Set.new
- set.method(:to_s).should == set.method(:inspect)
+ ruby_version_is ""..."4.0" do
+ it "correctly handles cyclic-references" do
+ set1 = Set[]
+ set2 = Set[set1]
+ set1 << set2
+ set1.to_s.should.is_a?(String)
+ set1.to_s.should.include?("#<Set: {...}>")
+ end
end
end
diff --git a/spec/ruby/core/set/union_spec.rb b/spec/ruby/core/set/union_spec.rb
index 3e77022d4b..206535aae2 100644
--- a/spec/ruby/core/set/union_spec.rb
+++ b/spec/ruby/core/set/union_spec.rb
@@ -1,10 +1,23 @@
require_relative '../../spec_helper'
-require_relative 'shared/union'
describe "Set#union" do
- it_behaves_like :set_union, :union
+ it "is an alias of Set#|" do
+ Set.instance_method(:union).should == Set.instance_method(:|)
+ end
end
describe "Set#|" do
- it_behaves_like :set_union, :|
+ before :each do
+ @set = Set[:a, :b, :c]
+ end
+
+ it "returns a new Set containing all elements of self and the passed Enumerable" do
+ (@set | Set[:b, :d, :e]).should == Set[:a, :b, :c, :d, :e]
+ (@set | [:b, :e]).should == Set[:a, :b, :c, :e]
+ end
+
+ it "raises an ArgumentError when passed a non-Enumerable" do
+ -> { @set | 1 }.should.raise(ArgumentError)
+ -> { @set | Object.new }.should.raise(ArgumentError)
+ end
end