зеркало из 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
|
||||
|
||||
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
|
||||
o = Class.new do
|
||||
def mutate; @foo = 1; end
|
||||
|
|
|
@ -49,4 +49,30 @@ describe "Kernel#frozen?" do
|
|||
@symbol.frozen?.should be_true
|
||||
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
|
||||
|
|
|
@ -122,4 +122,28 @@ describe :kernel_dup_clone, shared: true do
|
|||
:my_symbol.send(@method).should == :my_symbol
|
||||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче