* 2022-01-18 [ci skip]
[ruby-80x24.org.git] / test / ruby / test_undef.rb
blob074b92be558380a33ea3e433ae233096cfd6b7d2
1 # frozen_string_literal: false
2 require 'test/unit'
4 class TestUndef < Test::Unit::TestCase
5   class Undef0
6     def foo
7       "foo"
8     end
9     undef foo
10   end
12   class Undef1
13     def bar
14       "bar"
15     end
16   end
18   class Undef2 < Undef1
19     undef bar
20   end
22   def test_undef
23     x = Undef0.new
24     assert_raise(NoMethodError) { x.foo }
25     y = Undef1.new
26     assert_equal "bar", y.bar
27     z = Undef2.new
28     assert_raise(NoMethodError) { z.bar }
29   end
31   def test_special_const_undef
32     assert_raise(TypeError) do
33       1.instance_eval do
34         undef to_s
35       end
36     end
37   end
39   def test_singleton_undef
40     klass = Class.new do
41       def foo
42         :ok
43       end
44     end
46     klass.new.foo
48     klass.new.instance_eval do
49       undef foo
50     end
52     klass.new.foo
53   end
54 end