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