Sha256: be87869ecf0d30d9fe893301a30e840c7e2bfc9246e2f1e194a497256073976e
Contents?: true
Size: 1.57 KB
Versions: 4
Compression:
Stored size: 1.57 KB
Contents
# Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved. # Author: Nicolas Despres <polrop@lrde.epita.fr>. # License: Gnu General Public License. # $LastChangedBy: polrop $ # $Id: instance_method_visibility.rb 143 2005-01-30 14:06:43Z polrop $ class Module def instance_method_visibility(name) if private_method_defined?(name) :private elsif protected_method_defined?(name) :protected elsif public_method_defined?(name) :public else raise(NoMethodError, "`#{name}' - not an instance method of `#{self.name}'") end end end # class Module if (not defined? INSTANCE_METHOD_VISIBILITY_TESTED) and (defined? TEST_MODE or __FILE__ == $0) INSTANCE_METHOD_VISIBILITY_TESTED = true require 'test/unit/ui/console/testrunner' class InstanceMethodVisibilityTest < Test::Unit::TestCase class A def pub; end def pri; end def pro; end public :pub private :pri protected :pro end # class A def test_simple assert_equal(:public, A.instance_method_visibility('pub')) assert_equal(:private, A.instance_method_visibility('pri')) assert_equal(:protected, A.instance_method_visibility('pro')) assert_raises(NoMethodError) { A.instance_method_visibility('new') } end class AA def f; end end class BB < AA private :f end def test_inheritance assert_equal(:public, AA.instance_method_visibility('f')) assert(! BB.public_method_defined?('f')) assert_equal(:private, BB.instance_method_visibility('f')) end end # class InstanceMethodVisibilityTest end
Version data entries
4 entries across 4 versions & 2 rubygems