From 50aa5b5029165be03d0cfb34e7d664795dd80898 Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Fri, 17 Feb 2017 09:27:51 +0100 Subject: More accurate state and closure init --- tests/ltm.js | 192 ++++++++++++++++++++++++++++----------------------------- tests/lvm.js | 60 +++++++++--------- tests/tests.js | 8 ++- 3 files changed, 131 insertions(+), 129 deletions(-) (limited to 'tests') diff --git a/tests/ltm.js b/tests/ltm.js index e365a2a..9a3dee5 100644 --- a/tests/ltm.js +++ b/tests/ltm.js @@ -5,7 +5,7 @@ const test = require('tape'); const beautify = require('js-beautify').js_beautify; const VM = require("../src/lvm.js"); -const ldo = require("../src/ldo.js"); +const lapi = require("../src/lapi.js"); const OC = require('../src/lopcodes.js'); const getState = require("./tests.js").getState; @@ -23,7 +23,7 @@ test('__index, __newindex: with actual table', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -55,7 +55,7 @@ test('__index: with non table', function (t) { }, "Bytecode parsed without errors"); t.throws(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed with expected error"); }); @@ -75,7 +75,7 @@ test('__newindex: with non table', function (t) { }, "Bytecode parsed without errors"); t.throws(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed with expected error"); }); @@ -121,16 +121,16 @@ test('__index function in metatable', function (t) { // 3 [4] RETURN 0 1 t.strictEqual( - OC.OpCodes[L.stack[0].p.code[4].opcode], + OC.OpCodes[L.stack[1].p.code[4].opcode], "OP_GETTABLE", "Correct opcode marked as breakpoint" ); t.comment("We set a breakpoint") - L.stack[0].p.code[4].breakpoint = true; + L.stack[1].p.code[4].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); t.strictEqual( @@ -141,20 +141,20 @@ test('__index function in metatable', function (t) { t.comment("We unset the breakpoint and correct pcOff"); L.ci.pcOff--; - L.stack[0].p.code[4].breakpoint = false; + L.stack[1].p.code[4].breakpoint = false; t.ok( - L.stack[2].ttistable() && !L.stack[2].value.hash.get("__index"), - "t is on stack at 2" + L.stack[3].ttistable() && !L.stack[3].value.hash.get("__index"), + "t is on stack at 3" ); t.ok( - L.stack[1].ttistable() && L.stack[1].value.hash.get("__index"), - "mt is on stack at 1" + L.stack[2].ttistable() && L.stack[2].value.hash.get("__index"), + "mt is on stack at 2" ); t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -212,16 +212,16 @@ test('__newindex function in metatable', function (t) { // 3 [4] RETURN 0 1 t.strictEqual( - OC.OpCodes[L.stack[0].p.code[4].opcode], + OC.OpCodes[L.stack[1].p.code[4].opcode], "OP_SETTABLE", "Correct opcode marked as breakpoint" ); t.comment("We set a breakpoint") - L.stack[0].p.code[4].breakpoint = true; + L.stack[1].p.code[4].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); t.strictEqual( @@ -232,20 +232,20 @@ test('__newindex function in metatable', function (t) { t.comment("We unset the breakpoint and correct pcOff"); L.ci.pcOff--; - L.stack[0].p.code[4].breakpoint = false; + L.stack[1].p.code[4].breakpoint = false; t.ok( - L.stack[2].ttistable() && !L.stack[2].value.hash.get("__newindex"), - "t is on stack at 2" + L.stack[3].ttistable() && !L.stack[3].value.hash.get("__newindex"), + "t is on stack at 3" ); t.ok( - L.stack[1].ttistable() && L.stack[1].value.hash.get("__newindex"), - "mt is on stack at 1" + L.stack[2].ttistable() && L.stack[2].value.hash.get("__newindex"), + "mt is on stack at 2" ); t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -297,16 +297,16 @@ test('__index table in metatable', function (t) { // 8 [9] RETURN 0 1 t.strictEqual( - OC.OpCodes[L.stack[0].p.code[5].opcode], + OC.OpCodes[L.stack[1].p.code[5].opcode], "OP_GETTABLE", "Correct opcode marked as breakpoint" ); t.comment("We set a breakpoint") - L.stack[0].p.code[5].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); t.strictEqual( @@ -317,20 +317,20 @@ test('__index table in metatable', function (t) { t.comment("We unset the breakpoint and correct pcOff"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.ok( - L.stack[3].ttistable() && !L.stack[3].value.hash.get("__index"), - "t is on stack at 3" + L.stack[4].ttistable() && !L.stack[4].value.hash.get("__index"), + "t is on stack at 4" ); t.ok( - L.stack[2].ttistable() && L.stack[2].value.hash.get("__index"), - "mt is on stack at 2" + L.stack[3].ttistable() && L.stack[3].value.hash.get("__index"), + "mt is on stack at 3" ); t.comment("We manually set t's metatable to mt"); - L.stack[3].metatable = L.stack[2]; + L.stack[4].metatable = L.stack[3]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -386,16 +386,16 @@ test('__newindex table in metatable', function (t) { // 10 [15] RETURN 0 1 t.strictEqual( - OC.OpCodes[L.stack[0].p.code[5].opcode], + OC.OpCodes[L.stack[1].p.code[5].opcode], "OP_SETTABLE", "Correct opcode marked as breakpoint" ); t.comment("We set a breakpoint") - L.stack[0].p.code[5].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); t.strictEqual( @@ -406,20 +406,20 @@ test('__newindex table in metatable', function (t) { t.comment("We unset the breakpoint and correct pcOff"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.ok( - L.stack[3].ttistable() && !L.stack[3].value.hash.get("__newindex"), - "t is on stack at 3" + L.stack[4].ttistable() && !L.stack[4].value.hash.get("__newindex"), + "t is on stack at 4" ); t.ok( - L.stack[2].ttistable() && L.stack[2].value.hash.get("__newindex"), - "mt is on stack at 2" + L.stack[3].ttistable() && L.stack[3].value.hash.get("__newindex"), + "mt is on stack at 3" ); t.comment("We manually set t's metatable to mt"); - L.stack[3].metatable = L.stack[2]; + L.stack[4].metatable = L.stack[3]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -495,39 +495,39 @@ test('__index table with own metatable', function (t) { // 2 [3] RETURN 2 2 // 3 [4] RETURN 0 1 - L.stack[0].p.code[5].breakpoint = true; - L.stack[0].p.code[7].breakpoint = true; - L.stack[0].p.code[8].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; + L.stack[1].p.code[7].breakpoint = true; + L.stack[1].p.code[8].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.comment("We manually set mmt's metatable to mmmt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); }, "Second part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[7].breakpoint = false; + L.stack[1].p.code[7].breakpoint = false; t.comment("We manually set mt's metatable to mmt"); - L.stack[3].metatable = L.stack[2]; + L.stack[4].metatable = L.stack[3]; t.doesNotThrow(function () { VM.luaV_execute(L); }, "Third part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[8].breakpoint = false; + L.stack[1].p.code[8].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[4].metatable = L.stack[3]; + L.stack[4].metatable = L.stack[4]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -600,39 +600,39 @@ test('__newindex table with own metatable', function (t) { // 1 [5] SETUPVAL 2 0 ; up // 2 [6] RETURN 0 1 - L.stack[0].p.code[5].breakpoint = true; - L.stack[0].p.code[7].breakpoint = true; - L.stack[0].p.code[8].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; + L.stack[1].p.code[7].breakpoint = true; + L.stack[1].p.code[8].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.comment("We manually set mmt's metatable to mmmt"); - L.stack[2].metatable = L.stack[1]; + L.stack[4].metatable = L.stack[3]; t.doesNotThrow(function () { VM.luaV_execute(L); }, "Second part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[7].breakpoint = false; + L.stack[1].p.code[7].breakpoint = false; t.comment("We manually set mt's metatable to mmt"); - L.stack[3].metatable = L.stack[2]; + L.stack[5].metatable = L.stack[4]; t.doesNotThrow(function () { VM.luaV_execute(L); }, "Third part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[8].breakpoint = false; + L.stack[1].p.code[8].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[4].metatable = L.stack[3]; + L.stack[6].metatable = L.stack[5]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -779,17 +779,17 @@ test('binary __xxx functions in metatable', function (t) { // // ... - L.stack[0].p.code[26].breakpoint = true; + L.stack[1].p.code[26].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[26].breakpoint = false; + L.stack[1].p.code[26].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -855,17 +855,17 @@ test('__eq', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[5].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -918,17 +918,17 @@ test('__lt', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[5].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -981,17 +981,17 @@ test('__le', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[5].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -1044,17 +1044,17 @@ test('__le that uses __lt', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[5].breakpoint = true; + L.stack[1].p.code[5].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[5].breakpoint = false; + L.stack[1].p.code[5].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -1110,17 +1110,17 @@ test('__unm, __bnot', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[6].breakpoint = true; + L.stack[1].p.code[6].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[6].breakpoint = false; + L.stack[1].p.code[6].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -1175,17 +1175,17 @@ test('__len', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[4].breakpoint = true; + L.stack[1].p.code[4].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[4].breakpoint = false; + L.stack[1].p.code[4].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -1236,17 +1236,17 @@ test('__concat', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[6].breakpoint = true; + L.stack[1].p.code[6].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[6].breakpoint = false; + L.stack[1].p.code[6].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); @@ -1296,17 +1296,17 @@ test('__call', function (t) { L = getState(luaCode); }, "Bytecode parsed without errors"); - L.stack[0].p.code[7].breakpoint = true; + L.stack[1].p.code[7].breakpoint = true; t.doesNotThrow(function () { - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "First part of the program executed without errors"); L.ci.pcOff--; - L.stack[0].p.code[7].breakpoint = false; + L.stack[1].p.code[7].breakpoint = false; t.comment("We manually set t's metatable to mt"); - L.stack[2].metatable = L.stack[1]; + L.stack[3].metatable = L.stack[2]; t.doesNotThrow(function () { VM.luaV_execute(L); diff --git a/tests/lvm.js b/tests/lvm.js index ac62f20..273002a 100644 --- a/tests/lvm.js +++ b/tests/lvm.js @@ -6,7 +6,7 @@ const beautify = require('js-beautify').js_beautify; const lua_State = require("../src/lstate.js").lua_State; const VM = require("../src/lvm.js"); -const ldo = require("../src/ldo.js"); +const lapi = require("../src/lapi.js"); const Table = require("../src/lobject.js").Table;; const getState = require("./tests.js").getState; @@ -23,7 +23,7 @@ test('LOADK, RETURN', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -47,7 +47,7 @@ test('MOV', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -70,7 +70,7 @@ test('Binary op', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.deepEqual( @@ -94,7 +94,7 @@ test('Unary op, LOADBOOL', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.deepEqual( @@ -117,7 +117,7 @@ test('NEWTABLE', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.ok( @@ -144,7 +144,7 @@ test('CALL', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -176,7 +176,7 @@ test('Multiple return', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.deepEqual( @@ -202,7 +202,7 @@ test('TAILCALL', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -228,7 +228,7 @@ test('VARARG', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.deepEqual( @@ -252,7 +252,7 @@ test('LE, JMP', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -276,7 +276,7 @@ test('LT', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -300,7 +300,7 @@ test('EQ', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -325,7 +325,7 @@ test('TESTSET (and)', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -350,7 +350,7 @@ test('TESTSET (or)', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -379,7 +379,7 @@ test('TEST (true)', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -408,7 +408,7 @@ test('TEST (false)', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -436,7 +436,7 @@ test('FORPREP, FORLOOP (int)', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -463,7 +463,7 @@ test('FORPREP, FORLOOP (float)', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -490,7 +490,7 @@ test('SETTABLE, GETTABLE', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -526,7 +526,7 @@ test('SETUPVAL, GETUPVAL', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -553,7 +553,7 @@ test('SETTABUP, GETTABUP', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -588,7 +588,7 @@ test('SELF', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -612,7 +612,7 @@ test('SETLIST', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.deepEqual( @@ -640,7 +640,7 @@ test('Variable SETLIST', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.deepEqual( @@ -664,7 +664,7 @@ test('Long SETLIST', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.deepEqual( @@ -688,7 +688,7 @@ test('Long SETLIST', function (t) { // // // t.doesNotThrow(function () { // L = getState(luaCode); -// ldo.luaD_call(L, 0, -1); +// lapi.lua_call(L, 0, -1); // // }, "Program executed without errors"); // // t.deepEqual( @@ -728,7 +728,7 @@ test('TFORCALL, TFORLOOP', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -754,7 +754,7 @@ test('LEN', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( @@ -788,7 +788,7 @@ test('CONCAT', function (t) { t.doesNotThrow(function () { L = getState(luaCode); - ldo.luaD_call(L, 0, -1); + lapi.lua_call(L, 0, -1); }, "Program executed without errors"); t.strictEqual( diff --git a/tests/tests.js b/tests/tests.js index 02dac80..5a1b023 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -7,7 +7,7 @@ const tmp = require('tmp'); const DataView = require('buffer-dataview'); const BytecodeParser = require("../src/lundump.js"); -const lua_State = require("../src/lstate.js").lua_State; +const lauxlib = require("../src/lauxlib.js"); const VM = require("../src/lvm.js"); const toByteCode = function (luaCode) { @@ -34,10 +34,12 @@ const getState = function(luaCode) { dv = bc.dataView, bcl = bc.bclist; + let L = lauxlib.luaL_newstate(); + let p = new BytecodeParser(dv); - let cl = p.luaU_undump(); + let cl = p.luaU_undump(L); - return new lua_State(cl); + return L; }; module.exports = { -- cgit v1.2.3-54-g00ecf