github.com/erikdubbelboer/gopher-lua@v0.0.0-20160512044044-e68f0dc85040/_glua-tests/issues.lua (about)

     1  
     2  -- issue #10
     3  local function inspect(options)
     4      options = options or {}
     5      return type(options)
     6  end
     7  assert(inspect(nil) == "table")
     8  
     9  local function inspect(options)
    10      options = options or setmetatable({}, {__mode = "test"})
    11      return type(options)
    12  end
    13  assert(inspect(nil) == "table")
    14  
    15  -- issue #16
    16  local ok, msg = pcall(function()
    17    local a = {}
    18    a[nil] = 1
    19  end)
    20  assert(not ok and string.find(msg, "table index is nil", 1, true))
    21  
    22  -- issue #19
    23  local tbl = {1,2,3,4,5}
    24  assert(#tbl == 5)
    25  assert(table.remove(tbl) == 5)
    26  assert(#tbl == 4)
    27  assert(table.remove(tbl, 3) == 3)
    28  assert(#tbl == 3)
    29  
    30  -- issue #24
    31  local tbl = {string.find('hello.world', '.', 0)}
    32  assert(tbl[1] == 1 and tbl[2] == 1)
    33  assert(string.sub('hello.world', 0, 2) == "he")
    34  
    35  -- issue 33
    36  local a,b
    37  a = function ()
    38    pcall(function()
    39    end)
    40    coroutine.yield("a")
    41    return b()
    42  end
    43  
    44  b = function ()
    45    return "b"
    46  end
    47  
    48  local co = coroutine.create(a)
    49  assert(select(2, coroutine.resume(co)) == "a")
    50  assert(select(2, coroutine.resume(co)) == "b")
    51  assert(coroutine.status(co) == "dead")
    52  
    53  -- issue 37
    54  function test(a, b, c)
    55      b = b or string.format("b%s", a)
    56      c = c or string.format("c%s", a)
    57      assert(a == "test")
    58      assert(b == "btest")
    59      assert(c == "ctest")
    60  end
    61  test("test")
    62  
    63  -- issue 39
    64  assert(string.match("あいうえお", ".*あ.*") == "あいうえお")
    65  assert(string.match("あいうえお", "あいうえお") == "あいうえお")
    66  
    67  -- issue 47
    68  assert(string.gsub("A\nA", ".", "A") == "AAA")
    69  
    70  -- issue 62
    71  local function level4() error("error!") end
    72  local function level3() level4() end
    73  local function level2() level3() end
    74  local function level1() level2() end
    75  local ok, result = xpcall(level1, function(err)
    76    return debug.traceback("msg", 10)
    77  end)
    78  assert(result == [[msg
    79  stack traceback:]])
    80  ok, result = xpcall(level1, function(err)
    81    return debug.traceback("msg", 9)
    82  end)
    83  assert(result == string.gsub([[msg
    84  stack traceback:
    85  @TAB@[G]: ?]], "@TAB@", "\t"))
    86  local ok, result = xpcall(level1, function(err)
    87    return debug.traceback("msg", 0)
    88  end)
    89  
    90  assert(result == string.gsub([[msg
    91  stack traceback:
    92  @TAB@[G]: in function 'traceback'
    93  @TAB@issues.lua:87: in function <issues.lua:86>
    94  @TAB@[G]: in function 'error'
    95  @TAB@issues.lua:71: in function 'level4'
    96  @TAB@issues.lua:72: in function 'level3'
    97  @TAB@issues.lua:73: in function 'level2'
    98  @TAB@issues.lua:74: in function <issues.lua:74>
    99  @TAB@[G]: in function 'xpcall'
   100  @TAB@issues.lua:86: in main chunk
   101  @TAB@[G]: ?]], "@TAB@", "\t"))
   102  
   103  local ok, result = xpcall(level1, function(err)
   104    return debug.traceback("msg", 3)
   105  end)
   106  
   107  assert(result == string.gsub([[msg
   108  stack traceback:
   109  @TAB@issues.lua:71: in function 'level4'
   110  @TAB@issues.lua:72: in function 'level3'
   111  @TAB@issues.lua:73: in function 'level2'
   112  @TAB@issues.lua:74: in function <issues.lua:74>
   113  @TAB@[G]: in function 'xpcall'
   114  @TAB@issues.lua:103: in main chunk
   115  @TAB@[G]: ?]], "@TAB@", "\t"))
   116