* io.c (rb_open_file): encoding in mode string was ignored if perm is
[ruby-svn.git] / bootstraptest / test_class.rb
blob1c49b83037442fb5628a9acb3088ab62255e0791
1 # class
2 assert_equal 'true',    %q( class C; end
3                             Object.const_defined?(:C) )
4 assert_equal 'Class',   %q( class C; end
5                             C.class )
6 assert_equal 'C',       %q( class C; end
7                             C.name )
8 assert_equal 'C',       %q( class C; end
9                             C.new.class )
10 assert_equal 'C',       %q( class C; end
11                             C.new.class.name )
12 assert_equal 'Class',   %q( class C; end
13                             C.new.class.class )
15 # inherited class
16 assert_equal 'true',    %q( class A; end
17                             class C < A; end
18                             Object.const_defined?(:C) )
19 assert_equal 'Class',   %q( class A; end
20                             class C < A; end
21                             C.class )
22 assert_equal 'C',       %q( class A; end
23                             class C < A; end
24                             C.name )
25 assert_equal 'C',       %q( class A; end
26                             class C < A; end
27                             C.new.class )
28 assert_equal 'C',       %q( class A; end
29                             class C < A; end
30                             C.new.class.name )
31 assert_equal 'Class',   %q( class A; end
32                             class C < A; end
33                             C.new.class.class )
35 # module
36 assert_equal 'true',    %q( module M; end
37                             Object.const_defined?(:M) )
38 assert_equal 'Module',  %q( module M; end
39                             M.class )
40 assert_equal 'M',       %q( module M; end
41                             M.name )
42 assert_equal 'C',       %q( module M; end
43                             class C; include M; end
44                             C.new.class )
46 # nested class
47 assert_equal 'A::B',    %q( class A; end
48                             class A::B; end
49                             A::B )
50 assert_equal 'A::B',    %q( class A; end
51                             class A::B; end
52                             A::B.name )
53 assert_equal 'A::B',    %q( class A; end
54                             class A::B; end
55                             A::B.new.class )
56 assert_equal 'Class',   %q( class A; end
57                             class A::B; end
58                             A::B.new.class.class )
59 assert_equal 'A::B::C', %q( class A; end
60                             class A::B; end
61                             class A::B::C; end
62                             A::B::C )
63 assert_equal 'A::B::C', %q( class A; end
64                             class A::B; end
65                             class A::B::C; end
66                             A::B::C.name )
67 assert_equal 'Class',   %q( class A; end
68                             class A::B; end
69                             class A::B::C; end
70                             A::B::C.class )
71 assert_equal 'A::B::C', %q( class A; end
72                             class A::B; end
73                             class A::B::C; end
74                             A::B::C.new.class )
75 assert_equal 'Class',   %q( class A; end
76                             class A::B; end
77                             class A::B::C; end
78                             A::B::C.new.class.class )
79 assert_equal 'A::B2',   %q( class A; end
80                             class A::B; end
81                             class A::B2 < A::B; end
82                             A::B2 )
83 assert_equal 'Class',   %q( class A; end
84                             class A::B; end
85                             class A::B2 < A::B; end
86                             A::B2.class )
88 # reopen
89 assert_equal 'true',    %q( class C; end;  c1 = ::C
90                             class C; end;  c2 = ::C
91                             c1.equal?(c2) )
92 assert_equal '1',       %q( class C; end
93                             class A; end
94                             begin class C < A; end; rescue TypeError; 1 end )
95 assert_equal '1',       %q( class C; end
96                             begin module C; end; rescue TypeError; 1 end )
97 assert_equal '1',       %q( C = 1   # [yarv-dev:782]
98                             begin class C; end; rescue TypeError; 1 end )
99 assert_equal '1',       %q( C = 1   # [yarv-dev:800]
100                             begin module C; end; rescue TypeError; 1 end )
102 # colon2, colon3
103 assert_equal '1',       %q( class A; end;  A::C = 1;  A::C )
104 assert_equal '1',       %q( A = 7;  begin A::C = 7; rescue TypeError; 1 end )
105 assert_equal '1',       %q( begin 7::C = 7; rescue TypeError; 1 end )
106 assert_equal 'C',       %q( class A; class ::C; end end;  C )
107 assert_equal 'Class',   %q( class A; class ::C; end end;  C.class )
108 assert_equal 'OK',      %q( class A; ::C = "OK"; end;  C )
109 assert_equal 'String',  %q( class A; ::C = "OK"; end;  C.class )
111 # class/module dup
112 assert_equal 'Class',   %q( class C; end;  C.dup.class )
113 assert_equal 'Module',  %q( module M; end;  M.dup.class )
116 assert_equal "ok", %q{
117   module Foo
118   end
120   begin
121     def foo(&b)
122       Foo.module_eval &b
123     end
124     foo{
125       def bar
126       end
127     }
128     bar()
129   rescue NameError
130     :ok
131   end
132 }, '[ruby-core:14378]'