Changeset 331 for EcnlProtoTool/trunk/mruby-1.3.0/test
- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-1.3.0
- Files:
-
- 2 added
- 18 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-1.3.0/test/assert.rb
r321 r331 11 11 while i < len 12 12 str = args[i].to_s 13 begin 14 __printstr__ str 15 rescue NoMethodError 16 __t_printstr__ str rescue print str 17 end 13 __t_printstr__ str rescue print str 18 14 i += 1 19 15 end … … 49 45 $mrbtest_assert = [] 50 46 $mrbtest_assert_idx = 0 51 if(!yield || $mrbtest_assert.size > 0) 47 yield 48 if($mrbtest_assert.size > 0) 52 49 $asserts.push(assertion_string('Fail: ', str, iso, nil)) 53 50 $ko_test += 1 … … 218 215 219 216 $asserts.each do |msg| 220 puts msg217 t_print "#{msg}\n" 221 218 end 222 219 … … 237 234 # Performs fuzzy check for equality on methods returning floats 238 235 def check_float(a, b) 239 tolerance = 1e-12236 tolerance = Mrbtest::FLOAT_TOLERANCE 240 237 a = a.to_f 241 238 b = b.to_f -
EcnlProtoTool/trunk/mruby-1.3.0/test/bintest.rb
r321 r331 4 4 def cmd(s) 5 5 case RbConfig::CONFIG['host_os'] 6 when /mswin(?!ce)|mingw| cygwin|bccwin/6 when /mswin(?!ce)|mingw|bccwin/ 7 7 "bin\\#{s}.exe" 8 8 else … … 13 13 def shellquote(s) 14 14 case RbConfig::CONFIG['host_os'] 15 when /mswin(?!ce)|mingw| cygwin|bccwin/15 when /mswin(?!ce)|mingw|bccwin/ 16 16 "\"#{s}\"" 17 17 else … … 21 21 22 22 ARGV.each do |gem| 23 case RbConfig::CONFIG['host_os'] 24 when /mswin(?!ce)|mingw|bccwin/ 25 gem = gem.gsub('\\', '/') 26 end 27 23 28 Dir["#{gem}/bintest/**/*.rb"].each do |file| 24 29 load file -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/array.rb
r321 r331 12 12 assert('Array.[]', '15.2.12.4.1') do 13 13 assert_equal([1, 2, 3], Array.[](1,2,3)) 14 end 15 16 class SubArray < Array 17 end 18 19 assert('SubArray.[]') do 20 a = SubArray[1, 2, 3] 21 assert_equal(SubArray, a.class) 14 22 end 15 23 … … 83 91 a[2...4] = 6 84 92 assert_equal([1,2,6,5], a) 93 94 # passing self (#3274) 95 a = [1,2,3] 96 a[1,0] = a 97 assert_equal([1,1,2,3,2,3], a) 98 a = [1,2,3] 99 a[-1,0] = a 100 assert_equal([1,2,1,2,3,3], a) 85 101 end 86 102 … … 99 115 assert('Array#concat', '15.2.12.5.8') do 100 116 assert_equal([1,2,3,4], [1, 2].concat([3, 4])) 117 118 # passing self (#3302) 119 a = [1,2,3] 120 a.concat(a) 121 assert_equal([1,2,3,1,2,3], a) 101 122 end 102 123 … … 319 340 a = [ 1, 2, 3 ] 320 341 321 assert_true(a.hash.is_a? Integer) 342 #assert_true(a.hash.is_a? Integer) 343 assert_true(a.hash.is_a? Integral) # mruby special 322 344 assert_equal([1,2].hash, [1,2].hash) 323 345 end … … 348 370 assert_equal({Array=>200}, h) 349 371 end 372 373 assert("Array#rindex") do 374 class Sneaky 375 def ==(*) 376 $a.clear 377 $a.replace([1]) 378 false 379 end 380 end 381 $a = [2, 3, 4, 5, 6, 7, 8, 9, 10, Sneaky.new] 382 assert_equal 0, $a.rindex(1) 383 end 384 385 assert('Array#freeze') do 386 a = [].freeze 387 assert_raise(RuntimeError) do 388 a[0] = 1 389 end 390 end -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/class.rb
r321 r331 385 385 end 386 386 387 assert('class variable definition in singleton_class') do 388 class ClassVariableDefinitionInSingletonTest 389 class << self 390 @@class_variable = "value" 391 end 392 def class_variable 393 @@class_variable 394 end 395 end 396 397 assert_equal("value", ClassVariableDefinitionInSingletonTest.new.class_variable) 398 end 399 400 assert('class variable in module and class << self style class method') do 401 module ClassVariableInModuleTest 402 @@class_variable = "value" 403 class << self 404 def class_variable 405 @@class_variable 406 end 407 end 408 end 409 410 assert_equal("value", ClassVariableInModuleTest.class_variable) 411 end 412 413 assert('child class/module defined in singleton class get parent constant') do 414 actual = module GetParentConstantTest 415 EXPECT = "value" 416 class << self 417 class CHILD 418 class << self 419 EXPECT 420 end 421 end 422 end 423 end 424 assert_equal("value", actual) 425 end 426 427 assert('overriding class variable with a module (#3235)') do 428 module ModuleWithCVar 429 @@class_variable = 1 430 end 431 class CVarOverrideTest 432 @@class_variable = 2 433 include ModuleWithCVar 434 435 assert_equal(1, @@class_variable) 436 end 437 end 438 387 439 assert('class with non-class/module outer raises TypeError') do 388 440 assert_raise(TypeError) { class 0::C1; end } 389 441 assert_raise(TypeError) { class []::C2; end } 390 442 end 443 444 assert("remove_method doesn't segfault if the passed in argument isn't a symbol") do 445 klass = Class.new 446 assert_raise(TypeError) { klass.remove_method nil } 447 assert_raise(TypeError) { klass.remove_method 123 } 448 assert_raise(TypeError) { klass.remove_method 1.23 } 449 assert_raise(NameError) { klass.remove_method "hello" } 450 assert_raise(TypeError) { klass.remove_method Class.new } 451 end -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/exception.rb
r321 r331 339 339 1 * "b" 340 340 ensure 341 @e = self.z 342 end 343 end 344 341 @e = self.zz 342 end 343 end 344 345 def zz 346 true 347 end 345 348 def z 346 349 true … … 351 354 352 355 assert('Exception#inspect without message') do 353 assert_equal "Exception : Exception", Exception.new.inspect356 assert_equal "Exception", Exception.new.inspect 354 357 end 355 358 … … 374 377 end 375 378 376 assert('Raise in rescue') do 377 assert_raise(ArgumentError) do 378 begin 379 raise "" # RuntimeError 380 rescue 381 raise ArgumentError 382 end 383 end 384 end 379 def backtrace_available? 380 begin 381 raise "XXX" 382 rescue => exception 383 not exception.backtrace.empty? 384 end 385 end 386 387 assert('GC in rescue') do 388 skip "backtrace isn't available" unless backtrace_available? 389 390 line = nil 391 begin 392 [1].each do 393 [2].each do 394 [3].each do 395 line = __LINE__; raise "XXX" 396 end 397 end 398 end 399 rescue => exception 400 GC.start 401 assert_equal("#{__FILE__}:#{line}:in call", 402 exception.backtrace.first) 403 end 404 end 405 406 assert('Method call in rescue') do 407 skip "backtrace isn't available" unless backtrace_available? 408 409 line = nil 410 begin 411 [1].each do 412 [2].each do 413 line = __LINE__; raise "XXX" 414 end 415 end 416 rescue => exception 417 [3].each do 418 end 419 assert_equal("#{__FILE__}:#{line}:in call", 420 exception.backtrace.first) 421 end 422 end -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/float.rb
r321 r331 149 149 assert('Float#to_i', '15.2.9.3.14') do 150 150 assert_equal(3, 3.123456789.to_i) 151 assert_raise(FloatDomainError) { Float::INFINITY.to_i } 152 assert_raise(FloatDomainError) { (-Float::INFINITY).to_i } 153 assert_raise(FloatDomainError) { Float::NAN.to_i } 151 154 end 152 155 -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/hash.rb
r321 r331 17 17 18 18 assert_equal 'abc', a['abc'] 19 20 # Hash#[] should call #default (#3272) 21 hash = {} 22 def hash.default(k); self[k] = 1; end 23 hash[:foo] += 1 24 25 assert_equal 2, hash[:foo] 19 26 end 20 27 … … 38 45 a['a'] = 2 39 46 assert_equal({'a' => 1}, b) 47 48 c = Hash.new { |h, k| h[k] = k.upcase } 49 d = c.dup 50 assert_equal("FOO", d["foo"]) 40 51 end 41 52 … … 240 251 b.replace(a) 241 252 assert_equal(127, b[127]) 253 254 assert_raise(TypeError) do 255 { 'abc_key' => 'abc_value' }.replace "a" 256 end 242 257 end 243 258 … … 352 367 assert_equal("b", h[[:b]]) 353 368 end 369 370 assert('Hash#freeze') do 371 h = {}.freeze 372 assert_raise(RuntimeError) do 373 h[:a] = 'b' 374 end 375 end -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/integer.rb
r321 r331 148 148 # Left Shift by a negative is Right Shift 149 149 assert_equal 23, 46 << -1 150 151 # Left Shift by 31 is bitShift overflow to SignedInt 152 assert_equal 2147483648, 1 << 31 153 154 # -3 Left Shift by 30 is bitShift overflow to SignedInt 155 assert_equal(-3221225472, -3 << 30) 150 156 end 151 157 -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/kernel.rb
r321 r331 222 222 end 223 223 224 assert('Kernel#dup class') do 225 assert_nothing_raised do 226 Array.dup.new(200) 227 Range.dup.new(2, 3) 228 String.dup.new("a"*50) 229 end 230 end 231 224 232 # Kernel#eval is provided by mruby-eval mrbgem '15.3.1.3.12' 225 233 … … 248 256 249 257 assert_true respond_to?(:test_method) 258 end 259 260 assert('Kernel#freeze') do 261 obj = Object.new 262 assert_equal obj, obj.freeze 263 assert_equal 0, 0.freeze 264 assert_equal :a, :a.freeze 250 265 end 251 266 … … 424 439 assert('Kernel#public_methods', '15.3.1.3.38') do 425 440 assert_equal Array, public_methods.class 441 class Foo 442 def foo 443 end 444 end 445 assert_equal [:foo], Foo.new.public_methods(false) 426 446 end 427 447 … … 508 528 end 509 529 530 assert('Kernel#to_s on primitives') do 531 begin 532 Fixnum.alias_method :to_s_, :to_s 533 Fixnum.remove_method :to_s 534 535 assert_nothing_raised do 536 # segfaults if mrb_cptr is used 537 1.to_s 538 end 539 ensure 540 Fixnum.alias_method :to_s, :to_s_ 541 Fixnum.remove_method :to_s_ 542 end 543 end 544 510 545 assert('Kernel.local_variables', '15.3.1.2.7') do 511 546 a, b = 0, 1 … … 515 550 assert_equal [:a, :b, :vars], vars 516 551 517 Proc.new {552 assert_equal [:a, :b, :c, :vars], Proc.new { |a, b| 518 553 c = 2 519 vars = Kernel.local_variables.sort 520 assert_equal [:a, :b, :c, :vars], vars 521 }.call 554 Kernel.local_variables.sort 555 }.call(-1, -2) 522 556 end 523 557 … … 588 622 assert_equal 6, recurse(0, 5) 589 623 end 590 -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/literals.rb
r321 r331 27 27 assert_equal 10, 1_0 28 28 # integer with exponent 29 assert_equal 10.0, 1e1 ,29 assert_equal 10.0, 1e1 30 30 assert_equal(0.1, 1e-1) 31 31 assert_equal 10.0, 1e+1 -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/module.rb
r321 r331 494 494 495 495 # Not ISO specified 496 497 assert('Module#define_method') do 498 c = Class.new { 499 define_method(:m1) { :ok } 500 define_method(:m2, Proc.new { :ok }) 501 } 502 assert_equal c.new.m1, :ok 503 assert_equal c.new.m2, :ok 504 assert_raise(TypeError) do 505 Class.new { define_method(:n1, nil) } 506 end 507 end 496 508 497 509 # @!group prepend … … 838 850 assert_raise(TypeError) { module []::M2 end } 839 851 end 852 853 assert('get constant of parent module in singleton class; issue #3568') do 854 actual = module GetConstantInSingletonTest 855 EXPECTED = "value" 856 class << self 857 EXPECTED 858 end 859 end 860 861 assert_equal("value", actual) 862 end -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/nil.rb
r321 r331 33 33 assert_equal '', nil.to_s 34 34 end 35 36 assert('safe navigation') do 37 assert_nil nil&.size 38 assert_equal 0, []&.size 39 end -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/proc.rb
r321 r331 137 137 end 138 138 139 assert('call Proc#initialize if defined') do 140 a = [] 141 c = Class.new(Proc) do 142 define_method(:initialize) do 143 a << :ok 144 end 145 end 146 147 assert_kind_of c, c.new{} 148 assert_equal [:ok], a 149 end 150 139 151 assert('&obj call to_proc if defined') do 140 152 pr = Proc.new{} -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/range.rb
r321 r331 44 44 45 45 assert('Range#include?', '15.2.14.4.8') do 46 a = (1..10) 46 assert_true (1..10).include?(10) 47 assert_false (1..10).include?(11) 47 48 48 assert_true a.include?(5)49 assert_false a.include?(20)49 assert_true (1...10).include?(9) 50 assert_false (1...10).include?(10) 50 51 end 51 52 … … 58 59 assert_equal (1..10), b 59 60 assert_false b.exclude_end? 61 62 assert_raise(NameError) { (0..1).send(:initialize, 1, 3) } 60 63 end 61 64 -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/string.rb
r321 r331 252 252 end 253 253 254 assert('String#chomp! uses the correct length') do 255 class A 256 def to_str 257 $s.replace("AA") 258 "A" 259 end 260 end 261 262 $s = "AAA" 263 $s.chomp!(A.new) 264 assert_equal $s, "A" 265 end 266 254 267 assert('String#chop', '15.2.10.5.11') do 255 268 a = ''.chop … … 329 342 330 343 assert_equal list, n_list 344 345 n_list.clear 346 a.each_line("li") do |line| 347 n_list << line 348 end 349 assert_equal ["first li", "ne\nsecond li", "ne\nthird li", "ne"], n_list 331 350 end 332 351 … … 353 372 assert_equal('A', 'a'.gsub('a', 'A')) 354 373 assert_equal('A', 'a'.gsub('a'){|w| w.capitalize }) 374 assert_equal("<a><><>", 'a'.gsub('a', '<\0><\1><\2>')) 375 assert_equal(".h.e.l.l.o.", "hello".gsub("", ".")) 376 a = [] 377 assert_equal(".h.e.l.l.o.", "hello".gsub("") { |i| a << i; "." }) 378 assert_equal(["", "", "", "", "", ""], a) 379 assert_raise(ArgumentError) { "".gsub } 380 assert_raise(ArgumentError) { "".gsub("", "", "") } 355 381 end 356 382 … … 382 408 383 409 assert('String#include?', '15.2.10.5.21') do 384 assert_true 'abc'.include?(97)385 assert_false 'abc'.include?(100)386 410 assert_true 'abc'.include?('a') 387 411 assert_false 'abc'.include?('d') … … 392 416 assert_nil 'abc'.index('d') 393 417 assert_equal 3, 'abcabc'.index('a', 1) 418 assert_equal 5, "hello".index("", 5) 419 assert_equal nil, "hello".index("", 6) 394 420 end 395 421 … … 560 586 assert_equal 'aBcabc', 'abcabc'.sub('b') { |w| w.capitalize } 561 587 assert_equal 'aa$', 'aa#'.sub('#', '$') 588 assert_equal '.abc', "abc".sub("", ".") 589 590 str = "abc" 591 miss = str.sub("X", "Z") 592 assert_equal str, miss 593 assert_not_equal str.object_id, miss.object_id 594 595 a = [] 596 assert_equal '.abc', "abc".sub("") { |i| a << i; "." } 597 assert_equal [""], a 562 598 end 563 599 … … 586 622 b = '123456789'.to_f 587 623 c = '12345.6789'.to_f 624 d = '1e-2147483648'.to_f 625 e = '1e2147483648'.to_f 588 626 589 627 assert_float(0.0, a) 590 628 assert_float(123456789.0, b) 591 629 assert_float(12345.6789, c) 630 assert_float(0, d) 631 assert_float(Float::INFINITY, e) 592 632 end 593 633 … … 686 726 assert_raise(RuntimeError) { str.upcase! } 687 727 end 688 -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/symbol.rb
r321 r331 1 1 ## 2 2 # Symbol ISO Test 3 4 assert('Symbol') do 5 assert_equal :"a", :a 6 assert_equal :"a#{1}", :a1 7 assert_equal :'a', :a 8 assert_equal :'a#{1}', :"a\#{1}" 9 end 3 10 4 11 assert('Symbol', '15.2.11') do -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/syntax.rb
r321 r331 39 39 yield 40 40 end 41 assert_raise LocalJumpError do 42 o = Object.new 43 def o.foo 44 yield 45 end 46 o.foo 47 end 48 end 49 50 assert('redo in a for loop (#3275)') do 51 sum = 0 52 for i in 1..10 53 sum += i 54 i -= 1 55 if i > 0 56 redo 57 end 58 end 59 60 assert_equal 220, sum 41 61 end 42 62 … … 249 269 end 250 270 271 assert('multiple assignment (empty array rhs #3236, #3239)') do 272 a,b,*c = []; assert_equal [nil, nil, []], [a, b, c] 273 a,b,*c = [1]; assert_equal [1, nil, []], [a, b, c] 274 a,b,*c = [nil]; assert_equal [nil,nil, []], [a, b, c] 275 a,b,*c = [[]]; assert_equal [[], nil, []], [a, b, c] 276 end 277 251 278 assert('Return values of case statements') do 252 279 a = [] << case 1 … … 299 326 300 327 assert_equal 1, when_value 328 end 329 330 assert('splat object in assignment') do 331 o = Object.new 332 def o.to_a 333 nil 334 end 335 assert_equal [o], (a = *o) 336 337 def o.to_a 338 1 339 end 340 assert_raise(TypeError) { a = *o } 341 342 def o.to_a 343 [2] 344 end 345 assert_equal [2], (a = *o) 346 end 347 348 assert('splat object in case statement') do 349 o = Object.new 350 def o.to_a 351 nil 352 end 353 a = case o 354 when *o 355 1 356 end 357 assert_equal 1, a 301 358 end 302 359 … … 325 382 326 383 assert('External command execution.') do 327 class <<Kernel384 module Kernel 328 385 sym = '`'.to_sym 329 386 alias_method :old_cmd, sym -
EcnlProtoTool/trunk/mruby-1.3.0/test/t/unicode.rb
r321 r331 3 3 assert('bare \u notation test') do 4 4 # Mininum and maximum one byte characters 5 assert_equal("\ u0000", "\x00")6 assert_equal("\ u007F", "\x7F")5 assert_equal("\x00", "\u0000") 6 assert_equal("\x7F", "\u007F") 7 7 8 8 # Mininum and maximum two byte characters 9 assert_equal("\ u0080", "\xC2\x80")10 assert_equal("\ u07FF", "\xDF\xBF")9 assert_equal("\xC2\x80", "\u0080") 10 assert_equal("\xDF\xBF", "\u07FF") 11 11 12 12 # Mininum and maximum three byte characters 13 assert_equal("\ u0800", "\xE0\xA0\x80")14 assert_equal("\ uFFFF", "\xEF\xBF\xBF")13 assert_equal("\xE0\xA0\x80", "\u0800") 14 assert_equal("\xEF\xBF\xBF", "\uFFFF") 15 15 16 16 # Four byte characters require the \U notation … … 19 19 assert('braced \u notation test') do 20 20 # Mininum and maximum one byte characters 21 assert_equal("\ u{0000}", "\x00")22 assert_equal("\ u{007F}", "\x7F")21 assert_equal("\x00", "\u{0000}") 22 assert_equal("\x7F", "\u{007F}") 23 23 24 24 # Mininum and maximum two byte characters 25 assert_equal("\ u{0080}", "\xC2\x80")26 assert_equal("\ u{07FF}", "\xDF\xBF")25 assert_equal("\xC2\x80", "\u{0080}") 26 assert_equal("\xDF\xBF", "\u{07FF}") 27 27 28 28 # Mininum and maximum three byte characters 29 assert_equal("\ u{0800}", "\xE0\xA0\x80")30 assert_equal("\ u{FFFF}", "\xEF\xBF\xBF")29 assert_equal("\xE0\xA0\x80", "\u{0800}") 30 assert_equal("\xEF\xBF\xBF", "\u{FFFF}") 31 31 32 32 # Mininum and maximum four byte characters 33 assert_equal("\ u{10000}", "\xF0\x90\x80\x80")34 assert_equal("\ u{10FFFF}", "\xF4\x8F\xBF\xBF")33 assert_equal("\xF0\x90\x80\x80", "\u{10000}") 34 assert_equal("\xF4\x8F\xBF\xBF", "\u{10FFFF}") 35 35 end 36 37 assert('braced multiple \u notation test') do 38 assert_equal("ABC", "\u{41 42 43}") 39 end
Note:
See TracChangeset
for help on using the changeset viewer.