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:
eregon 2017-10-28 10:32:45 +00:00
Родитель 9c4542dbaa
Коммит 662fb599b0
3 изменённых файлов: 68 добавлений и 0 удалений

Просмотреть файл

@ -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