Changeset 439 for EcnlProtoTool/trunk/mruby-2.1.1/test/t/kernel.rb
- Timestamp:
- Jul 9, 2020, 8:51:43 AM (4 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-2.1.1
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-2.1.1/test/t/kernel.rb
r331 r439 32 32 # Kernel.eval is provided by the mruby-gem mrbgem. '15.3.1.2.3' 33 33 34 assert('Kernel.global_variables', '15.3.1.2.4') do35 assert_equal Array, Kernel.global_variables.class36 end37 38 34 assert('Kernel.iterator?', '15.3.1.2.5') do 39 35 assert_false Kernel.iterator? … … 52 48 assert_equal Proc, m.class 53 49 end 54 55 # Not implemented at the moment56 #assert('Kernel.local_variables', '15.3.1.2.7') do57 # Kernel.local_variables.class == Array58 #end59 50 60 51 assert('Kernel.loop', '15.3.1.2.8') do … … 109 100 assert_true __send__(:respond_to?, :nil?) 110 101 # test without argument and without block 111 assert_equal Array, __send__(:public_methods).class102 assert_equal String, __send__(:to_s).class 112 103 end 113 104 … … 177 168 assert_false b.respond_to?(:test) 178 169 assert_true c.respond_to?(:test) 170 171 a.freeze 172 d = a.clone 173 assert_true d.frozen? 179 174 end 180 175 … … 246 241 assert_true a.respond_to?(:test_method) 247 242 assert_false b.respond_to?(:test_method) 243 244 assert_raise(FrozenError) { Object.new.freeze.extend(Test4ExtendModule) } 245 assert_raise(FrozenError, TypeError) { :sym.extend(Test4ExtendModule) } 248 246 end 249 247 … … 263 261 assert_equal 0, 0.freeze 264 262 assert_equal :a, :a.freeze 265 end 266 267 assert('Kernel#global_variables', '15.3.1.3.14') do 268 assert_equal Array, global_variables.class 263 assert_equal true, true.freeze 264 assert_equal false, false.freeze 265 assert_equal nil, nil.freeze 266 skip unless Object.const_defined?(:Float) 267 assert_equal 0.0, 0.0.freeze 268 end 269 270 assert('Kernel#frozen?') do 271 assert_false "".frozen? 272 assert_true "".freeze.frozen? 273 assert_true 0.frozen? 274 assert_true :a.frozen? 275 assert_true true.frozen? 276 assert_true false.frozen? 277 assert_true nil.frozen? 278 skip unless Object.const_defined?(:Float) 279 assert_true 0.0.frozen? 269 280 end 270 281 … … 278 289 assert_equal String, s.class 279 290 assert_equal "main", s 280 end281 282 assert('Kernel#instance_variable_defined?', '15.3.1.3.20') do283 o = Object.new284 o.instance_variable_set(:@a, 1)285 286 assert_true o.instance_variable_defined?("@a")287 assert_false o.instance_variable_defined?("@b")288 assert_true o.instance_variable_defined?("@a"[0,2])289 assert_true o.instance_variable_defined?("@abc"[0,2])290 end291 292 assert('Kernel#instance_variables', '15.3.1.3.23') do293 o = Object.new294 o.instance_eval do295 @a = 11296 @b = 12297 end298 ivars = o.instance_variables299 300 assert_equal Array, ivars.class,301 assert_equal(2, ivars.size)302 assert_true ivars.include?(:@a)303 assert_true ivars.include?(:@b)304 291 end 305 292 … … 335 322 end 336 323 337 # Not implemented yet338 #assert('Kernel#local_variables', '15.3.1.3.28') do339 # local_variables.class == Array340 #end341 342 324 assert('Kernel#loop', '15.3.1.3.29') do 343 325 i = 0 … … 360 342 assert_equal 'A call to no_method_named_this', mm_test.no_method_named_this 361 343 344 class SuperMMTestClass < MMTestClass 345 def no_super_method_named_this 346 super 347 end 348 end 349 super_mm_test = SuperMMTestClass.new 350 assert_equal 'A call to no_super_method_named_this', super_mm_test.no_super_method_named_this 351 352 class NoSuperMethodTestClass 353 def no_super_method_named_this 354 super 355 end 356 end 357 no_super_test = NoSuperMethodTestClass.new 358 msg = "undefined method 'no_super_method_named_this'" 359 assert_raise_with_message(NoMethodError, msg) do 360 no_super_test.no_super_method_named_this 361 end 362 362 363 a = String.new 363 begin 364 msg = "undefined method 'no_method_named_this'" 365 assert_raise_with_message(NoMethodError, msg) do 364 366 a.no_method_named_this 365 rescue NoMethodError => e 366 assert_equal "undefined method 'no_method_named_this' for \"\"", e.message 367 end 368 369 class ShortInspectClass 370 def inspect 371 'An inspect string' 372 end 373 end 374 b = ShortInspectClass.new 375 begin 376 b.no_method_named_this 377 rescue NoMethodError => e 378 assert_equal "undefined method 'no_method_named_this' for An inspect string", e.message 379 end 380 381 class LongInspectClass 382 def inspect 383 "A" * 70 384 end 385 end 386 c = LongInspectClass.new 387 begin 388 c.no_method_named_this 389 rescue NoMethodError => e 390 assert_equal "undefined method 'no_method_named_this' for #{c.to_s}", e.message 391 end 392 393 class NoInspectClass 394 undef inspect 395 end 396 d = NoInspectClass.new 397 begin 398 d.no_method_named_this 399 rescue NoMethodError => e 400 assert_equal "undefined method 'no_method_named_this' for #{d.to_s}", e.message 401 end 402 end 403 404 assert('Kernel#methods', '15.3.1.3.31') do 405 assert_equal Array, methods.class 367 end 406 368 end 407 369 … … 429 391 # Kernel#print is defined in mruby-print mrbgem. '15.3.1.3.35' 430 392 431 assert('Kernel#private_methods', '15.3.1.3.36') do432 assert_equal Array, private_methods.class433 end434 435 assert('Kernel#protected_methods', '15.3.1.3.37') do436 assert_equal Array, protected_methods.class437 end438 439 assert('Kernel#public_methods', '15.3.1.3.38') do440 assert_equal Array, public_methods.class441 class Foo442 def foo443 end444 end445 assert_equal [:foo], Foo.new.public_methods(false)446 end447 448 393 # Kernel#puts is defined in mruby-print mrbgem. '15.3.1.3.39' 449 394 … … 471 416 tri = Test4RemoveInstanceVar.new 472 417 assert_equal 99, tri.var 473 tri.remove418 assert_equal 99, tri.remove 474 419 assert_equal nil, tri.var 475 assert_raise NameError do 476 tri.remove 477 end 420 assert_raise(NameError) { tri.remove } 421 assert_raise(NameError) { tri.remove_instance_variable(:var) } 422 assert_raise(FrozenError) { tri.freeze.remove } 423 assert_raise(FrozenError, NameError) { :a.remove_instance_variable(:@v) } 478 424 end 479 425 … … 506 452 end 507 453 508 assert('Kernel#send', '15.3.1.3.44') do509 # test with block510 l = send(:lambda) do511 true512 end513 514 assert_true l.call515 assert_equal l.class, Proc516 # test with argument517 assert_true send(:respond_to?, :nil?)518 # test without argument and without block519 assert_equal send(:public_methods).class, Array520 end521 522 assert('Kernel#singleton_methods', '15.3.1.3.45') do523 assert_equal singleton_methods.class, Array524 end525 526 454 assert('Kernel#to_s', '15.3.1.3.46') do 527 455 assert_equal to_s.class, String 528 end529 530 assert('Kernel#to_s on primitives') do531 begin532 Fixnum.alias_method :to_s_, :to_s533 Fixnum.remove_method :to_s534 535 assert_nothing_raised do536 # segfaults if mrb_cptr is used537 1.to_s538 end539 ensure540 Fixnum.alias_method :to_s, :to_s_541 Fixnum.remove_method :to_s_542 end543 end544 545 assert('Kernel.local_variables', '15.3.1.2.7') do546 a, b = 0, 1547 a += b548 549 vars = Kernel.local_variables.sort550 assert_equal [:a, :b, :vars], vars551 552 assert_equal [:a, :b, :c, :vars], Proc.new { |a, b|553 c = 2554 Kernel.local_variables.sort555 }.call(-1, -2)556 456 end 557 457 … … 598 498 end 599 499 600 assert('Kernel#global_variables') do601 variables = global_variables602 1.upto(9) do |i|603 assert_equal variables.include?(:"$#{i}"), true604 end605 end606 607 assert('Kernel#define_singleton_method') do608 o = Object.new609 ret = o.define_singleton_method(:test_method) do610 :singleton_method_ok611 end612 assert_equal :test_method, ret613 assert_equal :singleton_method_ok, o.test_method614 end615 616 500 assert('stack extend') do 617 501 def recurse(count, stop)
Note:
See TracChangeset
for help on using the changeset viewer.