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