source: EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-class-ext/test/module.rb@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 2.1 KB
Line 
1assert 'Module#<' do
2 a = Class.new
3 b = Class.new(a)
4 c = Class.new(a)
5 d = Module.new
6 e = Class.new { include d }
7 f = Module.new { include d }
8
9 # compare class to class
10 assert_true b < a
11 assert_false b < b
12 assert_false a < b
13 assert_nil c < b
14
15 # compare class to module
16 assert_true e < d
17 assert_false d < e
18 assert_nil a < d
19
20 # compare module to module
21 assert_true f < d
22 assert_false f < f
23 assert_false d < f
24
25 assert_raise(TypeError) { a < Object.new }
26end
27
28assert 'Module#<=' do
29 a = Class.new
30 b = Class.new(a)
31 c = Class.new(a)
32 d = Module.new
33 e = Class.new { include d }
34 f = Module.new { include d }
35
36 # compare class to class
37 assert_true b <= a
38 assert_true b <= b
39 assert_false a <= b
40 assert_nil c <= b
41
42 # compare class to module
43 assert_true e <= d
44 assert_false d <= e
45 assert_nil a <= d
46
47 # compare module to module
48 assert_true f <= d
49 assert_true f <= f
50 assert_false d <= f
51
52 assert_raise(TypeError) { a <= Object.new }
53end
54
55assert 'Module#name' do
56 module Outer
57 class Inner; end
58 const_set :SetInner, Class.new
59 end
60
61 assert_equal 'Outer', Outer.name
62 assert_equal 'Outer::Inner', Outer::Inner.name
63 assert_equal 'Outer::SetInner', Outer::SetInner.name
64
65 outer = Module.new do
66 const_set :SetInner, Class.new
67 end
68 Object.const_set :SetOuter, outer
69
70 assert_equal 'SetOuter', SetOuter.name
71 assert_equal 'SetOuter::SetInner', SetOuter::SetInner.name
72
73 mod = Module.new
74 cls = Class.new
75
76 assert_nil mod.name
77 assert_nil cls.name
78end
79
80assert 'Module#singleton_class?' do
81 mod = Module.new
82 cls = Class.new
83 scl = (class <<cls; self; end)
84
85 assert_false mod.singleton_class?
86 assert_false cls.singleton_class?
87 assert_true scl.singleton_class?
88end
89
90assert 'Module#module_eval' do
91 mod = Module.new
92 mod.class_exec(1,2,3) do |a,b,c|
93 assert_equal([1,2,3], [a,b,c])
94 def hi
95 "hi"
96 end
97 end
98 cls = Class.new
99 cls.class_exec(42) do |x|
100 assert_equal(42, x)
101 include mod
102 def hello
103 "hello"
104 end
105 end
106 obj = cls.new
107 assert_equal("hi", obj.hi)
108 assert_equal("hello", obj.hello)
109end
Note: See TracBrowser for help on using the repository browser.