require 'test/unit'
class TestDefined < Test::Unit::TestCase
class Foo
def foo
p :foo
end
protected :foo
def bar(f)
yield(defined?(self.foo))
yield(defined?(f.foo))
end
end
def defined_test
return !defined?(yield)
end
def test_defined
$x = nil
assert(defined?($x)) assert_equal('global-variable', defined?($x))
assert_nil(defined?(foo)) foo=5
assert(defined?(foo))
assert(defined?(Array)) assert(defined?(::Array)) assert(defined?(File::Constants)) assert(defined?(Object.new)) assert(!defined?(Object.print)) assert(defined?(1 == 2))
f = Foo.new
assert_nil(defined?(f.foo))
f.bar(f) { |v| assert(v) }
assert(defined_test) assert(!defined_test{}) end
end