mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Add specs for [Feature #13983] Rational and Complex should be frozen
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9c4542dbaa
commit
662fb599b0
3 changed files with 68 additions and 0 deletions
|
@ -51,6 +51,24 @@ describe "Kernel#freeze" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
ruby_version_is "2.5" do
|
||||||
|
describe "on a Complex" do
|
||||||
|
it "has no effect since it is already frozen" do
|
||||||
|
c = Complex(1.3, 3.1)
|
||||||
|
c.frozen?.should be_true
|
||||||
|
c.freeze
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "on a Rational" do
|
||||||
|
it "has no effect since it is already frozen" do
|
||||||
|
r = Rational(1, 3)
|
||||||
|
r.frozen?.should be_true
|
||||||
|
r.freeze
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it "causes mutative calls to raise RuntimeError" do
|
it "causes mutative calls to raise RuntimeError" do
|
||||||
o = Class.new do
|
o = Class.new do
|
||||||
def mutate; @foo = 1; end
|
def mutate; @foo = 1; end
|
||||||
|
|
|
@ -49,4 +49,30 @@ describe "Kernel#frozen?" do
|
||||||
@symbol.frozen?.should be_true
|
@symbol.frozen?.should be_true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
ruby_version_is "2.5" do
|
||||||
|
describe "on a Complex" do
|
||||||
|
it "returns true" do
|
||||||
|
c = Complex(1.3, 3.1)
|
||||||
|
c.frozen?.should be_true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "literal returns true" do
|
||||||
|
c = eval "1.3i"
|
||||||
|
c.frozen?.should be_true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "on a Rational" do
|
||||||
|
it "returns true" do
|
||||||
|
r = Rational(1, 3)
|
||||||
|
r.frozen?.should be_true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "literal returns true" do
|
||||||
|
r = eval "1/3r"
|
||||||
|
r.frozen?.should be_true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -122,4 +122,28 @@ describe :kernel_dup_clone, shared: true do
|
||||||
:my_symbol.send(@method).should == :my_symbol
|
:my_symbol.send(@method).should == :my_symbol
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
ruby_version_is ''...'2.5' do
|
||||||
|
it "raises a TypeError for Complex" do
|
||||||
|
c = Complex(1.3, 3.1)
|
||||||
|
lambda { c.send(@method) }.should raise_error(TypeError)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises a TypeError for Rational" do
|
||||||
|
r = Rational(1, 3)
|
||||||
|
lambda { r.send(@method) }.should raise_error(TypeError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ruby_version_is '2.5' do
|
||||||
|
it "returns self for Complex" do
|
||||||
|
c = Complex(1.3, 3.1)
|
||||||
|
c.send(@method).should equal c
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns self for Rational" do
|
||||||
|
r = Rational(1, 3)
|
||||||
|
r.send(@method).should equal r
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue