summaryrefslogtreecommitdiffhomepage
path: root/test/t/class.rb
diff options
context:
space:
mode:
authorPaolo Bosetti <[email protected]>2012-05-29 14:32:05 -0700
committerPaolo Bosetti <[email protected]>2012-05-29 14:32:05 -0700
commitd73517877847dab5b345c7fa98091647737bbfe0 (patch)
tree6090a2df49b8093606181e5416e6aa6a5040b0ec /test/t/class.rb
parent391f8dcef02cdafeb4e0acc693945acb166a8d09 (diff)
parent1e5d15dbcb977f6d197c24eca4a973ee1c5bf521 (diff)
downloadmruby-d73517877847dab5b345c7fa98091647737bbfe0.tar.gz
mruby-d73517877847dab5b345c7fa98091647737bbfe0.zip
Merge branch 'master' of git://github.com/mruby/mruby into XCode
Diffstat (limited to 'test/t/class.rb')
-rw-r--r--test/t/class.rb126
1 files changed, 126 insertions, 0 deletions
diff --git a/test/t/class.rb b/test/t/class.rb
new file mode 100644
index 000000000..92f3df51d
--- /dev/null
+++ b/test/t/class.rb
@@ -0,0 +1,126 @@
+##
+# Class ISO Test
+
+assert('Class', '15.2.3') do
+ Class.class == Class
+end
+
+# Not ISO specified
+
+assert('Class 1') do
+ class C; end
+ C.class == Class
+end
+
+assert('Class 2') do
+ class C; end
+ C.new.class == C
+end
+
+assert('Class 3') do
+ class C; end
+ C.new.class.class == Class
+end
+
+assert('Class 4') do
+ class A; end
+ class C < A; end
+ C.class == Class
+end
+
+assert('Class 5') do
+ class A; end
+ class C < A; end
+ C.new.class == C
+end
+
+assert('Class 6') do
+ class A; end
+ class C < A; end
+ C.new.class.class == Class
+end
+
+assert('Class Module 1') do
+ module M; end
+ M.class == Module
+end
+
+assert('Class Module 2') do
+ module M; end
+ class C; include M; end
+ C.new.class == C
+end
+
+# nested class
+assert('Class Nested 1') do
+ class A; end
+ class A::B; end
+ A::B == A::B
+end
+
+assert('Class Nested 2') do
+ class A; end
+ class A::B; end
+ A::B.new.class == A::B
+end
+
+assert('Class Nested 3') do
+ class A; end
+ class A::B; end
+ A::B.new.class.class == Class
+end
+
+assert('Class Nested 4') do
+ class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C == A::B::C
+end
+
+assert('Class Nested 5') do
+ class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.class == Class
+end
+
+assert('Class Nested 6') do
+ class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.new.class == A::B::C
+end
+
+assert('Class Nested 7') do
+ class A; end
+ class A::B; end
+ class A::B2 < A::B; end
+ A::B2 == A::B2
+end
+
+assert('Class Nested 8') do
+ class A; end
+ class A::B; end
+ class A::B2 < A::B; end
+ A::B2.class == Class
+end
+
+assert('Class Colon 1') do
+ class A; end; A::C = 1; A::C == 1
+end
+
+assert('Class Colon 2') do
+ class A; class ::C; end end; C == C
+end
+
+assert('Class Colon 3') do
+ class A; class ::C; end end; C.class == Class
+end
+
+assert('Class Dup 1') do
+ class C; end; C.dup.class == Class
+end
+
+assert('Class Dup 2') do
+ module M; end; M.dup.class == Module
+end