2018-03-04 10:09:32 -05:00
|
|
|
require_relative '../../spec_helper'
|
|
|
|
require_relative 'fixtures/classes'
|
2017-05-07 08:04:49 -04:00
|
|
|
|
|
|
|
describe "main#private" do
|
|
|
|
after :each do
|
|
|
|
Object.send(:public, :main_public_method)
|
2020-12-18 13:17:57 -05:00
|
|
|
Object.send(:public, :main_public_method2)
|
2017-05-07 08:04:49 -04:00
|
|
|
end
|
|
|
|
|
2020-12-18 13:17:57 -05:00
|
|
|
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
|
2017-05-07 08:04:49 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
it "returns Object" do
|
|
|
|
eval("private :main_public_method", TOPLEVEL_BINDING).should equal(Object)
|
|
|
|
end
|
|
|
|
|
2020-12-18 13:17:57 -05:00
|
|
|
it "raises a NameError when at least one of given method names is undefined" do
|
2019-07-27 06:40:09 -04:00
|
|
|
-> do
|
2020-12-18 13:17:57 -05:00
|
|
|
eval "private :main_public_method, :main_undefined_method", TOPLEVEL_BINDING
|
2017-05-07 08:04:49 -04:00
|
|
|
end.should raise_error(NameError)
|
|
|
|
end
|
|
|
|
end
|