diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/mrbtest.rake | 6 | ||||
| -rw-r--r-- | test/t/argumenterror.rb | 5 | ||||
| -rw-r--r-- | test/t/array.rb | 4 | ||||
| -rw-r--r-- | test/t/class.rb | 4 | ||||
| -rw-r--r-- | test/t/enumerable.rb | 8 | ||||
| -rw-r--r-- | test/t/exception.rb | 17 | ||||
| -rw-r--r-- | test/t/false.rb | 4 | ||||
| -rw-r--r-- | test/t/float.rb | 4 | ||||
| -rw-r--r-- | test/t/hash.rb | 4 | ||||
| -rw-r--r-- | test/t/indexerror.rb | 4 | ||||
| -rw-r--r-- | test/t/integer.rb | 4 | ||||
| -rw-r--r-- | test/t/kernel.rb | 3 | ||||
| -rw-r--r-- | test/t/module.rb | 4 | ||||
| -rw-r--r-- | test/t/nameerror.rb | 4 | ||||
| -rw-r--r-- | test/t/nil.rb | 4 | ||||
| -rw-r--r-- | test/t/nomethoderror.rb | 13 | ||||
| -rw-r--r-- | test/t/numeric.rb | 4 | ||||
| -rw-r--r-- | test/t/proc.rb | 8 | ||||
| -rw-r--r-- | test/t/range.rb | 4 | ||||
| -rw-r--r-- | test/t/rangeerror.rb | 4 | ||||
| -rw-r--r-- | test/t/standarderror.rb | 4 | ||||
| -rw-r--r-- | test/t/string.rb | 11 | ||||
| -rw-r--r-- | test/t/superclass.rb | 46 | ||||
| -rw-r--r-- | test/t/symbol.rb | 4 | ||||
| -rw-r--r-- | test/t/true.rb | 4 | ||||
| -rw-r--r-- | test/t/typeerror.rb | 5 |
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 - |
