Changeset 439 for EcnlProtoTool/trunk/mruby-2.1.1/test/t/syntax.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/syntax.rb
r331 r439 404 404 assert_equal ['test', 'test dynamic `', 'test', 'test dynamic `'], results 405 405 406 results = [] 407 assert_equal 'test sym test sym test', `test #{:sym} test #{:sym} test` 408 406 409 alias_method sym, :old_cmd 407 410 end … … 421 424 422 425 assert('method definition in cmdarg') do 423 if false 426 result = class MethodDefinitionInCmdarg 427 def self.bar(arg); arg end 424 428 bar def foo; self.each do end end 425 429 end 426 true430 assert_equal(:foo, result) 427 431 end 428 432 … … 448 452 end 449 453 454 assert('local variable definition in default value and subsequent arguments') do 455 def m(a = b = 1, c) [a, b, c] end 456 assert_equal([1, 1, :c], m(:c)) 457 assert_equal([:a, nil, :c], m(:a, :c)) 458 459 def m(a = b = 1, &c) [a, b, c ? true : nil] end 460 assert_equal([1, 1, nil], m) 461 assert_equal([1, 1, true], m{}) 462 assert_equal([:a, nil, nil], m(:a)) 463 assert_equal([:a, nil, true], m(:a){}) 464 end 465 450 466 assert('multiline comments work correctly') do 451 467 =begin 452 468 this is a comment with nothing after begin and end 453 469 =end 454 =begin this is a comment 470 =begin this is a comment 455 471 this is a comment with extra after =begin 456 472 =end 457 473 =begin 458 474 this is a comment that has =end with spaces after it 459 =end 475 =end 460 476 =begin this is a comment 461 477 this is a comment that has extra after =begin and =end with spaces after it 462 =end 478 =end 463 479 line = __LINE__ 464 480 =begin this is a comment … … 467 483 assert_equal(line + 4, __LINE__) 468 484 end 485 486 assert 'keyword arguments' do 487 def m(a, b:1) [a, b] end 488 assert_equal [1, 1], m(1) 489 assert_equal [1, 2], m(1, b: 2) 490 491 def m(a, b:) [a, b] end 492 assert_equal [1, 2], m(1, b: 2) 493 assert_raise(ArgumentError) { m b: 1 } 494 assert_raise(ArgumentError) { m 1 } 495 496 def m(a:) a end 497 assert_equal 1, m(a: 1) 498 assert_raise(ArgumentError) { m } 499 assert_raise(ArgumentError) { m 'a' => 1, a: 1 } 500 h = { a: 1 } 501 assert_equal 1, m(h) 502 assert_equal({ a: 1 }, h) 503 504 def m(a: 1) a end 505 assert_equal 1, m 506 assert_equal 2, m(a: 2) 507 assert_raise(ArgumentError) { m 1 } 508 509 def m(**) end 510 assert_nil m 511 assert_nil m a: 1, b: 2 512 assert_raise(ArgumentError) { m 2 } 513 514 def m(a, **) a end 515 assert_equal 1, m(1) 516 assert_equal 1, m(1, a: 2, b: 3) 517 assert_equal({ 'a' => 1, b: 2 }, m('a' => 1, b: 2)) 518 519 def m(a, **k) [a, k] end 520 assert_equal [1, {}], m(1) 521 assert_equal [1, {a: 2, b: 3}], m(1, a: 2, b: 3) 522 assert_equal [{'a' => 1, b: 2}, {}], m('a' => 1, b: 2) 523 524 def m(a=1, **) a end 525 assert_equal 1, m 526 assert_equal 2, m(2, a: 1, b: 0) 527 assert_raise(ArgumentError) { m('a' => 1, a: 2) } 528 529 def m(a=1, **k) [a, k] end 530 assert_equal [1, {}], m 531 assert_equal [1, {a: 1}], m(a: 1) 532 assert_equal [2, {a: 1, b: 2}], m(2, a: 1, b: 2) 533 assert_equal [{a: 1}, {b: 2}], m({a: 1}, {b: 2}) 534 535 def m(*, a:) a end 536 assert_equal 1, m(a: 1) 537 assert_equal 3, m(1, 2, a: 3) 538 assert_raise(ArgumentError) { m('a' => 1, a: 2) } 539 540 def m(*a, b:) [a, b] end 541 assert_equal [[], 1], m(b: 1) 542 assert_equal [[1, 2], 3], m(1, 2, b: 3) 543 assert_raise(ArgumentError) { m('a' => 1, b: 2) } 544 545 def m(*a, b: 1) [a, b] end 546 assert_equal [[], 1], m 547 assert_equal [[1, 2, 3], 4], m(1, 2, 3, b: 4) 548 assert_raise(ArgumentError) { m('a' => 1, b: 2) } 549 550 def m(*, **) end 551 assert_nil m() 552 assert_nil m(a: 1, b: 2) 553 assert_nil m(1, 2, 3, a: 4, b: 5) 554 555 def m(*a, **) a end 556 assert_equal [], m() 557 assert_equal [1, 2, 3], m(1, 2, 3, a: 4, b: 5) 558 assert_raise(ArgumentError) { m("a" => 1, a: 1) } 559 assert_equal [1], m(1, **{a: 2}) 560 561 def m(*, **k) k end 562 assert_equal({}, m()) 563 assert_equal({a: 4, b: 5}, m(1, 2, 3, a: 4, b: 5)) 564 assert_raise(ArgumentError) { m("a" => 1, a: 1) } 565 566 def m(a = nil, b = nil, **k) [a, k] end 567 assert_equal [nil, {}], m() 568 assert_equal([nil, {a: 1}], m(a: 1)) 569 assert_raise(ArgumentError) { m("a" => 1, a: 1) } 570 assert_equal([{"a" => 1}, {a: 1}], m({ "a" => 1 }, a: 1)) 571 assert_equal([{a: 1}, {}], m({a: 1}, {})) 572 assert_equal([nil, {}], m({})) 573 574 def m(*a, **k) [a, k] end 575 assert_equal([[], {}], m()) 576 assert_equal([[1], {}], m(1)) 577 assert_equal([[], {a: 1, b: 2}], m(a: 1, b: 2)) 578 assert_equal([[1, 2, 3], {a: 2}], m(1, 2, 3, a: 2)) 579 assert_raise(ArgumentError) { m("a" => 1, a: 1) } 580 assert_raise(ArgumentError) { m("a" => 1) } 581 assert_equal([[], {a: 1}], m(a: 1)) 582 assert_raise(ArgumentError) { m("a" => 1, a: 1) } 583 assert_equal([[{"a" => 1}], {a: 1}], m({ "a" => 1 }, a: 1)) 584 assert_equal([[{a: 1}], {}], m({a: 1}, {})) 585 assert_raise(ArgumentError) { m({a: 1}, {"a" => 1}) } 586 587 def m(a:, b:) [a, b] end 588 assert_equal([1, 2], m(a: 1, b: 2)) 589 assert_raise(ArgumentError) { m("a" => 1, a: 1, b: 2) } 590 591 def m(a:, b: 1) [a, b] end 592 assert_equal([1, 1], m(a: 1)) 593 assert_equal([1, 2], m(a: 1, b: 2)) 594 assert_raise(ArgumentError) { m("a" => 1, a: 1, b: 2) } 595 596 def m(a:, **) a end 597 assert_equal(1, m(a: 1)) 598 assert_equal(1, m(a: 1, b: 2)) 599 assert_raise(ArgumentError) { m("a" => 1, a: 1, b: 2) } 600 601 def m(a:, **k) [a, k] end 602 assert_equal([1, {}], m(a: 1)) 603 assert_equal([1, {b: 2, c: 3}], m(a: 1, b: 2, c: 3)) 604 assert_raise(ArgumentError) { m("a" => 1, a: 1, b: 2) } 605 606 =begin 607 def m(a:, &b) [a, b] end 608 assert_equal([1, nil], m(a: 1)) 609 assert_equal([1, l], m(a: 1, &(l = ->{}))) 610 =end 611 612 def m(a: 1, b:) [a, b] end 613 assert_equal([1, 0], m(b: 0)) 614 assert_equal([3, 2], m(b: 2, a: 3)) 615 assert_raise(ArgumentError) { m a: 1 } 616 617 def m(a: def m(a: 1) a end, b:) 618 [a, b] 619 end 620 assert_equal([2, 3], m(a: 2, b: 3)) 621 assert_equal([:m, 1], m(b: 1)) 622 # Note the default value of a: in the original method. 623 assert_equal(1, m()) 624 625 def m(a: 1, b: 2) [a, b] end 626 assert_equal([1, 2], m()) 627 assert_equal([4, 3], m(b: 3, a: 4)) 628 629 def m(a: 1, **) a end 630 assert_equal(1, m()) 631 assert_equal(2, m(a: 2, b: 1)) 632 633 def m(a: 1, **k) [a, k] end 634 assert_equal([1, {b: 2, c: 3}], m(b: 2, c: 3)) 635 636 def m(a:, **) yield end 637 assert_raise(ArgumentError) { m { :blk } } 638 assert_equal :blk, m(a: 1){ :blk } 639 640 def m(a:, **k, &b) [b.call, k] end 641 assert_raise(ArgumentError) { m { :blk } } 642 assert_equal [:blk, {b: 2}], m(a: 1, b: 2){ :blk } 643 644 def m(**k, &b) [k, b] end 645 assert_equal([{ a: 1, b: 2}, nil], m(a: 1, b: 2)) 646 assert_equal :blk, m{ :blk }[1].call 647 648 def m(hsh = {}) hsh end 649 assert_equal({ a: 1, b: 2 }, m(a: 1, b: 2)) 650 assert_equal({ a: 1, 'b' => 2 }, m(a: 1, 'b' => 2)) 651 652 def m(hsh) hsh end 653 assert_equal({ a: 1, b: 2 }, m(a: 1, b: 2)) 654 assert_equal({ a: 1, 'b' => 2 }, m(a: 1, 'b' => 2)) 655 656 =begin 657 def m(a, b=1, *c, (*d, (e)), f: 2, g:, h:, **k, &l) 658 [a, b, c, d, e, f, g, h, k, l] 659 end 660 result = m(9, 8, 7, 6, f: 5, g: 4, h: 3, &(l = ->{})) 661 assert_equal([9, 8, [7], [], 6, 5, 4, 3, {}, l], result) 662 663 def m a, b=1, *c, d, e:, f: 2, g:, **k, &l 664 [a, b, c, d, e, f, g, k, l] 665 end 666 result = m(1, 2, e: 3, g: 4, h: 5, i: 6, &(l = ->{})) 667 assert_equal([1, 1, [], 2, 3, 2, 4, { h: 5, i: 6 }, l], result) 668 =end 669 670 def m(a: b = 1, c:) [a, b, c] end 671 assert_equal([1, 1, :c], m(c: :c)) 672 assert_equal([:a, nil, :c], m(a: :a, c: :c)) 673 end 674 675 assert('numbered parameters') do 676 assert_equal(15, [1,2,3,4,5].reduce {_1+_2}) 677 assert_equal(45, Proc.new do _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 end.call(*[1, 2, 3, 4, 5, 6, 7, 8, 9])) 678 end 679 680 assert('_0 is not numbered parameter') do 681 _0 = :l 682 assert_equal(:l, ->{_0}.call) 683 end
Note:
See TracChangeset
for help on using the changeset viewer.