mirror of
https://github.com/zhigang1992/RubyMotion.git
synced 2026-04-02 22:42:49 +08:00
164 lines
5.5 KiB
Ruby
164 lines
5.5 KiB
Ruby
test_begin "test_class"
|
|
|
|
# class
|
|
assert_equal 'true', proc{ class C; end
|
|
Object.const_defined?(:C) }
|
|
assert_equal 'Class', proc{ class C; end
|
|
C.class }
|
|
assert_equal 'C', proc{ class C; end
|
|
C.name }
|
|
assert_equal 'C', proc{ class C; end
|
|
C.new.class }
|
|
assert_equal 'C', proc{ class C; end
|
|
C.new.class.name }
|
|
assert_equal 'Class', proc{ class C; end
|
|
C.new.class.class }
|
|
|
|
# inherited class
|
|
# assert_equal 'true', proc{ class A; end
|
|
# class C < A; end
|
|
# Object.const_defined?(:C) }
|
|
# assert_equal 'Class', proc{ class A; end
|
|
# class C < A; end
|
|
# C.class }
|
|
# assert_equal 'C', proc{ class A; end
|
|
# class C < A; end
|
|
# C.name }
|
|
# assert_equal 'C', proc{ class A; end
|
|
# class C < A; end
|
|
# C.new.class }
|
|
# assert_equal 'C', proc{ class A; end
|
|
# class C < A; end
|
|
# C.new.class.name }
|
|
# assert_equal 'Class', proc{ class A; end
|
|
# class C < A; end
|
|
# C.new.class.class }
|
|
|
|
# module
|
|
assert_equal 'true', proc{ module M; end
|
|
Object.const_defined?(:M) }
|
|
assert_equal 'Module', proc{ module M; end
|
|
M.class }
|
|
assert_equal 'M', proc{ module M; end
|
|
M.name }
|
|
assert_equal 'C', proc{ module M; end
|
|
class C; include M; end
|
|
C.new.class }
|
|
|
|
# nested class
|
|
assert_equal 'A::B', proc{ class A; end
|
|
class A::B; end
|
|
A::B }
|
|
assert_equal 'A::B', proc{ class A; end
|
|
class A::B; end
|
|
A::B.name }
|
|
assert_equal 'A::B', proc{ class A; end
|
|
class A::B; end
|
|
A::B.new.class }
|
|
assert_equal 'Class', proc{ class A; end
|
|
class A::B; end
|
|
A::B.new.class.class }
|
|
assert_equal 'A::B::C', proc{ class A; end
|
|
class A::B; end
|
|
class A::B::C; end
|
|
A::B::C }
|
|
assert_equal 'A::B::C', proc{ class A; end
|
|
class A::B; end
|
|
class A::B::C; end
|
|
A::B::C.name }
|
|
assert_equal 'Class', proc{ class A; end
|
|
class A::B; end
|
|
class A::B::C; end
|
|
A::B::C.class }
|
|
assert_equal 'A::B::C', proc{ class A; end
|
|
class A::B; end
|
|
class A::B::C; end
|
|
A::B::C.new.class }
|
|
assert_equal 'Class', proc{ class A; end
|
|
class A::B; end
|
|
class A::B::C; end
|
|
A::B::C.new.class.class }
|
|
assert_equal 'A::B2', proc{ class A; end
|
|
class A::B; end
|
|
class A::B2 < A::B; end
|
|
A::B2 }
|
|
assert_equal 'Class', proc{ class A; end
|
|
class A::B; end
|
|
class A::B2 < A::B; end
|
|
A::B2.class }
|
|
|
|
# reopen
|
|
assert_equal 'true', proc{ class C; end; c1 = ::C
|
|
class C; end; c2 = ::C
|
|
c1.equal?(c2) }
|
|
assert_equal '1', proc{ class C; end
|
|
class A; end
|
|
begin class C < A; end; rescue TypeError; 1 end }
|
|
# assert_equal '1', proc{ class C; end
|
|
# begin module C; end; rescue TypeError; 1 end }
|
|
assert_equal '1', proc{ C1 = 1 # [yarv-dev:782]
|
|
begin class C1; end; rescue TypeError; 1 end }
|
|
assert_equal '1', proc{ C2 = 1 # [yarv-dev:800]
|
|
begin module C2; end; rescue TypeError; 1 end }
|
|
|
|
# colon2, colon3
|
|
assert_equal '1', proc{ class A; end; A::C = 1; A::C }
|
|
# assert_equal '1', proc{ A = 7; begin A::C = 7; rescue TypeError; 1 end }
|
|
# assert_equal '1', proc{ begin 7::C = 7; rescue TypeError; 1 end }
|
|
assert_equal 'C', proc{ class A; class ::C; end end; C }
|
|
assert_equal 'Class', proc{ class A; class ::C; end end; C.class }
|
|
assert_equal 'OK', proc{ class A; ::C3 = "OK"; end; C3 }
|
|
assert_equal 'String', proc{ class A; ::C4 = "OK"; end; C4.class }
|
|
|
|
# class/module dup
|
|
assert_equal 'Class', proc{ class C; end; C.dup.class }
|
|
assert_equal 'Module', proc{ module M; end; M.dup.class }
|
|
|
|
|
|
# assert_equal "ok", proc{
|
|
# module Foo
|
|
# end
|
|
|
|
# begin
|
|
# def foo(&b)
|
|
# Foo.module_eval &b
|
|
# end
|
|
# foo{
|
|
# def bar
|
|
# end
|
|
# }
|
|
# bar()
|
|
# rescue NameError
|
|
# :ok
|
|
# end
|
|
# }, '[ruby-core:14378]'
|
|
|
|
# assert_equal '3', proc{
|
|
# $i = 0
|
|
# class C
|
|
# def self.const_missing *args
|
|
# $i+=1
|
|
# end
|
|
# end
|
|
|
|
# 3.times{
|
|
# C::FOO
|
|
# }
|
|
# $i
|
|
# }
|
|
|
|
assert_match /::C\z/, proc{
|
|
c = nil
|
|
Module.new{|m| c = class m::C; name; end}
|
|
c
|
|
}, '[ruby-dev:38456]'
|
|
|
|
# assert_normal_exit proc{
|
|
# s = Symbol.dup
|
|
# class << s
|
|
# end
|
|
# s.allocate.to_s
|
|
# }, '[ruby-core:30843]'
|
|
|
|
test_end
|