forked from TypeScriptToLua/TypeScriptToLua
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathobjectLiteral.spec.ts
More file actions
65 lines (56 loc) · 1.86 KB
/
Copy pathobjectLiteral.spec.ts
File metadata and controls
65 lines (56 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import * as util from "../util";
test.each(['{ a: 3, b: "4" }', '{ "a": 3, b: "4" }', '{ ["a"]: 3, b: "4" }', '{ ["a" + 123]: 3, b: "4" }'])(
"Object Literal (%p)",
inp => {
util.testExpression(inp).expectToMatchJsResult();
}
);
test("object literal with function call to get key", () => {
util.testFunction`
const myFunc = () => "a";
return { [myFunc() + "b"]: 3 };
`.expectToMatchJsResult();
});
test("object literal with shorthand property", () => {
util.testFunction`
const x = 5;
return { x };
`.expectToMatchJsResult();
});
describe("property shorthand", () => {
test("should support property shorthand", () => {
util.testFunction`
const x = 1;
const o = { x };
return o.x;
`.expectToMatchJsResult();
});
test.each([NaN, Infinity])("should support %p shorthand", identifier => {
util.testExpression`({ ${identifier} }).${identifier}`.expectToMatchJsResult();
});
test("should support _G shorthand", () => {
util.testExpression`({ _G })._G.foobar`
.setTsHeader("declare const _G: any;")
.setLuaHeader('foobar = "foobar"')
.expectToEqual("foobar");
});
test("should support export property shorthand", () => {
util.testModule`
export const x = 1;
const o = { x };
export const y = o.x;
`.expectToMatchJsResult();
});
});
test("undefined as object key", () => {
util.testFunction`
const foo = {undefined: "foo"};
return foo.undefined;
`.expectToMatchJsResult();
});
test.each(['{x: "foobar"}.x', '{x: "foobar"}["x"]', '{x: () => "foobar"}.x()', '{x: () => "foobar"}["x"]()'])(
"object literal property access (%p)",
expression => {
util.testExpression(expression).expectToMatchJsResult();
}
);