Commit f4f69489 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #194 from bovi/add-more-tests

Add Tests for all Exception classes, for false, true, Proc, Module, nil ...
parents ea9bb1e3 150b235f
##
# ArgumentError ISO Test
assert('ArgumentError', '15.2.24') do
ArgumentError.class == Class
end
## ##
# Bootstrap tests for Class # Class ISO Test
assert('BS Class 1') do assert('Class', '15.2.3') do
Class.class == Class
end
# Not ISO specified
assert('Class 1') do
class C; end class C; end
C.class == Class C.class == Class
end end
assert('BS Class 2') do assert('Class 2') do
class C; end class C; end
C.new.class == C C.new.class == C
end end
assert('BS Class 3') do assert('Class 3') do
class C; end class C; end
C.new.class.class == Class C.new.class.class == Class
end end
assert('BS Class 4') do assert('Class 4') do
class A; end class A; end
class C < A; end class C < A; end
C.class == Class C.class == Class
end end
assert('BS Class 5') do assert('Class 5') do
class A; end class A; end
class C < A; end class C < A; end
C.new.class == C C.new.class == C
end end
assert('BS Class 6') do assert('Class 6') do
class A; end class A; end
class C < A; end class C < A; end
C.new.class.class == Class C.new.class.class == Class
end end
assert('BS Class Module 1') do assert('Class Module 1') do
module M; end module M; end
M.class == Module M.class == Module
end end
assert('BS Class Module 2') do assert('Class Module 2') do
module M; end module M; end
class C; include M; end class C; include M; end
C.new.class == C C.new.class == C
end end
# nested class # nested class
assert('BS Class Nested 1') do assert('Class Nested 1') do
class A; end class A; end
class A::B; end class A::B; end
A::B == A::B A::B == A::B
end end
assert('BS Class Nested 2') do assert('Class Nested 2') do
class A; end class A; end
class A::B; end class A::B; end
A::B.new.class == A::B A::B.new.class == A::B
end end
assert('BS Class Nested 3') do assert('Class Nested 3') do
class A; end class A; end
class A::B; end class A::B; end
A::B.new.class.class == Class A::B.new.class.class == Class
end end
assert('BS Class Nested 4') do assert('Class Nested 4') do
class A; end class A; end
class A::B; end class A::B; end
class A::B::C; end class A::B::C; end
A::B::C == A::B::C A::B::C == A::B::C
end end
assert('BS Class Nested 5') do assert('Class Nested 5') do
class A; end class A; end
class A::B; end class A::B; end
class A::B::C; end class A::B::C; end
A::B::C.class == Class A::B::C.class == Class
end end
assert('BS Class Nested 6') do assert('Class Nested 6') do
class A; end class A; end
class A::B; end class A::B; end
class A::B::C; end class A::B::C; end
A::B::C.new.class == A::B::C A::B::C.new.class == A::B::C
end end
assert('BS Class Nested 7') do assert('Class Nested 7') do
class A; end class A; end
class A::B; end class A::B; end
class A::B2 < A::B; end class A::B2 < A::B; end
A::B2 == A::B2 A::B2 == A::B2
end end
assert('BS Class Nested 8') do assert('Class Nested 8') do
class A; end class A; end
class A::B; end class A::B; end
class A::B2 < A::B; end class A::B2 < A::B; end
A::B2.class == Class A::B2.class == Class
end end
assert('BS Class Colon 1') do assert('Class Colon 1') do
class A; end; A::C = 1; A::C == 1 class A; end; A::C = 1; A::C == 1
end end
assert('BS Class Colon 2') do assert('Class Colon 2') do
class A; class ::C; end end; C == C class A; class ::C; end end; C == C
end end
assert('BS Class Colon 3') do assert('Class Colon 3') do
class A; class ::C; end end; C.class == Class class A; class ::C; end end; C.class == Class
end end
assert('BS Class Dup 1') do assert('Class Dup 1') do
class C; end; C.dup.class == Class class C; end; C.dup.class == Class
end end
assert('BS Class Dup 2') do assert('Class Dup 2') do
module M; end; M.dup.class == Module module M; end; M.dup.class == Module
end end
## ##
# Bootstrap tests for Exceptions # Exception ISO Test
assert('BS Exception 1') do assert('Exception', '15.2.22') do
Exception.class == Class
end
assert('Exception.exception', '15.2.22.4.1') do
e = Exception.exception('a')
e.class == Exception
end
assert('Exception#exception', '15.2.22.5.1') do
e1 = Exception.exception()
e2 = Exception.exception('b')
e1.class == Exception and e2.class == Exception
end
assert('Exception#message', '15.2.22.5.2') do
e = Exception.exception('a')
e.message == 'a'
end
assert('Exception#to_s', '15.2.22.5.3') do
e = Exception.exception('a')
e.to_s == 'a'
end
assert('Exception.exception', '15.2.22.4.1') do
e = Exception.exception()
e.initialize('a')
e.message == 'a'
end
# Not ISO specified
assert('Exception 1') do
begin begin
1+1 1+1
ensure ensure
...@@ -9,7 +47,7 @@ assert('BS Exception 1') do ...@@ -9,7 +47,7 @@ assert('BS Exception 1') do
end == 2 end == 2
end end
assert('BS Exception 2') do assert('Exception 2') do
begin begin
1+1 1+1
begin begin
...@@ -22,7 +60,7 @@ assert('BS Exception 2') do ...@@ -22,7 +60,7 @@ assert('BS Exception 2') do
end == 4 end == 4
end end
assert('BS Exception 3') do assert('Exception 3') do
begin begin
1+1 1+1
begin begin
...@@ -40,7 +78,7 @@ assert('BS Exception 3') do ...@@ -40,7 +78,7 @@ assert('BS Exception 3') do
end == 4 end == 4
end end
assert('BS Exception 4') do assert('Exception 4') do
a = nil a = nil
1.times{|e| 1.times{|e|
begin begin
...@@ -51,7 +89,7 @@ assert('BS Exception 4') do ...@@ -51,7 +89,7 @@ assert('BS Exception 4') do
a == NilClass a == NilClass
end end
assert('BS Exception 5') do assert('Exception 5') do
$ans = [] $ans = []
def m def m
$! $!
...@@ -69,7 +107,7 @@ assert('BS Exception 5') do ...@@ -69,7 +107,7 @@ assert('BS Exception 5') do
$ans == [nil] $ans == [nil]
end end
assert('BS Exception 6') do assert('Exception 6') do
$i = 0 $i = 0
def m def m
iter{ iter{
...@@ -95,7 +133,7 @@ assert('BS Exception 6') do ...@@ -95,7 +133,7 @@ assert('BS Exception 6') do
$i == 7 $i == 7
end end
assert('BS Exception 7') do assert('Exception 7') do
$i = 0 $i = 0
def m def m
begin begin
...@@ -115,7 +153,7 @@ assert('BS Exception 7') do ...@@ -115,7 +153,7 @@ assert('BS Exception 7') do
$i == 10 $i == 10
end end
assert('BS Exception 8') do assert('Exception 8') do
begin begin
1 1
rescue rescue
...@@ -125,7 +163,7 @@ assert('BS Exception 8') do ...@@ -125,7 +163,7 @@ assert('BS Exception 8') do
end == 3 end == 3
end end
assert('BS Exception 9') do assert('Exception 9') do
begin begin
1+1 1+1
rescue rescue
...@@ -137,7 +175,7 @@ assert('BS Exception 9') do ...@@ -137,7 +175,7 @@ assert('BS Exception 9') do
end == 6 end == 6
end end
assert('BS Exception 10') do assert('Exception 10') do
begin begin
1+1 1+1
begin begin
...@@ -155,4 +193,3 @@ assert('BS Exception 10') do ...@@ -155,4 +193,3 @@ assert('BS Exception 10') do
7+7 7+7
end == 12 end == 12
end end
##
# FalseClass ISO Test
assert('FalseClass', '15.2.6') do
FalseClass.class == Class
end
assert('FalseClass false', '15.2.6.1') do
not false
end
assert('FalseClass#&', '15.2.6.3.1') do
not FalseClass.new.&(true) and not FalseClass.new.&(false)
end
assert('FalseClass#^', '15.2.6.3.2') do
FalseClass.new.^(true) and not FalseClass.new.^(false)
end
assert('FalseClass#to_s', '15.2.6.3.3') do
FalseClass.new.to_s == 'false'
end
assert('FalseClass#|', '15.2.6.3.4') do
FalseClass.new.|(true) and not FalseClass.new.|(false)
end
##
# IndexError ISO Test
assert('IndexError', '15.2.33') do
IndexError.class == Class
end
##
# LocalJumpError ISO Test
assert('LocalJumoError', '15.2.25') do
LocalJumpError.class == Class
end
# TODO 15.2.25.2.1 LocalJumpError#exit_value
# TODO 15.2.25.2.2 LocalJumpError#reason
##
# Module ISO Test
assert('Module', '15.2.2') do
Module.class == Class
end
# TODO not implemented ATM assert('Module.constants', '15.2.2') do
# TODO not implemented ATM assert('Module.nesting', '15.2.2') do
##
# NameError ISO Test
assert('NameError', '15.2.31') do
NameError.class == Class
end
# TODO 15.2.31.2.1 NameError#name
assert('NameError#initialize', '15.2.31.2.2') do
e = NameError.new.initialize('a')
e.class == NameError and e.message == 'a'
end
##
# NilClass ISO Test
assert('NilClass', '15.2.4') do
NilClass.class == Class
end
assert('NilClass#&', '15.2.4.3.1') do
not NilClass.new.& and not NilClass.new.&(nil)
end
assert('NilClass#^', '15.2.4.3.2') do
NilClass.new.^(true) and not NilClass.new.^(false)
end
assert('NilClass#|', '15.2.4.3.3') do
NilClass.new.|(true) and not NilClass.new.|(false)
end
assert('NilClass#nil?', '15.2.4.3.4') do
NilClass.new.nil?
end
assert('NilClass#to_s', '15.2.4.3.5') do
NilClass.new.to_s == ''
end
##
# NoMethodError ISO Test
assert('NoMethodError', '15.2.32') do
e2 = nil
begin
doesNotExistAsAMethodNameForVerySure("")
rescue => e1
e2 = e1
end
NoMethodError.class == Class and e2.class == NoMethodError
end
##
# Object ISO Test
assert('Object', '15.2.1') do
Object.class == Class
end
##
# Proc ISO Test
assert('Proc', '15.2.17') do
Proc.class == Class
end
assert('Proc.new', '15.2.17.3.1') do
a = nil
begin
Proc.new
rescue => e
a = e
end
b = Proc.new {}
a.class == ArgumentError and b.class == Proc
end
assert('Proc#[]', '15.2.17.4.1') do
a = 0
b = Proc.new { a += 1 }
b.[]
a2 = 0
b2 = Proc.new { |i| a2 += i }
b2.[](5)
a == 1 and a2 == 5
end
assert('Proc#call', '15.2.17.4.3') do
a = 0
b = Proc.new { a += 1 }
b.call
a2 = 0
b2 = Proc.new { |i| a2 += i }
b2.call(5)
a == 1 and a2 == 5
end
##
# RangeError ISO Test
assert('RangeError', '15.2.26') do
RangeError.class == Class
end
##
# RegexpError ISO Test
# TODO broken ATM assert('RegexpError', '15.2.27') do
##
# RuntimeError ISO Test
assert('RuntimeError', '15.2.28') do
e2 = nil
begin
# this will cause an exception due to the wrong location
retry
rescue => e1
e2 = e1
end
RuntimeError.class == Class and e2.class == RuntimeError
end
##
# StandardError ISO Test
assert('StandardError', '15.2.23') do
StandardError.class == Class
end
##
# Struct ISO Test
assert('Struct', '15.2.18') do
Struct.class == Class
end
##
# TrueClass ISO Test
assert('TrueClass', '15.2.5') do
TrueClass.class == Class
end
assert('TrueClass true', '15.2.5.1') do
true
end
assert('TrueClass#&', '15.2.5.3.1') do
TrueClass.new.&(true) and not TrueClass.new.&(false)
end
assert('TrueClass#^', '15.2.5.3.2') do
not TrueClass.new.^(true) and TrueClass.new.^(false)
end
assert('TrueClass#to_s', '15.2.5.3.3') do
TrueClass.new.to_s == 'true'
end
assert('TrueClass#|', '15.2.5.3.4') do
TrueClass.new.|(true) and TrueClass.new.|(false)
end
##
# TypeError ISO Test
assert('TypeError', '15.2.29') do
TypeError.class == Class
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment