mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
44 lines
1.5 KiB
Ruby
44 lines
1.5 KiB
Ruby
require_relative '../../spec_helper'
|
|
require_relative 'fixtures/classes'
|
|
|
|
describe "main#private" do
|
|
after :each do
|
|
Object.send(:public, :main_public_method)
|
|
Object.send(:public, :main_public_method2)
|
|
end
|
|
|
|
context "when single argument is passed and it is not an array" do
|
|
it "sets the visibility of the given methods to private" do
|
|
eval "private :main_public_method", TOPLEVEL_BINDING
|
|
Object.should have_private_method(:main_public_method)
|
|
end
|
|
end
|
|
|
|
context "when multiple arguments are passed" do
|
|
it "sets the visibility of the given methods to private" do
|
|
eval "private :main_public_method, :main_public_method2", TOPLEVEL_BINDING
|
|
Object.should have_private_method(:main_public_method)
|
|
Object.should have_private_method(:main_public_method2)
|
|
end
|
|
end
|
|
|
|
ruby_version_is "3.0" do
|
|
context "when single argument is passed and is an array" do
|
|
it "sets the visibility of the given methods to private" do
|
|
eval "private [:main_public_method, :main_public_method2]", TOPLEVEL_BINDING
|
|
Object.should have_private_method(:main_public_method)
|
|
Object.should have_private_method(:main_public_method2)
|
|
end
|
|
end
|
|
end
|
|
|
|
it "returns Object" do
|
|
eval("private :main_public_method", TOPLEVEL_BINDING).should equal(Object)
|
|
end
|
|
|
|
it "raises a NameError when at least one of given method names is undefined" do
|
|
-> do
|
|
eval "private :main_public_method, :main_undefined_method", TOPLEVEL_BINDING
|
|
end.should raise_error(NameError)
|
|
end
|
|
end
|