Ignore:
Timestamp:
Jul 9, 2020, 8:51:43 AM (4 years ago)
Author:
coas-nagasima
Message:

mrubyを2.1.1に更新

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  
    404404    assert_equal ['test', 'test dynamic `', 'test', 'test dynamic `'], results
    405405
     406    results = []
     407    assert_equal 'test sym test sym test', `test #{:sym} test #{:sym} test`
     408
    406409    alias_method sym, :old_cmd
    407410  end
     
    421424
    422425assert('method definition in cmdarg') do
    423   if false
     426  result = class MethodDefinitionInCmdarg
     427    def self.bar(arg); arg end
    424428    bar def foo; self.each do end end
    425429  end
    426   true
     430  assert_equal(:foo, result)
    427431end
    428432
     
    448452end
    449453
     454assert('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){})
     464end
     465
    450466assert('multiline comments work correctly') do
    451467=begin
    452468this is a comment with nothing after begin and end
    453469=end
    454 =begin  this is a comment 
     470=begin  this is a comment
    455471this is a comment with extra after =begin
    456472=end
    457473=begin
    458474this is a comment that has =end with spaces after it
    459 =end 
     475=end
    460476=begin this is a comment
    461477this is a comment that has extra after =begin and =end with spaces after it
    462 =end 
     478=end
    463479  line = __LINE__
    464480=begin  this is a comment
     
    467483  assert_equal(line + 4, __LINE__)
    468484end
     485
     486assert '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))
     673end
     674
     675assert('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]))
     678end
     679
     680assert('_0 is not numbered parameter') do
     681  _0 = :l
     682  assert_equal(:l, ->{_0}.call)
     683end
Note: See TracChangeset for help on using the changeset viewer.