1require_relative '../../spec_helper' 2 3describe "Module#public_constant" do 4 it "can only be passed constant names defined in the target (self) module" do 5 cls1 = Class.new 6 cls1.const_set :Foo, true 7 cls2 = Class.new(cls1) 8 9 lambda do 10 cls2.send :public_constant, :Foo 11 end.should raise_error(NameError) 12 end 13 14 it "accepts strings as constant names" do 15 cls = Class.new 16 cls.const_set :Foo, true 17 18 cls.send :private_constant, :Foo 19 cls.send :public_constant, "Foo" 20 21 cls::Foo.should == true 22 end 23 24 # [ruby-list:48558] 25 it "accepts multiple names" do 26 mod = Module.new 27 mod.const_set :Foo, true 28 mod.const_set :Bar, true 29 30 mod.send :private_constant, :Foo 31 mod.send :private_constant, :Bar 32 33 mod.send :public_constant, :Foo, :Bar 34 35 mod::Foo.should == true 36 mod::Bar.should == true 37 end 38end 39