Skip to content

Commit fe10361

Browse files
committed
Added Json lib for lua <-> js communication
1 parent 3c03b59 commit fe10361

5 files changed

Lines changed: 423 additions & 59 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
*.js
22
node_modules/
33
*.lua
4+
!json.lua
45
!dist/*.js
56
!dist/lualib/*.lua
67

test/integration/lua/loops.spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ export class LuaLoopTests {
1010
public for<T>(inp: T[], expected: T[]) {
1111
// Transpile
1212
let lua = util.transpileString(
13-
`let arrTest = [${inp.toString()}];
13+
`let arrTest = ${JSON.stringify(inp)};
1414
for (let i = 0; i < arrTest.length; ++i) {
1515
arrTest[i] = arrTest[i] + 1;
1616
}
17-
return ArrayToString(arrTest);`
17+
return JSONStringify(arrTest);`
1818
, util.dummyTypes.Array
1919
);
2020

2121
// Execute
2222
let result = util.executeLua(lua);
2323

2424
// Assert
25-
Expect(result).toBe(expected.toString());
25+
Expect(result).toBe(JSON.stringify(expected));
2626
}
2727

2828
@TestCase({ ['test1']: 0, ['test2']: 1, ['test3']: 2 }, { ['test1']: 1, ['test2']: 2, ['test3']: 3 })
@@ -51,7 +51,7 @@ export class LuaLoopTests {
5151
// Transpile & Assert
5252
Expect(() => {
5353
let lua = util.transpileString(
54-
`let arrTest = [${inp.toString()}];
54+
`let arrTest = ${JSON.stringify(inp)};
5555
for (let key in arrTest) {
5656
arrTest[key]++;
5757
}`
@@ -65,19 +65,19 @@ export class LuaLoopTests {
6565
public forof<T>(inp: any, expected: any) {
6666
// Transpile
6767
let lua = util.transpileString(
68-
`let objTest = [${inp.toString()}];
68+
`let objTest = ${JSON.stringify(inp)};
6969
let arrResultTest = {};
7070
for (let value of objTest) {
7171
arrResultTest.push(value + 1)
7272
}
73-
return ArrayToString(arrResultTest);`
73+
return JSONStringify(arrResultTest);`
7474
, util.dummyTypes.Array
7575
);
7676

7777
// Execute
7878
let result = util.executeLua(lua);
7979

8080
// Assert
81-
Expect(result).toBe(expected.toString());
81+
Expect(result).toBe(JSON.stringify(expected));
8282
}
8383
}

test/integration/lua/lualib.spec.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ export class LuaLibArrayTests {
1212
@Test("array.map")
1313
public map<T>(inp: T[], func: string) {
1414
// Transpile
15-
let lua = util.transpileString(`return ArrayToString([${inp.toString()}].map(${func}))`, util.dummyTypes.Array);
15+
let lua = util.transpileString(`return JSONStringify([${inp.toString()}].map(${func}))`, util.dummyTypes.Array);
1616

1717
// Execute
1818
let result = util.executeLua(lua);
1919

2020
// Assert
21-
Expect(result).toBe(inp.map(eval(func)).toString());
21+
Expect(result).toBe(JSON.stringify(inp.map(eval(func))));
2222
}
2323

2424
@TestCase([], "x => x > 1")
@@ -31,13 +31,13 @@ export class LuaLibArrayTests {
3131
@Test("array.filter")
3232
public filter<T>(inp: T[], func: string) {
3333
// Transpile
34-
let lua = util.transpileString(`return ArrayToString([${inp.toString()}].filter(${func}))`, util.dummyTypes.Array);
34+
let lua = util.transpileString(`return JSONStringify([${inp.toString()}].filter(${func}))`, util.dummyTypes.Array);
3535

3636
// Execute
3737
let result = util.executeLua(lua);
3838

3939
// Assert
40-
Expect(result).toBe(inp.filter(eval(func)).toString());
40+
Expect(result).toBe(JSON.stringify(inp.filter(eval(func))));
4141
}
4242

4343
@TestCase([], "x => x > 1")
@@ -53,7 +53,7 @@ export class LuaLibArrayTests {
5353
let result = util.executeLua(lua);
5454

5555
// Assert
56-
Expect(result.toString()).toBe(inp.every(eval(func)).toString());
56+
Expect(JSON.stringify(result)).toBe(JSON.stringify(inp.every(eval(func))));
5757
}
5858

5959
@TestCase([], "x => x > 1")
@@ -69,7 +69,7 @@ export class LuaLibArrayTests {
6969
let result = util.executeLua(lua);
7070

7171
// Assert
72-
Expect(result.toString()).toBe(inp.some(eval(func)).toString());
72+
Expect(JSON.stringify(result)).toBe(JSON.stringify(inp.some(eval(func))));
7373
}
7474

7575
@TestCase([], 1, 2)
@@ -82,13 +82,13 @@ export class LuaLibArrayTests {
8282
@Test("array.slice")
8383
public slice<T>(inp: T[], start: number, end?: number) {
8484
// Transpile
85-
let lua = util.transpileString(`return ArrayToString([${inp.toString()}].slice(${start}, ${end}))`, util.dummyTypes.Array);
85+
let lua = util.transpileString(`return JSONStringify([${inp.toString()}].slice(${start}, ${end}))`, util.dummyTypes.Array);
8686

8787
// Execute
8888
let result = util.executeLua(lua);
8989

9090
// Assert
91-
Expect(result).toBe(inp.slice(start, end).toString());
91+
Expect(result).toBe(JSON.stringify(inp.slice(start, end)));
9292
}
9393

9494
@TestCase([], 0, 0, 9, 10, 11)
@@ -104,7 +104,7 @@ export class LuaLibArrayTests {
104104
let lua = util.transpileString(
105105
`let spliceTestTable = [${inp.toString()}];
106106
spliceTestTable.splice(${start}, ${deleteCount}, ${newElements});
107-
return ArrayToString(spliceTestTable);`,
107+
return JSONStringify(spliceTestTable);`,
108108
util.dummyTypes.Array
109109
);
110110

@@ -113,7 +113,7 @@ export class LuaLibArrayTests {
113113

114114
// Assert
115115
inp.splice(start, deleteCount, ...newElements)
116-
Expect(result).toBe(inp.toString());
116+
Expect(result).toBe(JSON.stringify(inp));
117117
}
118118

119119
@TestCase([], 1, 1)
@@ -126,16 +126,16 @@ export class LuaLibArrayTests {
126126
@Test("array.splice[Remove]")
127127
public spliceRemove<T>(inp: T[], start: number, deleteCount?: number, ...newElements: any[]) {
128128
// Transpile
129-
let lua = util.transpileString(`return ArrayToString([${inp.toString()}].splice(${start}, ${deleteCount}, ${newElements}))`, util.dummyTypes.Array);
129+
let lua = util.transpileString(`return JSONStringify([${inp.toString()}].splice(${start}, ${deleteCount}, ${newElements}))`, util.dummyTypes.Array);
130130

131131
// Execute
132132
let result = util.executeLua(lua);
133133

134134
// Assert
135135
if (deleteCount) {
136-
Expect(result).toBe(inp.splice(start, deleteCount, ...newElements).toString());
136+
Expect(result).toBe(JSON.stringify(inp.splice(start, deleteCount, ...newElements)));
137137
} else {
138-
Expect(result).toBe(inp.splice(start).toString());
138+
Expect(result).toBe(JSON.stringify(inp.splice(start)));
139139
}
140140
}
141141
}

0 commit comments

Comments
 (0)