зеркало из https://github.com/github/ruby.git
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:
Родитель
9c4542dbaa
Коммит
662fb599b0
|
@ -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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче