@alloy-js/python 0.5.0-dev.0 → 0.5.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/src/builtins/python.js +46 -0
- package/dist/dev/src/builtins/python.js.map +1 -1
- package/dist/dev/src/components/ClassDeclaration.js +19 -10
- package/dist/dev/src/components/ClassDeclaration.js.map +1 -1
- package/dist/dev/src/components/ClassMethodDeclaration.js +20 -5
- package/dist/dev/src/components/ClassMethodDeclaration.js.map +1 -1
- package/dist/dev/src/components/DataclassDeclaration.js +14 -12
- package/dist/dev/src/components/DataclassDeclaration.js.map +1 -1
- package/dist/dev/src/components/DecoratorList.js +55 -0
- package/dist/dev/src/components/DecoratorList.js.map +1 -0
- package/dist/dev/src/components/EnumDeclaration.js +21 -12
- package/dist/dev/src/components/EnumDeclaration.js.map +1 -1
- package/dist/dev/src/components/FunctionBase.js +21 -10
- package/dist/dev/src/components/FunctionBase.js.map +1 -1
- package/dist/dev/src/components/FutureStatement.js +1 -1
- package/dist/dev/src/components/MethodBase.js +16 -4
- package/dist/dev/src/components/MethodBase.js.map +1 -1
- package/dist/dev/src/components/PropertyDeclaration.js +68 -17
- package/dist/dev/src/components/PropertyDeclaration.js.map +1 -1
- package/dist/dev/src/components/PydanticClassDeclaration.js +136 -0
- package/dist/dev/src/components/PydanticClassDeclaration.js.map +1 -0
- package/dist/dev/src/components/SourceFile.js +44 -32
- package/dist/dev/src/components/SourceFile.js.map +1 -1
- package/dist/dev/src/components/StaticMethodDeclaration.js +19 -5
- package/dist/dev/src/components/StaticMethodDeclaration.js.map +1 -1
- package/dist/dev/src/components/index.js +1 -0
- package/dist/dev/src/components/index.js.map +1 -1
- package/dist/dev/test/callsignatures.test.js +471 -297
- package/dist/dev/test/callsignatures.test.js.map +1 -1
- package/dist/dev/test/class-method-declaration.test.js +21 -10
- package/dist/dev/test/class-method-declaration.test.js.map +1 -1
- package/dist/dev/test/classdeclarations.test.js +480 -381
- package/dist/dev/test/classdeclarations.test.js.map +1 -1
- package/dist/dev/test/classinstantiations.test.js +201 -168
- package/dist/dev/test/classinstantiations.test.js.map +1 -1
- package/dist/dev/test/constructordeclaration.test.js +22 -11
- package/dist/dev/test/constructordeclaration.test.js.map +1 -1
- package/dist/dev/test/dataclassdeclarations.test.js +345 -358
- package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
- package/dist/dev/test/decoratorlist.test.js +131 -0
- package/dist/dev/test/decoratorlist.test.js.map +1 -0
- package/dist/dev/test/dundermethoddeclaration.test.js +22 -11
- package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -1
- package/dist/dev/test/enums.test.js +231 -166
- package/dist/dev/test/enums.test.js.map +1 -1
- package/dist/dev/test/externals.test.js +57 -45
- package/dist/dev/test/externals.test.js.map +1 -1
- package/dist/dev/test/factories.test.js +124 -50
- package/dist/dev/test/factories.test.js.map +1 -1
- package/dist/dev/test/functioncallexpressions.test.js +199 -164
- package/dist/dev/test/functioncallexpressions.test.js.map +1 -1
- package/dist/dev/test/functiondeclaration.test.js +452 -265
- package/dist/dev/test/functiondeclaration.test.js.map +1 -1
- package/dist/dev/test/imports.test.js +273 -221
- package/dist/dev/test/imports.test.js.map +1 -1
- package/dist/dev/test/memberexpressions.test.js +1237 -972
- package/dist/dev/test/memberexpressions.test.js.map +1 -1
- package/dist/dev/test/methoddeclaration.test.js +200 -45
- package/dist/dev/test/methoddeclaration.test.js.map +1 -1
- package/dist/dev/test/namepolicies.test.js +130 -94
- package/dist/dev/test/namepolicies.test.js.map +1 -1
- package/dist/dev/test/propertydeclaration.test.js +177 -46
- package/dist/dev/test/propertydeclaration.test.js.map +1 -1
- package/dist/dev/test/pydanticclassdeclarations.test.js +1089 -0
- package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -0
- package/dist/dev/test/pydocs.test.js +888 -715
- package/dist/dev/test/pydocs.test.js.map +1 -1
- package/dist/dev/test/references.test.js +42 -35
- package/dist/dev/test/references.test.js.map +1 -1
- package/dist/dev/test/sourcefiles.test.js +1109 -841
- package/dist/dev/test/sourcefiles.test.js.map +1 -1
- package/dist/dev/test/staticmethoddeclaration.test.js +21 -10
- package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -1
- package/dist/dev/test/type-checking-imports.test.js +408 -359
- package/dist/dev/test/type-checking-imports.test.js.map +1 -1
- package/dist/dev/test/typereference.test.js +55 -40
- package/dist/dev/test/typereference.test.js.map +1 -1
- package/dist/dev/test/uniontypeexpression.test.js +222 -146
- package/dist/dev/test/uniontypeexpression.test.js.map +1 -1
- package/dist/dev/test/utils.js +39 -77
- package/dist/dev/test/utils.js.map +1 -1
- package/dist/dev/test/values.test.js +237 -101
- package/dist/dev/test/values.test.js.map +1 -1
- package/dist/dev/test/variables.test.js +321 -203
- package/dist/dev/test/variables.test.js.map +1 -1
- package/dist/dev/test/vitest.setup.js +2 -0
- package/dist/dev/test/vitest.setup.js.map +1 -0
- package/dist/src/builtins/python.d.ts +30 -0
- package/dist/src/builtins/python.d.ts.map +1 -1
- package/dist/src/builtins/python.js +46 -0
- package/dist/src/builtins/python.js.map +1 -1
- package/dist/src/components/ClassDeclaration.d.ts +21 -0
- package/dist/src/components/ClassDeclaration.d.ts.map +1 -1
- package/dist/src/components/ClassDeclaration.js +6 -1
- package/dist/src/components/ClassDeclaration.js.map +1 -1
- package/dist/src/components/ClassMethodDeclaration.d.ts +5 -1
- package/dist/src/components/ClassMethodDeclaration.d.ts.map +1 -1
- package/dist/src/components/ClassMethodDeclaration.js +14 -3
- package/dist/src/components/ClassMethodDeclaration.js.map +1 -1
- package/dist/src/components/DataclassDeclaration.d.ts.map +1 -1
- package/dist/src/components/DataclassDeclaration.js +10 -4
- package/dist/src/components/DataclassDeclaration.js.map +1 -1
- package/dist/src/components/DecoratorList.d.ts +43 -0
- package/dist/src/components/DecoratorList.d.ts.map +1 -0
- package/dist/src/components/DecoratorList.js +47 -0
- package/dist/src/components/DecoratorList.js.map +1 -0
- package/dist/src/components/EnumDeclaration.d.ts +9 -0
- package/dist/src/components/EnumDeclaration.d.ts.map +1 -1
- package/dist/src/components/EnumDeclaration.js +6 -1
- package/dist/src/components/EnumDeclaration.js.map +1 -1
- package/dist/src/components/FunctionBase.d.ts +31 -1
- package/dist/src/components/FunctionBase.d.ts.map +1 -1
- package/dist/src/components/FunctionBase.js +9 -2
- package/dist/src/components/FunctionBase.js.map +1 -1
- package/dist/src/components/FutureStatement.d.ts +1 -1
- package/dist/src/components/FutureStatement.js +1 -1
- package/dist/src/components/MethodBase.d.ts.map +1 -1
- package/dist/src/components/MethodBase.js +10 -2
- package/dist/src/components/MethodBase.js.map +1 -1
- package/dist/src/components/PropertyDeclaration.d.ts +29 -0
- package/dist/src/components/PropertyDeclaration.d.ts.map +1 -1
- package/dist/src/components/PropertyDeclaration.js +48 -1
- package/dist/src/components/PropertyDeclaration.js.map +1 -1
- package/dist/src/components/PydanticClassDeclaration.d.ts +120 -0
- package/dist/src/components/PydanticClassDeclaration.d.ts.map +1 -0
- package/dist/src/components/PydanticClassDeclaration.js +116 -0
- package/dist/src/components/PydanticClassDeclaration.js.map +1 -0
- package/dist/src/components/SourceFile.d.ts +2 -2
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js +12 -0
- package/dist/src/components/SourceFile.js.map +1 -1
- package/dist/src/components/StaticMethodDeclaration.d.ts +3 -0
- package/dist/src/components/StaticMethodDeclaration.d.ts.map +1 -1
- package/dist/src/components/StaticMethodDeclaration.js +13 -3
- package/dist/src/components/StaticMethodDeclaration.js.map +1 -1
- package/dist/src/components/index.d.ts +1 -0
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +1 -0
- package/dist/src/components/index.js.map +1 -1
- package/dist/test/callsignatures.test.js +346 -272
- package/dist/test/callsignatures.test.js.map +1 -1
- package/dist/test/class-method-declaration.test.js +7 -4
- package/dist/test/class-method-declaration.test.js.map +1 -1
- package/dist/test/classdeclarations.test.js +316 -277
- package/dist/test/classdeclarations.test.js.map +1 -1
- package/dist/test/classinstantiations.test.js +112 -103
- package/dist/test/classinstantiations.test.js.map +1 -1
- package/dist/test/constructordeclaration.test.js +7 -4
- package/dist/test/constructordeclaration.test.js.map +1 -1
- package/dist/test/dataclassdeclarations.test.js +153 -178
- package/dist/test/dataclassdeclarations.test.js.map +1 -1
- package/dist/test/decoratorlist.test.d.ts +2 -0
- package/dist/test/decoratorlist.test.d.ts.map +1 -0
- package/dist/test/decoratorlist.test.js +83 -0
- package/dist/test/decoratorlist.test.js.map +1 -0
- package/dist/test/dundermethoddeclaration.test.js +7 -4
- package/dist/test/dundermethoddeclaration.test.js.map +1 -1
- package/dist/test/enums.test.js +172 -143
- package/dist/test/enums.test.js.map +1 -1
- package/dist/test/externals.test.js +24 -24
- package/dist/test/externals.test.js.map +1 -1
- package/dist/test/factories.test.js +75 -33
- package/dist/test/factories.test.js.map +1 -1
- package/dist/test/functioncallexpressions.test.js +117 -106
- package/dist/test/functioncallexpressions.test.js.map +1 -1
- package/dist/test/functiondeclaration.test.js +256 -173
- package/dist/test/functiondeclaration.test.js.map +1 -1
- package/dist/test/imports.test.js +171 -143
- package/dist/test/imports.test.js.map +1 -1
- package/dist/test/memberexpressions.test.js +582 -453
- package/dist/test/memberexpressions.test.js.map +1 -1
- package/dist/test/methoddeclaration.test.js +106 -19
- package/dist/test/methoddeclaration.test.js.map +1 -1
- package/dist/test/namepolicies.test.js +90 -78
- package/dist/test/namepolicies.test.js.map +1 -1
- package/dist/test/propertydeclaration.test.js +90 -15
- package/dist/test/propertydeclaration.test.js.map +1 -1
- package/dist/test/pydanticclassdeclarations.test.d.ts +2 -0
- package/dist/test/pydanticclassdeclarations.test.d.ts.map +1 -0
- package/dist/test/pydanticclassdeclarations.test.js +773 -0
- package/dist/test/pydanticclassdeclarations.test.js.map +1 -0
- package/dist/test/pydocs.test.js +573 -532
- package/dist/test/pydocs.test.js.map +1 -1
- package/dist/test/references.test.js +31 -28
- package/dist/test/references.test.js.map +1 -1
- package/dist/test/sourcefiles.test.js +700 -580
- package/dist/test/sourcefiles.test.js.map +1 -1
- package/dist/test/staticmethoddeclaration.test.js +7 -4
- package/dist/test/staticmethoddeclaration.test.js.map +1 -1
- package/dist/test/type-checking-imports.test.js +297 -284
- package/dist/test/type-checking-imports.test.js.map +1 -1
- package/dist/test/typereference.test.js +29 -22
- package/dist/test/typereference.test.js.map +1 -1
- package/dist/test/uniontypeexpression.test.js +124 -88
- package/dist/test/uniontypeexpression.test.js.map +1 -1
- package/dist/test/utils.d.ts +10 -17
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +32 -74
- package/dist/test/utils.js.map +1 -1
- package/dist/test/values.test.js +135 -67
- package/dist/test/values.test.js.map +1 -1
- package/dist/test/variables.test.js +201 -151
- package/dist/test/variables.test.js.map +1 -1
- package/dist/test/vitest.setup.d.ts +2 -0
- package/dist/test/vitest.setup.d.ts.map +1 -0
- package/dist/test/vitest.setup.js +2 -0
- package/dist/test/vitest.setup.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/api/components/ClassDeclaration.md +10 -7
- package/docs/api/components/ClassEnumDeclaration.md +9 -6
- package/docs/api/components/ClassMethodDeclaration.md +7 -5
- package/docs/api/components/DataclassDeclaration.md +9 -5
- package/docs/api/components/DunderMethodDeclaration.md +7 -5
- package/docs/api/components/FunctionDeclaration.md +9 -5
- package/docs/api/components/FutureStatement.md +1 -1
- package/docs/api/components/MethodDeclaration.md +11 -6
- package/docs/api/components/PropertyDeclaration.md +11 -8
- package/docs/api/components/PydanticClassDeclaration.md +146 -0
- package/docs/api/components/SourceFile.md +20 -8
- package/docs/api/components/StaticMethodDeclaration.md +7 -5
- package/docs/api/components/index.md +1 -0
- package/docs/api/index.md +3 -3
- package/docs/api/types/CommonFunctionProps.md +4 -3
- package/docs/api/types/PydanticModelConfigDictProps.md +32 -0
- package/docs/api/types/index.md +1 -0
- package/docs/api/variables/index.md +3 -0
- package/docs/api/variables/pydanticModule.md +27 -0
- package/docs/api/variables/pydanticSettingsModule.md +7 -0
- package/docs/api/variables/typingModule.md +9 -0
- package/package.json +4 -4
- package/src/builtins/python.ts +539 -1
- package/src/components/ClassDeclaration.tsx +23 -0
- package/src/components/ClassMethodDeclaration.tsx +9 -1
- package/src/components/DataclassDeclaration.tsx +18 -11
- package/src/components/DecoratorList.tsx +50 -0
- package/src/components/EnumDeclaration.tsx +11 -0
- package/src/components/FunctionBase.tsx +34 -3
- package/src/components/FutureStatement.tsx +1 -1
- package/src/components/MethodBase.tsx +6 -2
- package/src/components/PropertyDeclaration.tsx +48 -1
- package/src/components/PydanticClassDeclaration.tsx +222 -0
- package/src/components/SourceFile.tsx +6 -1
- package/src/components/StaticMethodDeclaration.tsx +7 -1
- package/src/components/index.ts +1 -0
- package/temp/api.json +1158 -86
- package/test/callsignatures.test.tsx +309 -283
- package/test/class-method-declaration.test.tsx +3 -4
- package/test/classdeclarations.test.tsx +277 -235
- package/test/classinstantiations.test.tsx +115 -109
- package/test/constructordeclaration.test.tsx +9 -6
- package/test/dataclassdeclarations.test.tsx +256 -349
- package/test/decoratorlist.test.tsx +114 -0
- package/test/dundermethoddeclaration.test.tsx +3 -4
- package/test/enums.test.tsx +84 -71
- package/test/externals.test.tsx +25 -25
- package/test/factories.test.tsx +64 -22
- package/test/functioncallexpressions.test.tsx +123 -109
- package/test/functiondeclaration.test.tsx +218 -140
- package/test/imports.test.tsx +119 -91
- package/test/memberexpressions.test.tsx +265 -207
- package/test/methoddeclaration.test.tsx +115 -24
- package/test/namepolicies.test.tsx +69 -69
- package/test/propertydeclaration.test.tsx +71 -7
- package/test/pydanticclassdeclarations.test.tsx +704 -0
- package/test/pydocs.test.tsx +531 -579
- package/test/references.test.tsx +24 -23
- package/test/sourcefiles.test.tsx +527 -492
- package/test/staticmethoddeclaration.test.tsx +3 -4
- package/test/type-checking-imports.test.tsx +206 -218
- package/test/typereference.test.tsx +15 -12
- package/test/uniontypeexpression.test.tsx +74 -61
- package/test/utils.tsx +26 -110
- package/test/values.test.tsx +82 -32
- package/test/variables.test.tsx +162 -142
- package/test/vitest.setup.ts +1 -0
- package/vitest.config.ts +3 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { code, memberRefkey, refkey } from "@alloy-js/core";
|
|
2
|
-
import { d } from "@alloy-js/core/testing";
|
|
1
|
+
import { code, memberRefkey, refkey, render } from "@alloy-js/core";
|
|
3
2
|
import { describe, expect, it } from "vitest";
|
|
4
3
|
import * as py from "../src/index.js";
|
|
5
4
|
import {
|
|
@@ -9,43 +8,43 @@ import {
|
|
|
9
8
|
SourceFile,
|
|
10
9
|
VariableDeclaration,
|
|
11
10
|
} from "../src/index.js";
|
|
12
|
-
import {
|
|
13
|
-
assertFileContents,
|
|
14
|
-
toSourceText,
|
|
15
|
-
toSourceTextMultiple,
|
|
16
|
-
} from "./utils.js";
|
|
11
|
+
import { TestOutput, TestOutputDirectory } from "./utils.js";
|
|
17
12
|
|
|
18
13
|
it("renders basic member expression with dot notation", () => {
|
|
19
14
|
expect(
|
|
20
|
-
|
|
15
|
+
<TestOutput>
|
|
21
16
|
<py.MemberExpression>
|
|
22
17
|
<py.MemberExpression.Part id="obj" />
|
|
23
18
|
<py.MemberExpression.Part id="property" />
|
|
24
|
-
</py.MemberExpression
|
|
25
|
-
|
|
26
|
-
).
|
|
19
|
+
</py.MemberExpression>
|
|
20
|
+
</TestOutput>,
|
|
21
|
+
).toRenderTo(
|
|
22
|
+
`
|
|
27
23
|
obj.property
|
|
28
|
-
|
|
24
|
+
`,
|
|
25
|
+
);
|
|
29
26
|
});
|
|
30
27
|
|
|
31
28
|
it("renders basic member expression with key", () => {
|
|
32
29
|
expect(
|
|
33
|
-
|
|
30
|
+
<TestOutput>
|
|
34
31
|
<py.MemberExpression>
|
|
35
32
|
<py.MemberExpression.Part id="arr" />
|
|
36
33
|
<py.MemberExpression.Part key={12345} />
|
|
37
34
|
<py.MemberExpression.Part id="foo-bar" />
|
|
38
|
-
</py.MemberExpression
|
|
39
|
-
|
|
40
|
-
).
|
|
35
|
+
</py.MemberExpression>
|
|
36
|
+
</TestOutput>,
|
|
37
|
+
).toRenderTo(
|
|
38
|
+
`
|
|
41
39
|
arr[12345].foo-bar
|
|
42
|
-
|
|
40
|
+
`,
|
|
41
|
+
);
|
|
43
42
|
});
|
|
44
43
|
|
|
45
44
|
it("renders basic member expression with key with reference", () => {
|
|
46
45
|
const rk1 = refkey();
|
|
47
46
|
expect(
|
|
48
|
-
|
|
47
|
+
<TestOutput>
|
|
49
48
|
<py.StatementList>
|
|
50
49
|
<py.VariableDeclaration name="test1" refkey={rk1} initializer={1} />
|
|
51
50
|
<py.MemberExpression>
|
|
@@ -53,33 +52,37 @@ it("renders basic member expression with key with reference", () => {
|
|
|
53
52
|
<py.MemberExpression.Part key={rk1} />
|
|
54
53
|
<py.MemberExpression.Part id="foo-bar" />
|
|
55
54
|
</py.MemberExpression>
|
|
56
|
-
</py.StatementList
|
|
57
|
-
|
|
58
|
-
).
|
|
55
|
+
</py.StatementList>
|
|
56
|
+
</TestOutput>,
|
|
57
|
+
).toRenderTo(
|
|
58
|
+
`
|
|
59
59
|
test1 = 1
|
|
60
60
|
arr[test1].foo-bar
|
|
61
|
-
|
|
61
|
+
`,
|
|
62
|
+
);
|
|
62
63
|
});
|
|
63
64
|
|
|
64
65
|
it("renders basic member expression with keys", () => {
|
|
65
66
|
expect(
|
|
66
|
-
|
|
67
|
+
<TestOutput>
|
|
67
68
|
<py.MemberExpression>
|
|
68
69
|
<py.MemberExpression.Part id="arr" />
|
|
69
70
|
<py.MemberExpression.Part keys={[1, 2]} />
|
|
70
71
|
<py.MemberExpression.Part id="foo-bar" />
|
|
71
|
-
</py.MemberExpression
|
|
72
|
-
|
|
73
|
-
).
|
|
72
|
+
</py.MemberExpression>
|
|
73
|
+
</TestOutput>,
|
|
74
|
+
).toRenderTo(
|
|
75
|
+
`
|
|
74
76
|
arr[1, 2].foo-bar
|
|
75
|
-
|
|
77
|
+
`,
|
|
78
|
+
);
|
|
76
79
|
});
|
|
77
80
|
|
|
78
81
|
it("renders basic member expression with keys with references", () => {
|
|
79
82
|
const rk1 = refkey();
|
|
80
83
|
const rk2 = refkey();
|
|
81
84
|
expect(
|
|
82
|
-
|
|
85
|
+
<TestOutput>
|
|
83
86
|
<py.StatementList>
|
|
84
87
|
<py.VariableDeclaration name="test1" refkey={rk1} initializer={1} />
|
|
85
88
|
<py.VariableDeclaration name="test2" refkey={rk2} initializer={2} />
|
|
@@ -88,27 +91,31 @@ it("renders basic member expression with keys with references", () => {
|
|
|
88
91
|
<py.MemberExpression.Part keys={[rk1, rk2]} />
|
|
89
92
|
<py.MemberExpression.Part id="foo-bar" />
|
|
90
93
|
</py.MemberExpression>
|
|
91
|
-
</py.StatementList
|
|
92
|
-
|
|
93
|
-
).
|
|
94
|
+
</py.StatementList>
|
|
95
|
+
</TestOutput>,
|
|
96
|
+
).toRenderTo(
|
|
97
|
+
`
|
|
94
98
|
test1 = 1
|
|
95
99
|
test2 = 2
|
|
96
100
|
arr[test1, test2].foo-bar
|
|
97
|
-
|
|
101
|
+
`,
|
|
102
|
+
);
|
|
98
103
|
});
|
|
99
104
|
|
|
100
105
|
it("renders basic member expression with slice - 1", () => {
|
|
101
106
|
expect(
|
|
102
|
-
|
|
107
|
+
<TestOutput>
|
|
103
108
|
<py.MemberExpression>
|
|
104
109
|
<py.MemberExpression.Part id="arr" />
|
|
105
110
|
<py.MemberExpression.Part slice={{ start: 1, stop: 3, step: 2 }} />
|
|
106
111
|
<py.MemberExpression.Part id="foo-bar" />
|
|
107
|
-
</py.MemberExpression
|
|
108
|
-
|
|
109
|
-
).
|
|
112
|
+
</py.MemberExpression>
|
|
113
|
+
</TestOutput>,
|
|
114
|
+
).toRenderTo(
|
|
115
|
+
`
|
|
110
116
|
arr[1:3:2].foo-bar
|
|
111
|
-
|
|
117
|
+
`,
|
|
118
|
+
);
|
|
112
119
|
});
|
|
113
120
|
|
|
114
121
|
it("renders basic member expression with slice - 1 with references", () => {
|
|
@@ -116,7 +123,7 @@ it("renders basic member expression with slice - 1 with references", () => {
|
|
|
116
123
|
const rk2 = refkey();
|
|
117
124
|
const rk3 = refkey();
|
|
118
125
|
expect(
|
|
119
|
-
|
|
126
|
+
<TestOutput>
|
|
120
127
|
<py.StatementList>
|
|
121
128
|
<py.VariableDeclaration name="test1" refkey={rk1} initializer={1} />
|
|
122
129
|
<py.VariableDeclaration name="test2" refkey={rk2} initializer={3} />
|
|
@@ -128,76 +135,86 @@ it("renders basic member expression with slice - 1 with references", () => {
|
|
|
128
135
|
/>
|
|
129
136
|
<py.MemberExpression.Part id="foo-bar" />
|
|
130
137
|
</py.MemberExpression>
|
|
131
|
-
</py.StatementList
|
|
132
|
-
|
|
133
|
-
).
|
|
138
|
+
</py.StatementList>
|
|
139
|
+
</TestOutput>,
|
|
140
|
+
).toRenderTo(
|
|
141
|
+
`
|
|
134
142
|
test1 = 1
|
|
135
143
|
test2 = 3
|
|
136
144
|
test3 = 2
|
|
137
145
|
arr[test1:test2:test3].foo-bar
|
|
138
|
-
|
|
146
|
+
`,
|
|
147
|
+
);
|
|
139
148
|
});
|
|
140
149
|
|
|
141
150
|
it("renders basic member expression with slice - 2", () => {
|
|
142
151
|
expect(
|
|
143
|
-
|
|
152
|
+
<TestOutput>
|
|
144
153
|
<py.MemberExpression>
|
|
145
154
|
<py.MemberExpression.Part id="arr" />
|
|
146
155
|
<py.MemberExpression.Part slice={{ stop: 3 }} />
|
|
147
156
|
<py.MemberExpression.Part id="foo-bar" />
|
|
148
|
-
</py.MemberExpression
|
|
149
|
-
|
|
150
|
-
).
|
|
157
|
+
</py.MemberExpression>
|
|
158
|
+
</TestOutput>,
|
|
159
|
+
).toRenderTo(
|
|
160
|
+
`
|
|
151
161
|
arr[:3].foo-bar
|
|
152
|
-
|
|
162
|
+
`,
|
|
163
|
+
);
|
|
153
164
|
});
|
|
154
165
|
|
|
155
166
|
it("renders basic member expression with slice - 3", () => {
|
|
156
167
|
expect(
|
|
157
|
-
|
|
168
|
+
<TestOutput>
|
|
158
169
|
<py.MemberExpression>
|
|
159
170
|
<py.MemberExpression.Part id="arr" />
|
|
160
171
|
<py.MemberExpression.Part slice={{ step: 2 }} />
|
|
161
172
|
<py.MemberExpression.Part id="foo-bar" />
|
|
162
|
-
</py.MemberExpression
|
|
163
|
-
|
|
164
|
-
).
|
|
173
|
+
</py.MemberExpression>
|
|
174
|
+
</TestOutput>,
|
|
175
|
+
).toRenderTo(
|
|
176
|
+
`
|
|
165
177
|
arr[::2].foo-bar
|
|
166
|
-
|
|
178
|
+
`,
|
|
179
|
+
);
|
|
167
180
|
});
|
|
168
181
|
|
|
169
182
|
it("renders basic member expression with slice - 4", () => {
|
|
170
183
|
expect(
|
|
171
|
-
|
|
184
|
+
<TestOutput>
|
|
172
185
|
<py.MemberExpression>
|
|
173
186
|
<py.MemberExpression.Part id="arr" />
|
|
174
187
|
<py.MemberExpression.Part slice={{ start: 1 }} />
|
|
175
188
|
<py.MemberExpression.Part id="foo-bar" />
|
|
176
|
-
</py.MemberExpression
|
|
177
|
-
|
|
178
|
-
).
|
|
189
|
+
</py.MemberExpression>
|
|
190
|
+
</TestOutput>,
|
|
191
|
+
).toRenderTo(
|
|
192
|
+
`
|
|
179
193
|
arr[1:].foo-bar
|
|
180
|
-
|
|
194
|
+
`,
|
|
195
|
+
);
|
|
181
196
|
});
|
|
182
197
|
|
|
183
198
|
it("renders basic member expression with slice - 5", () => {
|
|
184
199
|
expect(
|
|
185
|
-
|
|
200
|
+
<TestOutput>
|
|
186
201
|
<py.MemberExpression>
|
|
187
202
|
<py.MemberExpression.Part id="arr" />
|
|
188
203
|
<py.MemberExpression.Part slice={{ start: 1, step: 2 }} />
|
|
189
204
|
<py.MemberExpression.Part id="foo-bar" />
|
|
190
|
-
</py.MemberExpression
|
|
191
|
-
|
|
192
|
-
).
|
|
205
|
+
</py.MemberExpression>
|
|
206
|
+
</TestOutput>,
|
|
207
|
+
).toRenderTo(
|
|
208
|
+
`
|
|
193
209
|
arr[1::2].foo-bar
|
|
194
|
-
|
|
210
|
+
`,
|
|
211
|
+
);
|
|
195
212
|
});
|
|
196
213
|
|
|
197
214
|
it("renders basic member expression with an expression index - 1", () => {
|
|
198
215
|
const xRefkey = refkey();
|
|
199
216
|
expect(
|
|
200
|
-
|
|
217
|
+
<TestOutput>
|
|
201
218
|
<py.StatementList>
|
|
202
219
|
<py.VariableDeclaration name="x" initializer={1} refkey={xRefkey} />
|
|
203
220
|
<py.MemberExpression>
|
|
@@ -205,79 +222,91 @@ it("renders basic member expression with an expression index - 1", () => {
|
|
|
205
222
|
<py.MemberExpression.Part key={code`${xRefkey} + 1`} />
|
|
206
223
|
<py.MemberExpression.Part id="foo-bar" />
|
|
207
224
|
</py.MemberExpression>
|
|
208
|
-
</py.StatementList
|
|
209
|
-
|
|
210
|
-
).
|
|
225
|
+
</py.StatementList>
|
|
226
|
+
</TestOutput>,
|
|
227
|
+
).toRenderTo(
|
|
228
|
+
`
|
|
211
229
|
x = 1
|
|
212
230
|
arr[x + 1].foo-bar
|
|
213
|
-
|
|
231
|
+
`,
|
|
232
|
+
);
|
|
214
233
|
});
|
|
215
234
|
|
|
216
235
|
it("renders basic member expression with an expression index - 2", () => {
|
|
217
236
|
expect(
|
|
218
|
-
|
|
237
|
+
<TestOutput>
|
|
219
238
|
<py.StatementList>
|
|
220
239
|
<py.MemberExpression>
|
|
221
240
|
<py.MemberExpression.Part id="arr" />
|
|
222
241
|
<py.MemberExpression.Part key={code`"foo" + 1`} />
|
|
223
242
|
<py.MemberExpression.Part id="foo-bar" />
|
|
224
243
|
</py.MemberExpression>
|
|
225
|
-
</py.StatementList
|
|
226
|
-
|
|
227
|
-
).
|
|
244
|
+
</py.StatementList>
|
|
245
|
+
</TestOutput>,
|
|
246
|
+
).toRenderTo(
|
|
247
|
+
`
|
|
228
248
|
arr["foo" + 1].foo-bar
|
|
229
|
-
|
|
249
|
+
`,
|
|
250
|
+
);
|
|
230
251
|
});
|
|
231
252
|
|
|
232
253
|
it("throws an error for invalid identifiers with quotes", () => {
|
|
233
254
|
expect(() =>
|
|
234
|
-
|
|
235
|
-
<
|
|
236
|
-
<py.MemberExpression
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
255
|
+
render(
|
|
256
|
+
<TestOutput>
|
|
257
|
+
<py.MemberExpression>
|
|
258
|
+
<py.MemberExpression.Part id="obj" />
|
|
259
|
+
<py.MemberExpression.Part id={`property-"name"`} />
|
|
260
|
+
</py.MemberExpression>
|
|
261
|
+
</TestOutput>,
|
|
262
|
+
),
|
|
240
263
|
).toThrowError(/Invalid identifier: property-"name"/);
|
|
241
264
|
});
|
|
242
265
|
|
|
243
266
|
it("supports multiple levels of nesting", () => {
|
|
244
267
|
expect(
|
|
245
|
-
|
|
268
|
+
<TestOutput>
|
|
246
269
|
<py.MemberExpression>
|
|
247
270
|
<py.MemberExpression.Part id="a" />
|
|
248
271
|
<py.MemberExpression.Part id="b" />
|
|
249
272
|
<py.MemberExpression.Part id="c" />
|
|
250
273
|
<py.MemberExpression.Part id="d" />
|
|
251
|
-
</py.MemberExpression
|
|
252
|
-
|
|
253
|
-
).
|
|
274
|
+
</py.MemberExpression>
|
|
275
|
+
</TestOutput>,
|
|
276
|
+
).toRenderTo(
|
|
277
|
+
`
|
|
254
278
|
a.b.c.d
|
|
255
|
-
|
|
279
|
+
`,
|
|
280
|
+
);
|
|
256
281
|
});
|
|
257
282
|
|
|
258
283
|
it("handles a mix of dot and bracket notation", () => {
|
|
259
284
|
expect(
|
|
260
|
-
|
|
285
|
+
<TestOutput>
|
|
261
286
|
<py.MemberExpression>
|
|
262
287
|
<py.MemberExpression.Part id="obj" />
|
|
263
288
|
<py.MemberExpression.Part id="normalProp" />
|
|
264
289
|
<py.MemberExpression.Part key={"special-prop"} />
|
|
265
290
|
<py.MemberExpression.Part key={"123"} />
|
|
266
|
-
</py.MemberExpression
|
|
267
|
-
|
|
268
|
-
).
|
|
291
|
+
</py.MemberExpression>
|
|
292
|
+
</TestOutput>,
|
|
293
|
+
).toRenderTo(
|
|
294
|
+
`
|
|
269
295
|
obj.normalProp["special-prop"]["123"]
|
|
270
|
-
|
|
296
|
+
`,
|
|
297
|
+
);
|
|
271
298
|
});
|
|
272
299
|
|
|
273
300
|
it("throws an error when providing conflicting part props", () => {
|
|
274
301
|
expect(() =>
|
|
275
|
-
|
|
276
|
-
<
|
|
277
|
-
<py.MemberExpression
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
302
|
+
render(
|
|
303
|
+
<TestOutput>
|
|
304
|
+
<py.MemberExpression>
|
|
305
|
+
<py.MemberExpression.Part id="obj" />
|
|
306
|
+
<py.MemberExpression.Part id="property" args={[1, 2]} />
|
|
307
|
+
</py.MemberExpression>
|
|
308
|
+
</TestOutput>,
|
|
309
|
+
),
|
|
281
310
|
).toThrowError(
|
|
282
311
|
`Only one of args, id can be used for a MemberExpression part at a time`,
|
|
283
312
|
);
|
|
@@ -285,29 +314,33 @@ it("throws an error when providing conflicting part props", () => {
|
|
|
285
314
|
|
|
286
315
|
it("throws an error when providing an empty slice", () => {
|
|
287
316
|
expect(() =>
|
|
288
|
-
|
|
289
|
-
<
|
|
290
|
-
<py.MemberExpression
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
317
|
+
render(
|
|
318
|
+
<TestOutput>
|
|
319
|
+
<py.MemberExpression>
|
|
320
|
+
<py.MemberExpression.Part id="obj" />
|
|
321
|
+
<py.MemberExpression.Part slice={{}} />
|
|
322
|
+
</py.MemberExpression>
|
|
323
|
+
</TestOutput>,
|
|
324
|
+
),
|
|
294
325
|
).toThrowError(`MemberExpression.Part: slice object cannot be empty`);
|
|
295
326
|
});
|
|
296
327
|
|
|
297
328
|
it("throws an error when providing an empty array", () => {
|
|
298
329
|
expect(() =>
|
|
299
|
-
|
|
300
|
-
<
|
|
301
|
-
<py.MemberExpression
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
330
|
+
render(
|
|
331
|
+
<TestOutput>
|
|
332
|
+
<py.MemberExpression>
|
|
333
|
+
<py.MemberExpression.Part id="obj" />
|
|
334
|
+
<py.MemberExpression.Part keys={[]} />
|
|
335
|
+
</py.MemberExpression>
|
|
336
|
+
</TestOutput>,
|
|
337
|
+
),
|
|
305
338
|
).toThrowError(`MemberExpression.Part: keys array cannot be empty`);
|
|
306
339
|
});
|
|
307
340
|
|
|
308
341
|
it("takes children for the id part", () => {
|
|
309
342
|
expect(
|
|
310
|
-
|
|
343
|
+
<TestOutput>
|
|
311
344
|
<py.StatementList>
|
|
312
345
|
<py.MemberExpression>
|
|
313
346
|
<py.MemberExpression.Part id="child1" />
|
|
@@ -322,12 +355,14 @@ it("takes children for the id part", () => {
|
|
|
322
355
|
<py.MemberExpression.Part key={code`"foo" + 1`} />
|
|
323
356
|
<py.MemberExpression.Part args />
|
|
324
357
|
</py.MemberExpression>
|
|
325
|
-
</py.StatementList
|
|
326
|
-
|
|
327
|
-
).
|
|
358
|
+
</py.StatementList>
|
|
359
|
+
</TestOutput>,
|
|
360
|
+
).toRenderTo(
|
|
361
|
+
`
|
|
328
362
|
child1["child1"]
|
|
329
363
|
child1["child2"]()["child3"]()["foo" + 1]()
|
|
330
|
-
|
|
364
|
+
`,
|
|
365
|
+
);
|
|
331
366
|
});
|
|
332
367
|
|
|
333
368
|
describe("with refkeys", () => {
|
|
@@ -335,7 +370,7 @@ describe("with refkeys", () => {
|
|
|
335
370
|
const rk1 = refkey();
|
|
336
371
|
const rk2 = refkey();
|
|
337
372
|
expect(
|
|
338
|
-
|
|
373
|
+
<TestOutput>
|
|
339
374
|
<py.StatementList>
|
|
340
375
|
<py.VariableDeclaration name="test1" refkey={rk1} initializer={1} />
|
|
341
376
|
<py.VariableDeclaration name="test1" refkey={rk2} initializer={2} />
|
|
@@ -343,13 +378,15 @@ describe("with refkeys", () => {
|
|
|
343
378
|
<py.MemberExpression.Part refkey={rk1} />
|
|
344
379
|
<py.MemberExpression.Part refkey={rk2} />
|
|
345
380
|
</py.MemberExpression>
|
|
346
|
-
</py.StatementList
|
|
347
|
-
|
|
348
|
-
).
|
|
381
|
+
</py.StatementList>
|
|
382
|
+
</TestOutput>,
|
|
383
|
+
).toRenderTo(
|
|
384
|
+
`
|
|
349
385
|
test1 = 1
|
|
350
386
|
test1_2_test = 2
|
|
351
387
|
test1.test1_2_test
|
|
352
|
-
|
|
388
|
+
`,
|
|
389
|
+
);
|
|
353
390
|
});
|
|
354
391
|
|
|
355
392
|
it("Correctly resolves member expressions from 2 different classes", () => {
|
|
@@ -406,7 +443,8 @@ describe("with refkeys", () => {
|
|
|
406
443
|
</py.StatementList>
|
|
407
444
|
);
|
|
408
445
|
|
|
409
|
-
expect(
|
|
446
|
+
expect(<TestOutput>{template}</TestOutput>).toRenderTo(
|
|
447
|
+
`
|
|
410
448
|
class Model1:
|
|
411
449
|
foo: str
|
|
412
450
|
|
|
@@ -417,7 +455,8 @@ describe("with refkeys", () => {
|
|
|
417
455
|
model2_instance: Model2 = Model2()
|
|
418
456
|
model1_instance.foo
|
|
419
457
|
model2_instance.bar
|
|
420
|
-
|
|
458
|
+
`,
|
|
459
|
+
);
|
|
421
460
|
});
|
|
422
461
|
|
|
423
462
|
it("handles optional parameters correctly", () => {
|
|
@@ -460,7 +499,8 @@ describe("with refkeys", () => {
|
|
|
460
499
|
</py.StatementList>
|
|
461
500
|
);
|
|
462
501
|
|
|
463
|
-
expect(
|
|
502
|
+
expect(<TestOutput>{template}</TestOutput>).toRenderTo(
|
|
503
|
+
`
|
|
464
504
|
class Model:
|
|
465
505
|
bar: str
|
|
466
506
|
|
|
@@ -468,7 +508,8 @@ describe("with refkeys", () => {
|
|
|
468
508
|
message = foo.bar
|
|
469
509
|
print(message)
|
|
470
510
|
|
|
471
|
-
|
|
511
|
+
`,
|
|
512
|
+
);
|
|
472
513
|
});
|
|
473
514
|
|
|
474
515
|
it("handles class member correctly", () => {
|
|
@@ -479,7 +520,7 @@ describe("with refkeys", () => {
|
|
|
479
520
|
const classMemberRefkey = refkey();
|
|
480
521
|
const instanceRefkey = refkey();
|
|
481
522
|
expect(
|
|
482
|
-
|
|
523
|
+
<TestOutput>
|
|
483
524
|
<py.StatementList>
|
|
484
525
|
<ClassDeclaration name="Bar" refkey={interfaceRefkey}>
|
|
485
526
|
<VariableDeclaration
|
|
@@ -518,9 +559,10 @@ describe("with refkeys", () => {
|
|
|
518
559
|
<py.MemberExpression.Part refkey={classMethodRefkey} />
|
|
519
560
|
<py.MemberExpression.Part args={[]} />
|
|
520
561
|
</py.MemberExpression>
|
|
521
|
-
</py.StatementList
|
|
522
|
-
|
|
523
|
-
).
|
|
562
|
+
</py.StatementList>
|
|
563
|
+
</TestOutput>,
|
|
564
|
+
).toRenderTo(
|
|
565
|
+
`
|
|
524
566
|
class Bar:
|
|
525
567
|
prop1: str
|
|
526
568
|
|
|
@@ -533,14 +575,15 @@ describe("with refkeys", () => {
|
|
|
533
575
|
inst = Foo()
|
|
534
576
|
inst.test1.prop1
|
|
535
577
|
inst.test_method()
|
|
536
|
-
|
|
578
|
+
`,
|
|
579
|
+
);
|
|
537
580
|
});
|
|
538
581
|
|
|
539
582
|
it("handles late resolved refkeys correctly", () => {
|
|
540
583
|
const rk1 = refkey();
|
|
541
584
|
const rk2 = refkey();
|
|
542
585
|
expect(
|
|
543
|
-
|
|
586
|
+
<TestOutput>
|
|
544
587
|
<py.StatementList>
|
|
545
588
|
<py.MemberExpression>
|
|
546
589
|
<py.MemberExpression.Part refkey={rk1} />
|
|
@@ -548,37 +591,40 @@ describe("with refkeys", () => {
|
|
|
548
591
|
</py.MemberExpression>
|
|
549
592
|
<py.VariableDeclaration name="test1" refkey={rk1} initializer={1} />
|
|
550
593
|
<py.VariableDeclaration name="test1" refkey={rk2} initializer={2} />
|
|
551
|
-
</py.StatementList
|
|
552
|
-
|
|
553
|
-
).
|
|
594
|
+
</py.StatementList>
|
|
595
|
+
</TestOutput>,
|
|
596
|
+
).toRenderTo(
|
|
597
|
+
`
|
|
554
598
|
test1.test1_2_test
|
|
555
599
|
test1 = 1
|
|
556
600
|
test1_2_test = 2
|
|
557
|
-
|
|
601
|
+
`,
|
|
602
|
+
);
|
|
558
603
|
});
|
|
559
604
|
|
|
560
605
|
it("creates a full reference to the first refkey", () => {
|
|
561
606
|
const rk1 = refkey();
|
|
562
|
-
|
|
563
|
-
<
|
|
564
|
-
<
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
<py
|
|
568
|
-
<py.
|
|
569
|
-
<py.MemberExpression
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
"index.py":
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
607
|
+
expect(
|
|
608
|
+
<TestOutputDirectory>
|
|
609
|
+
<SourceFile path="source.py">
|
|
610
|
+
<py.VariableDeclaration name="importMe" refkey={rk1} />
|
|
611
|
+
</SourceFile>
|
|
612
|
+
<SourceFile path="index.py">
|
|
613
|
+
<py.StatementList>
|
|
614
|
+
<py.MemberExpression>
|
|
615
|
+
<py.MemberExpression.Part refkey={rk1} />
|
|
616
|
+
<py.MemberExpression.Part id="foo" />
|
|
617
|
+
</py.MemberExpression>
|
|
618
|
+
</py.StatementList>
|
|
619
|
+
</SourceFile>
|
|
620
|
+
</TestOutputDirectory>,
|
|
621
|
+
).toRenderTo({
|
|
622
|
+
"index.py": `
|
|
623
|
+
from source import import_me
|
|
624
|
+
|
|
625
|
+
import_me.foo
|
|
626
|
+
`,
|
|
627
|
+
"source.py": "import_me = None",
|
|
582
628
|
});
|
|
583
629
|
});
|
|
584
630
|
});
|
|
@@ -586,22 +632,24 @@ describe("with refkeys", () => {
|
|
|
586
632
|
describe("with function calls", () => {
|
|
587
633
|
it("handles simple function calls correctly", () => {
|
|
588
634
|
expect(
|
|
589
|
-
|
|
635
|
+
<TestOutput>
|
|
590
636
|
<py.MemberExpression>
|
|
591
637
|
<py.MemberExpression.Part id="myFunction" />
|
|
592
638
|
<py.MemberExpression.Part args={[1, 2]} />
|
|
593
|
-
</py.MemberExpression
|
|
594
|
-
|
|
595
|
-
).
|
|
639
|
+
</py.MemberExpression>
|
|
640
|
+
</TestOutput>,
|
|
641
|
+
).toRenderTo(
|
|
642
|
+
`
|
|
596
643
|
myFunction(1, 2)
|
|
597
|
-
|
|
644
|
+
`,
|
|
645
|
+
);
|
|
598
646
|
});
|
|
599
647
|
|
|
600
648
|
it("handles function calls with references correctly", () => {
|
|
601
649
|
const xRefkey = refkey();
|
|
602
650
|
const yRefkey = refkey();
|
|
603
651
|
expect(
|
|
604
|
-
|
|
652
|
+
<TestOutput>
|
|
605
653
|
<py.StatementList>
|
|
606
654
|
<py.VariableDeclaration name="x" initializer={1} refkey={xRefkey} />
|
|
607
655
|
<py.VariableDeclaration name="y" initializer={2} refkey={yRefkey} />
|
|
@@ -609,18 +657,20 @@ describe("with function calls", () => {
|
|
|
609
657
|
<py.MemberExpression.Part id="myFunction" />
|
|
610
658
|
<py.MemberExpression.Part args={[xRefkey, yRefkey]} />
|
|
611
659
|
</py.MemberExpression>
|
|
612
|
-
</py.StatementList
|
|
613
|
-
|
|
614
|
-
).
|
|
660
|
+
</py.StatementList>
|
|
661
|
+
</TestOutput>,
|
|
662
|
+
).toRenderTo(
|
|
663
|
+
`
|
|
615
664
|
x = 1
|
|
616
665
|
y = 2
|
|
617
666
|
myFunction(x, y)
|
|
618
|
-
|
|
667
|
+
`,
|
|
668
|
+
);
|
|
619
669
|
});
|
|
620
670
|
|
|
621
671
|
it("handles method calls correctly", () => {
|
|
622
672
|
expect(
|
|
623
|
-
|
|
673
|
+
<TestOutput>
|
|
624
674
|
<py.MemberExpression>
|
|
625
675
|
<py.MemberExpression.Part id="method1" />
|
|
626
676
|
<py.MemberExpression.Part args={[1, 2]} />
|
|
@@ -628,39 +678,45 @@ describe("with function calls", () => {
|
|
|
628
678
|
<py.MemberExpression.Part id="method2" />
|
|
629
679
|
<py.MemberExpression.Part args={[]} />
|
|
630
680
|
<py.MemberExpression.Part id="prop" />
|
|
631
|
-
</py.MemberExpression
|
|
632
|
-
|
|
633
|
-
).
|
|
681
|
+
</py.MemberExpression>
|
|
682
|
+
</TestOutput>,
|
|
683
|
+
).toRenderTo(
|
|
684
|
+
`
|
|
634
685
|
method1(1, 2)().method2().prop
|
|
635
|
-
|
|
686
|
+
`,
|
|
687
|
+
);
|
|
636
688
|
});
|
|
637
689
|
|
|
638
690
|
it("handles function calls correctly", () => {
|
|
639
691
|
expect(
|
|
640
|
-
|
|
692
|
+
<TestOutput>
|
|
641
693
|
<py.MemberExpression>
|
|
642
694
|
<py.MemberExpression.Part id="myFunction" />
|
|
643
695
|
<py.MemberExpression.Part args={[1, 2]} />
|
|
644
696
|
<py.MemberExpression.Part id="prop" />
|
|
645
|
-
</py.MemberExpression
|
|
646
|
-
|
|
647
|
-
).
|
|
697
|
+
</py.MemberExpression>
|
|
698
|
+
</TestOutput>,
|
|
699
|
+
).toRenderTo(
|
|
700
|
+
`
|
|
648
701
|
myFunction(1, 2).prop
|
|
649
|
-
|
|
702
|
+
`,
|
|
703
|
+
);
|
|
650
704
|
});
|
|
651
705
|
|
|
652
706
|
it("handles function calls correctly", () => {
|
|
653
707
|
expect(
|
|
654
|
-
|
|
708
|
+
<TestOutput>
|
|
655
709
|
<py.MemberExpression>
|
|
656
710
|
<py.MemberExpression.Part id="myFunction" />
|
|
657
711
|
<py.MemberExpression.Part args={[1, 2]} />
|
|
658
712
|
<py.MemberExpression.Part id="prop" />
|
|
659
|
-
</py.MemberExpression
|
|
660
|
-
|
|
661
|
-
).
|
|
713
|
+
</py.MemberExpression>
|
|
714
|
+
</TestOutput>,
|
|
715
|
+
).toRenderTo(
|
|
716
|
+
`
|
|
662
717
|
myFunction(1, 2).prop
|
|
663
|
-
|
|
718
|
+
`,
|
|
719
|
+
);
|
|
664
720
|
});
|
|
665
721
|
});
|
|
666
722
|
|
|
@@ -668,50 +724,50 @@ describe("formatting", () => {
|
|
|
668
724
|
describe("simple chains", () => {
|
|
669
725
|
it("just dots", () => {
|
|
670
726
|
expect(
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
<py.MemberExpression
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
),
|
|
684
|
-
).toBe(d`
|
|
727
|
+
<TestOutput>
|
|
728
|
+
<py.MemberExpression>
|
|
729
|
+
<py.MemberExpression.Part id="four" />
|
|
730
|
+
<py.MemberExpression.Part id="four" />
|
|
731
|
+
<py.MemberExpression.Part id="two" />
|
|
732
|
+
<py.MemberExpression.Part id="two" />
|
|
733
|
+
<py.MemberExpression.Part id="two" />
|
|
734
|
+
<py.MemberExpression.Part id="two" />
|
|
735
|
+
</py.MemberExpression>
|
|
736
|
+
</TestOutput>,
|
|
737
|
+
).toRenderTo(
|
|
738
|
+
`
|
|
685
739
|
four.four \\
|
|
686
740
|
.two.two \\
|
|
687
741
|
.two.two
|
|
688
|
-
|
|
742
|
+
`,
|
|
743
|
+
{ tabWidth: 4, printWidth: 14 },
|
|
744
|
+
);
|
|
689
745
|
});
|
|
690
746
|
|
|
691
747
|
it("bracket breaks", () => {
|
|
692
748
|
expect(
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
<py.MemberExpression
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
),
|
|
703
|
-
).toBe(d`
|
|
749
|
+
<TestOutput>
|
|
750
|
+
<py.MemberExpression>
|
|
751
|
+
<py.MemberExpression.Part id="obj" />
|
|
752
|
+
<py.MemberExpression.Part key={"property-name"} />
|
|
753
|
+
<py.MemberExpression.Part id="prop" />
|
|
754
|
+
</py.MemberExpression>
|
|
755
|
+
</TestOutput>,
|
|
756
|
+
).toRenderTo(
|
|
757
|
+
`
|
|
704
758
|
obj[
|
|
705
759
|
"property-name"
|
|
706
760
|
].prop
|
|
707
|
-
|
|
761
|
+
`,
|
|
762
|
+
{ tabWidth: 4, printWidth: 12 },
|
|
763
|
+
);
|
|
708
764
|
});
|
|
709
765
|
});
|
|
710
766
|
|
|
711
767
|
describe("call chains", () => {
|
|
712
768
|
it("renders multiple calls on the same line when there are no breaks and they fit", () => {
|
|
713
769
|
expect(
|
|
714
|
-
|
|
770
|
+
<TestOutput>
|
|
715
771
|
<py.MemberExpression>
|
|
716
772
|
<py.MemberExpression.Part id="z" />
|
|
717
773
|
<py.MemberExpression.Part id="object" />
|
|
@@ -720,11 +776,13 @@ describe("formatting", () => {
|
|
|
720
776
|
<py.MemberExpression.Part args />
|
|
721
777
|
<py.MemberExpression.Part id="optional" />
|
|
722
778
|
<py.MemberExpression.Part args />
|
|
723
|
-
</py.MemberExpression
|
|
724
|
-
|
|
725
|
-
).
|
|
779
|
+
</py.MemberExpression>
|
|
780
|
+
</TestOutput>,
|
|
781
|
+
).toRenderTo(
|
|
782
|
+
`
|
|
726
783
|
z.object().partial().optional()
|
|
727
|
-
|
|
784
|
+
`,
|
|
785
|
+
);
|
|
728
786
|
});
|
|
729
787
|
});
|
|
730
788
|
});
|