summaryrefslogtreecommitdiff
path: root/tests/tests.js
diff options
context:
space:
mode:
authorBenoit Giannangeli <giann008@gmail.com>2017-02-11 22:22:38 +0100
committerBenoit Giannangeli <giann008@gmail.com>2017-02-12 17:00:20 +0100
commit4bf190d1b51c8c2d3f5ab0b6355ecd971b735adc (patch)
tree2d3bb5d29f60d12db379933273d654683c539cf4 /tests/tests.js
parent3c5cf1687c2da09f56ca1de340e5ada2119efca9 (diff)
downloadfengari-4bf190d1b51c8c2d3f5ab0b6355ecd971b735adc.tar.gz
fengari-4bf190d1b51c8c2d3f5ab0b6355ecd971b735adc.tar.bz2
fengari-4bf190d1b51c8c2d3f5ab0b6355ecd971b735adc.zip
TFORCALL, TFORLOOP, luaD_call, tag methods
Diffstat (limited to 'tests/tests.js')
-rw-r--r--tests/tests.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/tests.js b/tests/tests.js
new file mode 100644
index 0000000..97ca6b4
--- /dev/null
+++ b/tests/tests.js
@@ -0,0 +1,45 @@
+/*jshint esversion: 6 */
+"use strict";
+
+const fs = require('fs');
+const child_process = require('child_process');
+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 VM = require("../src/lvm.js");
+
+const toByteCode = function (luaCode) {
+ var luaFile = tmp.fileSync(),
+ bclist;
+
+ fs.writeSync(luaFile.fd, luaCode);
+
+ child_process.execSync(`luac-5.3 -o ${luaFile.name}.bc ${luaFile.name}`);
+ child_process.execSync(`luac-5.3 -l ${luaFile.name} > ${luaFile.name}.bc.txt`);
+
+ bclist = fs.readFileSync(`${luaFile.name}.bc.txt`, 'utf8');
+
+ console.log(bclist);
+
+ return {
+ dataView: new DataView(fs.readFileSync(`${luaFile.name}.bc`)),
+ bclist: bclist
+ };
+};
+
+const getState = function (luaCode) {
+ var bc = toByteCode(luaCode),
+ dv = bc.dataView,
+ bcl = bc.bclist;
+
+ let p = new BytecodeParser(dv);
+ let cl = p.luaU_undump();
+
+ return new lua_State(cl);
+};
+
+module.exports = {
+ getState: getState
+} \ No newline at end of file