Ignore:
Timestamp:
Jul 9, 2020, 8:51:43 AM (4 years ago)
Author:
coas-nagasima
Message:

mrubyを2.1.1に更新

Location:
EcnlProtoTool/trunk/mruby-2.1.1
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-class-ext/test/module.rb

    r331 r439  
     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
    155assert 'Module#name' do
    2   module A
    3     class B
     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"
    496    end
    597  end
    6 
    7   assert_nil A::B.singleton_class.name
    8   assert_equal 'Fixnum', Fixnum.name
    9   assert_equal 'A::B', A::B.name
     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)
    10109end
Note: See TracChangeset for help on using the changeset viewer.