summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/mrbtest.rake6
-rw-r--r--test/t/argumenterror.rb5
-rw-r--r--test/t/array.rb4
-rw-r--r--test/t/class.rb4
-rw-r--r--test/t/enumerable.rb8
-rw-r--r--test/t/exception.rb17
-rw-r--r--test/t/false.rb4
-rw-r--r--test/t/float.rb4
-rw-r--r--test/t/hash.rb4
-rw-r--r--test/t/indexerror.rb4
-rw-r--r--test/t/integer.rb4
-rw-r--r--test/t/kernel.rb3
-rw-r--r--test/t/module.rb4
-rw-r--r--test/t/nameerror.rb4
-rw-r--r--test/t/nil.rb4
-rw-r--r--test/t/nomethoderror.rb13
-rw-r--r--test/t/numeric.rb4
-rw-r--r--test/t/proc.rb8
-rw-r--r--test/t/range.rb4
-rw-r--r--test/t/rangeerror.rb4
-rw-r--r--test/t/standarderror.rb4
-rw-r--r--test/t/string.rb11
-rw-r--r--test/t/superclass.rb46
-rw-r--r--test/t/symbol.rb4
-rw-r--r--test/t/true.rb4
-rw-r--r--test/t/typeerror.rb5
26 files changed, 81 insertions, 105 deletions
diff --git a/test/mrbtest.rake b/test/mrbtest.rake
index e8eb6addd..c28cf3577 100644
--- a/test/mrbtest.rake
+++ b/test/mrbtest.rake
@@ -31,15 +31,15 @@ MRuby.each_target do
end
file ass_lib => ass_c
- file ass_c => "#{current_dir}/assert.rb" do |t|
+ file ass_c => ["#{current_dir}/assert.rb", __FILE__] do |t|
FileUtils.mkdir_p File.dirname t.name
open(t.name, 'w') do |f|
- mrbc.run f, [t.prerequisites], 'mrbtest_assert_irep'
+ mrbc.run f, [t.prerequisites.first], 'mrbtest_assert_irep'
end
end
file mlib => clib
- file clib => [mrbcfile, init] + mrbs do |t|
+ file clib => [mrbcfile, init, __FILE__] + mrbs do |t|
_pp "GEN", "*.rb", "#{clib.relative_path}"
FileUtils.mkdir_p File.dirname(clib)
open(clib, 'w') do |f|
diff --git a/test/t/argumenterror.rb b/test/t/argumenterror.rb
index c8d277cc5..abb53429b 100644
--- a/test/t/argumenterror.rb
+++ b/test/t/argumenterror.rb
@@ -14,8 +14,3 @@ assert('ArgumentError', '15.2.24') do
assert_equal(Class, ArgumentError.class)
assert_equal(ArgumentError, e2.class)
end
-
-assert('ArgumentError superclass', '15.2.24.2') do
- assert_equal(StandardError, ArgumentError.superclass)
-end
-
diff --git a/test/t/array.rb b/test/t/array.rb
index 56daf0b01..538ea0c3f 100644
--- a/test/t/array.rb
+++ b/test/t/array.rb
@@ -5,10 +5,6 @@ assert('Array', '15.2.12') do
assert_equal(Class, Array.class)
end
-assert('Array superclass', '15.2.12.2') do
- assert_equal(Object, Array.superclass)
-end
-
assert('Array inclueded modules', '15.2.12.3') do
assert_true(Array.include?(Enumerable))
end
diff --git a/test/t/class.rb b/test/t/class.rb
index 821259c5e..f49ccf494 100644
--- a/test/t/class.rb
+++ b/test/t/class.rb
@@ -5,10 +5,6 @@ assert('Class', '15.2.3') do
assert_equal(Class, Class.class)
end
-assert('Class superclass', '15.2.3.2') do
- assert_equal(Module, Class.superclass)
-end
-
assert('Class#initialize', '15.2.3.3.1') do
c = Class.new do
def test
diff --git a/test/t/enumerable.rb b/test/t/enumerable.rb
index 97f86e561..21acd209e 100644
--- a/test/t/enumerable.rb
+++ b/test/t/enumerable.rb
@@ -44,7 +44,7 @@ assert('Enumerable#collect', '15.3.2.2.3') do
end
assert('Enumerable#detect', '15.3.2.2.4') do
- assert_true [1,2,3].detect() { true }
+ assert_equal 1, [1,2,3].detect() { true }
assert_equal 'a', [1,2,3].detect("a") { false }
end
@@ -63,7 +63,7 @@ assert('Enumerable#entries', '15.3.2.2.6') do
end
assert('Enumerable#find', '15.3.2.2.7') do
- assert_true [1,2,3].find() { true }
+ assert_equal 1, [1,2,3].find() { true }
assert_equal 'a', [1,2,3].find("a") { false }
end
@@ -106,8 +106,8 @@ assert('Enumerable#member?', '15.3.2.2.15') do
assert_false [1,2,3,4,5,6,7,8,9].member?(0)
end
-assert('Enumerable#partion', '15.3.2.2.16') do
- partition = [0,1,2,3,4,5,6,7,8,9].partition do |i|
+assert('Enumerable#partition', '15.3.2.2.16') do
+ [0,1,2,3,4,5,6,7,8,9].partition do |i|
i % 2 == 0
end
assert_equal [[0,2,4,6,8], [1,3,5,7,9]], partition
diff --git a/test/t/exception.rb b/test/t/exception.rb
index 8aa07e813..d27813028 100644
--- a/test/t/exception.rb
+++ b/test/t/exception.rb
@@ -5,10 +5,6 @@ assert('Exception', '15.2.22') do
assert_equal Class, Exception.class
end
-assert('Exception superclass', '15.2.22.2') do
- assert_equal Object, Exception.superclass
-end
-
assert('Exception.exception', '15.2.22.4.1') do
e = Exception.exception('a')
@@ -16,11 +12,14 @@ assert('Exception.exception', '15.2.22.4.1') do
end
assert('Exception#exception', '15.2.22.5.1') do
- e1 = Exception.exception()
- e2 = Exception.exception('b')
-
- assert_equal Exception, e1.class
- assert_equal Exception, e2.class
+ e = Exception.new
+ re = RuntimeError.new
+ assert_equal e, e.exception
+ assert_equal e, e.exception(e)
+ assert_equal re, re.exception(re)
+ changed_re = re.exception('message has changed')
+ assert_not_equal re, changed_re
+ assert_equal 'message has changed', changed_re.message
end
assert('Exception#message', '15.2.22.5.2') do
diff --git a/test/t/false.rb b/test/t/false.rb
index bc684f2e6..3582f697a 100644
--- a/test/t/false.rb
+++ b/test/t/false.rb
@@ -11,10 +11,6 @@ assert('FalseClass false', '15.2.6.1') do
assert_false FalseClass.method_defined? :new
end
-assert('FalseClass superclass', '15.2.6.2') do
- assert_equal Object, FalseClass.superclass
-end
-
assert('FalseClass#&', '15.2.6.3.1') do
assert_false false.&(true)
assert_false false.&(false)
diff --git a/test/t/float.rb b/test/t/float.rb
index ded434320..d45709173 100644
--- a/test/t/float.rb
+++ b/test/t/float.rb
@@ -5,10 +5,6 @@ assert('Float', '15.2.9') do
assert_equal Class, Float.class
end
-assert('Float superclass', '15.2.9.2') do
- assert_equal Numeric, Float.superclass
-end
-
assert('Float#+', '15.2.9.3.1') do
a = 3.123456788 + 0.000000001
b = 3.123456789 + 1
diff --git a/test/t/hash.rb b/test/t/hash.rb
index 0d8d137c4..eee7c7b6a 100644
--- a/test/t/hash.rb
+++ b/test/t/hash.rb
@@ -5,10 +5,6 @@ assert('Hash', '15.2.13') do
assert_equal Class, Hash.class
end
-assert('Hash superclass', '15.2.13.2') do
- assert_equal Object, Hash.superclass
-end
-
assert('Hash#==', '15.2.13.4.1') do
assert_true({ 'abc' => 'abc' } == { 'abc' => 'abc' })
assert_false({ 'abc' => 'abc' } == { 'cba' => 'cba' })
diff --git a/test/t/indexerror.rb b/test/t/indexerror.rb
index ea008a227..a8dce23a0 100644
--- a/test/t/indexerror.rb
+++ b/test/t/indexerror.rb
@@ -4,7 +4,3 @@
assert('IndexError', '15.2.33') do
assert_equal Class, IndexError.class
end
-
-assert('IndexError superclass', '15.2.33.2') do
- assert_equal StandardError, IndexError.superclass
-end
diff --git a/test/t/integer.rb b/test/t/integer.rb
index 6560dddfe..c50ef112c 100644
--- a/test/t/integer.rb
+++ b/test/t/integer.rb
@@ -5,10 +5,6 @@ assert('Integer', '15.2.8') do
assert_equal Class, Integer.class
end
-assert('Integer superclass', '15.2.8.2') do
- assert_equal Numeric, Integer.superclass
-end
-
assert('Integer#+', '15.2.8.3.1') do
a = 1+1
b = 1+1.0
diff --git a/test/t/kernel.rb b/test/t/kernel.rb
index 427d71e36..6df2294d5 100644
--- a/test/t/kernel.rb
+++ b/test/t/kernel.rb
@@ -586,8 +586,5 @@ assert('stack extend') do
end
assert_equal 6, recurse(0, 5)
- assert_raise RuntimeError do
- recurse(0, 100000)
- end
end
diff --git a/test/t/module.rb b/test/t/module.rb
index fcf46fe3a..5ac794330 100644
--- a/test/t/module.rb
+++ b/test/t/module.rb
@@ -5,10 +5,6 @@ assert('Module', '15.2.2') do
assert_equal Class, Module.class
end
-assert('Module superclass', '15.2.2.2') do
- assert_equal Object, Module.superclass
-end
-
# TODO not implemented ATM assert('Module.constants', '15.2.2.3.1') do
# TODO not implemented ATM assert('Module.nesting', '15.2.2.3.2') do
diff --git a/test/t/nameerror.rb b/test/t/nameerror.rb
index 3e3c59264..28682bedc 100644
--- a/test/t/nameerror.rb
+++ b/test/t/nameerror.rb
@@ -5,10 +5,6 @@ assert('NameError', '15.2.31') do
assert_equal Class, NameError.class
end
-assert('NameError superclass', '15.2.31.2') do
- assert_equal StandardError, NameError.superclass
-end
-
assert('NameError#name', '15.2.31.2.1') do
# This check is not duplicate with 15.2.31.2.2 check.
diff --git a/test/t/nil.rb b/test/t/nil.rb
index 971ce2e8e..53b922f9a 100644
--- a/test/t/nil.rb
+++ b/test/t/nil.rb
@@ -10,10 +10,6 @@ assert('NilClass', '15.2.4.1') do
assert_false NilClass.method_defined? :new
end
-assert('NilClass superclass', '15.2.4.2') do
- assert_equal Object, NilClass.superclass
-end
-
assert('NilClass#&', '15.2.4.3.1') do
assert_false nil.&(true)
assert_false nil.&(nil)
diff --git a/test/t/nomethoderror.rb b/test/t/nomethoderror.rb
index 561e545f9..5fed79689 100644
--- a/test/t/nomethoderror.rb
+++ b/test/t/nomethoderror.rb
@@ -8,6 +8,15 @@ assert('NoMethodError', '15.2.32') do
end
end
-assert('NoMethodError superclass', '15.2.32.2') do
- assert_equal NameError, NoMethodError.superclass
+assert('NoMethodError#args', '15.2.32.2.1') do
+ a = NoMethodError.new 'test', :test, [1, 2]
+ assert_equal [1, 2], a.args
+
+ assert_nothing_raised do
+ begin
+ doesNotExistAsAMethodNameForVerySure 3, 1, 4
+ rescue NoMethodError => e
+ assert_equal [3, 1, 4], e.args
+ end
+ end
end
diff --git a/test/t/numeric.rb b/test/t/numeric.rb
index ef977da29..2b01611a7 100644
--- a/test/t/numeric.rb
+++ b/test/t/numeric.rb
@@ -5,10 +5,6 @@ assert('Numeric', '15.2.7') do
assert_equal Class, Numeric.class
end
-assert('Numeric superclass', '15.2.7.2') do
- assert_equal Object, Numeric.superclass
-end
-
assert('Numeric#+@', '15.2.7.4.1') do
assert_equal(+1, +1)
end
diff --git a/test/t/proc.rb b/test/t/proc.rb
index e871e637e..22ccceb68 100644
--- a/test/t/proc.rb
+++ b/test/t/proc.rb
@@ -5,10 +5,6 @@ assert('Proc', '15.2.17') do
assert_equal Class, Proc.class
end
-assert('Proc superclass', '15.2.17.2') do
- assert_equal Object, Proc.superclass
-end
-
assert('Proc.new', '15.2.17.3.1') do
assert_raise ArgumentError do
Proc.new
@@ -26,8 +22,8 @@ assert('Proc#[]', '15.2.17.4.1') do
b2 = Proc.new { |i| a2 += i }
b2.[](5)
- assert_equal a, 1
- assert_equal a2, 5
+ assert_equal 1, a
+ assert_equal 5, a2
end
assert('Proc#arity', '15.2.17.4.2') do
diff --git a/test/t/range.rb b/test/t/range.rb
index b35da40ab..278b26902 100644
--- a/test/t/range.rb
+++ b/test/t/range.rb
@@ -5,10 +5,6 @@ assert('Range', '15.2.14') do
assert_equal Class, Range.class
end
-assert('Range superclass', '15.2.14.2') do
- assert_equal Object, Range.superclass
-end
-
assert('Range#==', '15.2.14.4.1') do
assert_true (1..10) == (1..10)
assert_false (1..10) == (1..100)
diff --git a/test/t/rangeerror.rb b/test/t/rangeerror.rb
index 8dc683745..97878096e 100644
--- a/test/t/rangeerror.rb
+++ b/test/t/rangeerror.rb
@@ -4,7 +4,3 @@
assert('RangeError', '15.2.26') do
assert_equal Class, RangeError.class
end
-
-assert('RangeError superclass', '15.2.26.2') do
- assert_equal StandardError, RangeError.superclass
-end
diff --git a/test/t/standarderror.rb b/test/t/standarderror.rb
index cab99834e..c349b08cf 100644
--- a/test/t/standarderror.rb
+++ b/test/t/standarderror.rb
@@ -4,7 +4,3 @@
assert('StandardError', '15.2.23') do
assert_equal Class, StandardError.class
end
-
-assert('StandardError superclass', '15.2.23.2') do
- assert_equal Exception, StandardError.superclass
-end
diff --git a/test/t/string.rb b/test/t/string.rb
index 5ecb51530..c0e545e87 100644
--- a/test/t/string.rb
+++ b/test/t/string.rb
@@ -5,10 +5,6 @@ assert('String', '15.2.10') do
assert_equal Class, String.class
end
-assert('String superclass', '15.2.10.2') do
- assert_equal Object, String.superclass
-end
-
assert('String#<=>', '15.2.10.5.1') do
a = '' <=> ''
b = '' <=> 'not empty'
@@ -320,6 +316,13 @@ assert('String#replace', '15.2.10.5.28') do
b.replace(c);
c.replace(b);
assert_equal c, b
+
+ # shared string
+ s = "foo" * 100
+ a = s[10, 90] # create shared string
+ assert_equal("", s.replace("")) # clear
+ assert_equal("", s) # s is cleared
+ assert_not_equal("", a) # a should not be affected
end
assert('String#reverse', '15.2.10.5.29') do
diff --git a/test/t/superclass.rb b/test/t/superclass.rb
new file mode 100644
index 000000000..9fd8830b3
--- /dev/null
+++ b/test/t/superclass.rb
@@ -0,0 +1,46 @@
+[
+ # [:Object, :implementation_defined_value, '15.2.2.1'],
+ [:Module, :Object, '15.2.2.2'],
+ [:Class, :Module, '15.2.3.2'],
+ [:NilClass, :Object, '15.2.4.2'],
+ [:TrueClass, :Object, '15.2.5.2'],
+ [:FalseClass, :Object, '15.2.6.2'],
+ [:Numeric, :Object, '15.2.7.2'],
+ [:Integer, :Numeric, '15.2.8.2'],
+ [:Float, :Numeric, '15.2.9.2'],
+ [:String, :Object, '15.2.10.2'],
+ [:Symbol, :Object, '15.2.11.2'],
+ [:Array, :Object, '15.2.12.2'],
+ [:Hash, :Object, '15.2.13.2'],
+ [:Range, :Object, '15.2.14.2'],
+# [:Regexp, :Object, '15.2.15.2'], #No Regexp in mruby core
+# [:MatchData, :Object, '15.2.16.2'],
+ [:Proc, :Object, '15.2.17.2'],
+# [:Struct, :Object, '15.2.18.2'],
+# [:Time, :Object, '15.2.19.2'],
+# [:IO, :Object, '15.2.20.2'],
+# [:File, :IO, '15.2.21.2'],
+ [:Exception, :Object, '15.2.22.2'],
+ [:StandardError, :Exception, '15.2.23.2'],
+ [:ArgumentError, :StandardError, '15.2.24.2'],
+ [:LocalJumpError, :StandardError, '15.2.25.2'],
+ [:RangeError, :StandardError, '12.2.26.2'],
+ [:RegexpError, :StandardError, '12.2.27.2'],
+ [:RuntimeError, :StandardError, '12.2.28.2'],
+ [:TypeError, :StandardError, '12.2.29.2'],
+# [:ZeroDivisionError, :StandardError, '12.2.30.2'], # No ZeroDivisionError in mruby
+ [:NameError, :StandardError, '15.2.31.2'],
+ [:NoMethodError, :NameError, '15.2.32.2'],
+ [:IndexError, :StandardError, '15.2.33.2'],
+# [:IOError, :StandardError, '12.2.34.2'],
+# [:EOFError, :IOError, '12.2.35.2'],
+# [:SystemCallError, :StandardError, '15.2.36.2'],
+ [:ScriptError, :Exception, '12.2.37.2'],
+ [:SyntaxError, :ScriptError, '12.2.38.2'],
+# [:LoadError, :ScriptError, '12.2.39,2'],
+].each do |cls, super_cls, iso|
+ assert "Direct superclass of #{cls}", iso do
+ skip "#{cls} isn't defined" unless Object.const_defined? cls
+ assert_equal Object.const_get(super_cls), Object.const_get(cls).superclass
+ end
+end
diff --git a/test/t/symbol.rb b/test/t/symbol.rb
index f852dcd00..b0252849d 100644
--- a/test/t/symbol.rb
+++ b/test/t/symbol.rb
@@ -5,10 +5,6 @@ assert('Symbol', '15.2.11') do
assert_equal Class, Symbol.class
end
-assert('Symbol superclass', '15.2.11.2') do
- assert_equal Object, Symbol.superclass
-end
-
assert('Symbol#===', '15.2.11.3.1') do
assert_true :abc == :abc
assert_false :abc == :cba
diff --git a/test/t/true.rb b/test/t/true.rb
index e5da2112c..74f605ef0 100644
--- a/test/t/true.rb
+++ b/test/t/true.rb
@@ -11,10 +11,6 @@ assert('TrueClass true', '15.2.5.1') do
assert_false TrueClass.method_defined? :new
end
-assert('TrueClass superclass', '15.2.5.2') do
- assert_equal Object, TrueClass.superclass
-end
-
assert('TrueClass#&', '15.2.5.3.1') do
assert_true true.&(true)
assert_false true.&(false)
diff --git a/test/t/typeerror.rb b/test/t/typeerror.rb
index a91fb1be2..32536a74f 100644
--- a/test/t/typeerror.rb
+++ b/test/t/typeerror.rb
@@ -4,8 +4,3 @@
assert('TypeError', '15.2.29') do
assert_equal Class, TypeError.class
end
-
-assert('TypeError superclass', '15.2.29.2') do
- assert_equal StandardError, TypeError.superclass
-end
-