Skip to content

Commit 6345f5a

Browse files
committed
Moved tuple return tests from translation to functional tests
1 parent 64cbbe8 commit 6345f5a

File tree

10 files changed

+119
-34
lines changed

10 files changed

+119
-34
lines changed

src/Transpiler.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,8 @@ export abstract class LuaTranspiler {
727727
return this.transpileExpression((node as ts.AsExpression).expression);
728728
case ts.SyntaxKind.TypeOfExpression:
729729
return this.transpileTypeOfExpression(node as ts.TypeOfExpression);
730+
case ts.SyntaxKind.EmptyStatement:
731+
return "";
730732
default:
731733
throw new TranspileError(
732734
"Unsupported expression kind: " + tsHelper.enumName(node.kind, ts.SyntaxKind),

test/translation/lua/tupleArrayUses.lua

Lines changed: 0 additions & 11 deletions
This file was deleted.

test/translation/lua/tupleReturnAssignment.lua

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/translation/lua/tupleReturnDefinition.lua

Lines changed: 0 additions & 3 deletions
This file was deleted.

test/translation/lua/tupleReturnIndex.lua

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/translation/ts/tupleArrayUses.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

test/translation/ts/tupleReturnAssignment.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

test/translation/ts/tupleReturnDefinition.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

test/translation/ts/tupleReturnIndex.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

test/unit/tuples.spec.ts

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import { Expect, Test, TestCase } from "alsatian";
2+
import * as util from "../src/util";
3+
4+
export class TupleTests {
5+
@Test("Tuple loop")
6+
public tupleLoop() {
7+
// Transpile
8+
const lua = util.transpileString(
9+
`const tuple: [number, number, number] = [3,5,1];
10+
let count = 0;
11+
for (const value of tuple) { count += value; }
12+
return count;`
13+
);
14+
15+
// Execute
16+
const result = util.executeLua(lua);
17+
18+
// Assert
19+
Expect(result).toBe(9);
20+
}
21+
22+
@Test("Tuple foreach")
23+
public tupleForEach() {
24+
// Transpile
25+
const lua = util.transpileString(
26+
`const tuple: [number, number, number] = [3,5,1];
27+
let count = 0;
28+
tuple.forEach(v => count += v);
29+
return count;`
30+
);
31+
32+
// Execute
33+
const result = util.executeLua(lua);
34+
35+
// Assert
36+
Expect(result).toBe(9);
37+
}
38+
39+
@Test("Tuple access")
40+
public tupleAccess() {
41+
// Transpile
42+
const lua = util.transpileString(
43+
`const tuple: [number, number, number] = [3,5,1];
44+
return tuple[1];`
45+
);
46+
47+
// Execute
48+
const result = util.executeLua(lua);
49+
50+
// Assert
51+
Expect(result).toBe(5);
52+
}
53+
54+
@Test("Tuple Destruct")
55+
public tupleDestruct() {
56+
// Transpile
57+
const lua = util.transpileString(
58+
`function tuple(): [number, number, number] { return [3,5,1]; }\n
59+
const [a,b,c] = tuple();
60+
return b;`
61+
);
62+
63+
// Execute
64+
const result = util.executeLua(lua);
65+
66+
// Assert
67+
Expect(result).toBe(5);
68+
}
69+
70+
@Test("Tuple length")
71+
public tupleLength() {
72+
// Transpile
73+
const lua = util.transpileString(
74+
`const tuple: [number, number, number] = [3,5,1];
75+
return tuple.length;`
76+
);
77+
78+
// Execute
79+
const result = util.executeLua(lua);
80+
81+
// Assert
82+
Expect(result).toBe(3);
83+
}
84+
85+
@Test("Tuple Return Access")
86+
public tupleReturnAccess() {
87+
// Transpile
88+
const lua = util.transpileString(
89+
`/** !TupleReturn */\n
90+
function tuple(): [number, number, number] { return [3,5,1]; }\n
91+
return tuple()[2];`
92+
);
93+
94+
// Execute
95+
const result = util.executeLua(lua);
96+
97+
// Assert
98+
Expect(result).toBe(1);
99+
}
100+
101+
@Test("Tuple Return Destruct")
102+
public tupleReturnDestruct() {
103+
// Transpile
104+
const lua = util.transpileString(
105+
`/** !TupleReturn */\n
106+
function tuple(): [number, number, number] { return [3,5,1]; }\n
107+
const [a,b,c] = tuple();
108+
return b;`
109+
);
110+
111+
// Execute
112+
const result = util.executeLua(lua);
113+
114+
// Assert
115+
Expect(result).toBe(5);
116+
}
117+
}

0 commit comments

Comments
 (0)