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 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 96 insertions(+), 96 deletions(-) (limited to 'tests/ltm.js') 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); -- cgit v1.2.3-54-g00ecf