@alloy-js/csharp 0.18.0-dev.2 → 0.18.0-dev.20
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/LICENSE +7 -0
- package/dist/src/components/ClassDeclaration.d.ts +74 -0
- package/dist/src/components/ClassDeclaration.d.ts.map +1 -0
- package/dist/src/components/{Class.js → ClassDeclaration.js} +59 -32
- package/dist/src/components/ClassMethod.d.ts +25 -4
- package/dist/src/components/ClassMethod.d.ts.map +1 -1
- package/dist/src/components/ClassMethod.js +22 -3
- package/dist/src/components/EnumDeclaration.d.ts +34 -0
- package/dist/src/components/EnumDeclaration.d.ts.map +1 -0
- package/dist/src/components/{Enum.js → EnumDeclaration.js} +25 -5
- package/dist/src/components/Parameters.d.ts +6 -1
- package/dist/src/components/Parameters.d.ts.map +1 -1
- package/dist/src/components/Parameters.js +3 -2
- package/dist/src/components/doc/comment.d.ts +70 -0
- package/dist/src/components/doc/comment.d.ts.map +1 -0
- package/dist/src/components/doc/comment.js +88 -0
- package/dist/src/components/doc/comment.test.d.ts +2 -0
- package/dist/src/components/doc/comment.test.d.ts.map +1 -0
- package/dist/src/components/doc/comment.test.js +348 -0
- package/dist/src/components/doc/from-markdown.d.ts +6 -0
- package/dist/src/components/doc/from-markdown.d.ts.map +1 -0
- package/dist/src/components/doc/from-markdown.js +58 -0
- package/dist/src/components/doc/from-markdown.test.d.ts +2 -0
- package/dist/src/components/doc/from-markdown.test.d.ts.map +1 -0
- package/dist/src/components/doc/from-markdown.test.js +83 -0
- package/dist/src/components/index.d.ts +12 -3
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +13 -4
- package/dist/src/components/interface/declaration.d.ts +47 -0
- package/dist/src/components/interface/declaration.d.ts.map +1 -0
- package/dist/src/components/interface/declaration.js +77 -0
- package/dist/src/components/interface/declaration.test.d.ts +2 -0
- package/dist/src/components/interface/declaration.test.d.ts.map +1 -0
- package/dist/src/components/interface/declaration.test.js +153 -0
- package/dist/src/components/interface/method.d.ts +32 -0
- package/dist/src/components/interface/method.d.ts.map +1 -0
- package/dist/src/components/interface/method.js +69 -0
- package/dist/src/components/interface/method.test.d.ts +2 -0
- package/dist/src/components/interface/method.test.d.ts.map +1 -0
- package/dist/src/components/interface/method.test.js +254 -0
- package/dist/src/components/interface/property.d.ts +38 -0
- package/dist/src/components/interface/property.d.ts.map +1 -0
- package/dist/src/components/interface/property.js +67 -0
- package/dist/src/components/interface/property.test.d.ts +2 -0
- package/dist/src/components/interface/property.test.d.ts.map +1 -0
- package/dist/src/components/interface/property.test.js +165 -0
- package/dist/src/components/property/property.d.ts +57 -0
- package/dist/src/components/property/property.d.ts.map +1 -0
- package/dist/src/components/property/property.js +70 -0
- package/dist/src/components/property/property.test.d.ts +2 -0
- package/dist/src/components/property/property.test.d.ts.map +1 -0
- package/dist/src/components/property/property.test.js +218 -0
- package/dist/src/components/record/declaration.d.ts +35 -0
- package/dist/src/components/record/declaration.d.ts.map +1 -0
- package/dist/src/components/record/declaration.js +90 -0
- package/dist/src/components/record/declaration.test.d.ts +2 -0
- package/dist/src/components/record/declaration.test.d.ts.map +1 -0
- package/dist/src/components/record/declaration.test.js +94 -0
- package/dist/src/components/stc/index.d.ts +2 -2
- package/dist/src/components/stc/index.d.ts.map +1 -1
- package/dist/src/components/stc/index.js +2 -2
- package/dist/src/components/type-parameters/type-parameter-constraints.d.ts +8 -0
- package/dist/src/components/type-parameters/type-parameter-constraints.d.ts.map +1 -0
- package/dist/src/components/type-parameters/type-parameter-constraints.js +44 -0
- package/dist/src/components/type-parameters/type-parameter-constraints.test.d.ts +2 -0
- package/dist/src/components/type-parameters/type-parameter-constraints.test.d.ts.map +1 -0
- package/dist/src/components/type-parameters/type-parameter-constraints.test.js +67 -0
- package/dist/src/components/type-parameters/type-parameter.d.ts +20 -0
- package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -0
- package/dist/src/components/type-parameters/type-parameter.js +22 -0
- package/dist/src/components/type-parameters/type-parameters.d.ts +17 -0
- package/dist/src/components/type-parameters/type-parameters.d.ts.map +1 -0
- package/dist/src/components/type-parameters/type-parameters.js +54 -0
- package/dist/src/components/type-parameters/type-parameters.test.d.ts +2 -0
- package/dist/src/components/type-parameters/type-parameters.test.d.ts.map +1 -0
- package/dist/src/components/type-parameters/type-parameters.test.js +48 -0
- package/dist/src/components/var/declaration.d.ts +35 -0
- package/dist/src/components/var/declaration.d.ts.map +1 -0
- package/dist/src/components/var/declaration.js +40 -0
- package/dist/src/components/var/declaration.test.d.ts +2 -0
- package/dist/src/components/var/declaration.test.d.ts.map +1 -0
- package/dist/src/components/var/declaration.test.js +73 -0
- package/dist/src/modifiers.d.ts +10 -4
- package/dist/src/modifiers.d.ts.map +1 -1
- package/dist/src/modifiers.js +9 -32
- package/dist/src/name-policy.d.ts +1 -1
- package/dist/src/name-policy.d.ts.map +1 -1
- package/dist/src/name-policy.js +2 -0
- package/dist/test/class-declaration.test.d.ts +2 -0
- package/dist/test/class-declaration.test.d.ts.map +1 -0
- package/dist/test/class-declaration.test.js +463 -0
- package/dist/test/class-method.test.js +37 -14
- package/dist/test/enum.test.js +12 -12
- package/dist/test/namespace.test.js +8 -8
- package/dist/test/project-directory.test.d.ts +2 -0
- package/dist/test/project-directory.test.d.ts.map +1 -0
- package/dist/test/{projectdirectory.test.js → project-directory.test.js} +8 -8
- package/dist/test/sourcefile.test.js +4 -4
- package/dist/test/using.test.js +9 -9
- 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 +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +21 -21
- package/src/components/{Class.tsx → ClassDeclaration.tsx} +108 -43
- package/src/components/ClassMethod.tsx +53 -12
- package/src/components/{Enum.tsx → EnumDeclaration.tsx} +30 -6
- package/src/components/Parameters.tsx +10 -3
- package/src/components/doc/comment.test.tsx +337 -0
- package/src/components/doc/comment.tsx +152 -0
- package/src/components/doc/from-markdown.test.tsx +103 -0
- package/src/components/doc/from-markdown.tsx +58 -0
- package/src/components/index.ts +12 -3
- package/src/components/interface/declaration.test.tsx +143 -0
- package/src/components/interface/declaration.tsx +105 -0
- package/src/components/interface/method.test.tsx +250 -0
- package/src/components/interface/method.tsx +105 -0
- package/src/components/interface/property.test.tsx +144 -0
- package/src/components/interface/property.tsx +107 -0
- package/src/components/property/property.test.tsx +187 -0
- package/src/components/property/property.tsx +146 -0
- package/src/components/record/declaration.test.tsx +73 -0
- package/src/components/record/declaration.tsx +109 -0
- package/src/components/stc/index.ts +2 -2
- package/src/components/type-parameters/type-parameter-constraints.test.tsx +93 -0
- package/src/components/type-parameters/type-parameter-constraints.tsx +46 -0
- package/src/components/type-parameters/type-parameter.tsx +35 -0
- package/src/components/type-parameters/type-parameters.test.tsx +46 -0
- package/src/components/type-parameters/type-parameters.tsx +63 -0
- package/src/components/var/declaration.test.tsx +59 -0
- package/src/components/var/declaration.tsx +47 -0
- package/src/modifiers.ts +25 -42
- package/src/name-policy.ts +5 -0
- package/temp/api.json +5227 -685
- package/test/class-declaration.test.tsx +418 -0
- package/test/class-method.test.tsx +24 -14
- package/test/enum.test.tsx +11 -11
- package/test/namespace.test.tsx +4 -4
- package/test/{projectdirectory.test.tsx → project-directory.test.tsx} +4 -4
- package/test/sourcefile.test.tsx +2 -2
- package/test/using.test.tsx +9 -9
- package/test/vitest.setup.ts +1 -0
- package/vitest.config.ts +3 -0
- package/dist/src/components/Class.d.ts +0 -26
- package/dist/src/components/Class.d.ts.map +0 -1
- package/dist/src/components/Enum.d.ts +0 -15
- package/dist/src/components/Enum.d.ts.map +0 -1
- package/dist/test/class.test.d.ts +0 -2
- package/dist/test/class.test.d.ts.map +0 -1
- package/dist/test/class.test.js +0 -298
- package/dist/test/projectdirectory.test.d.ts +0 -2
- package/dist/test/projectdirectory.test.d.ts.map +0 -1
- package/test/class.test.tsx +0 -292
package/vitest.config.ts
CHANGED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import * as core from "@alloy-js/core";
|
|
2
|
-
import { AccessModifier } from "../modifiers.js";
|
|
3
|
-
import { ParameterProps } from "./Parameters.js";
|
|
4
|
-
export interface ClassProps extends Omit<core.DeclarationProps, "nameKind"> {
|
|
5
|
-
name: string;
|
|
6
|
-
refkey?: core.Refkey;
|
|
7
|
-
accessModifier?: AccessModifier;
|
|
8
|
-
typeParameters?: Record<string, core.Refkey>;
|
|
9
|
-
}
|
|
10
|
-
export declare function Class(props: ClassProps): core.Children;
|
|
11
|
-
export interface ClassConstructorProps {
|
|
12
|
-
accessModifier?: AccessModifier;
|
|
13
|
-
parameters?: Array<ParameterProps>;
|
|
14
|
-
refkey?: core.Refkey;
|
|
15
|
-
symbol?: core.OutputSymbol;
|
|
16
|
-
children?: core.Children;
|
|
17
|
-
}
|
|
18
|
-
export declare function ClassConstructor(props: ClassConstructorProps): core.Children;
|
|
19
|
-
export interface ClassMemberProps {
|
|
20
|
-
name: string;
|
|
21
|
-
type: core.Children;
|
|
22
|
-
accessModifier?: AccessModifier;
|
|
23
|
-
refkey?: core.Refkey;
|
|
24
|
-
}
|
|
25
|
-
export declare function ClassMember(props: ClassMemberProps): core.Children;
|
|
26
|
-
//# sourceMappingURL=Class.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../../../src/components/Class.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAC;AAKpE,OAAO,EAAE,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CAC9C;AAGD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,iBAoDtC;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;IAC3B,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CAC1B;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,iBAiC5D;AAGD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;CACtB;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,iBAwBlD"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as core from "@alloy-js/core";
|
|
2
|
-
import { AccessModifier } from "../modifiers.js";
|
|
3
|
-
export interface EnumProps {
|
|
4
|
-
name: string;
|
|
5
|
-
refkey?: core.Refkey;
|
|
6
|
-
children?: core.Children;
|
|
7
|
-
accessModifier?: AccessModifier;
|
|
8
|
-
}
|
|
9
|
-
export declare function Enum(props: EnumProps): core.Children;
|
|
10
|
-
export interface EnumMemberProps {
|
|
11
|
-
name: string;
|
|
12
|
-
refkey?: core.Refkey;
|
|
13
|
-
}
|
|
14
|
-
export declare function EnumMember(props: EnumMemberProps): core.Children;
|
|
15
|
-
//# sourceMappingURL=Enum.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Enum.d.ts","sourceRoot":"","sources":["../../../src/components/Enum.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAC;AAOpE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAGD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,iBA8BpC;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;CACtB;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,iBAmBhD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"class.test.d.ts","sourceRoot":"","sources":["../../test/class.test.tsx"],"names":[],"mappings":""}
|
package/dist/test/class.test.js
DELETED
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
-
import * as core from "@alloy-js/core";
|
|
3
|
-
import * as coretest from "@alloy-js/core/testing";
|
|
4
|
-
import { expect, it } from "vitest";
|
|
5
|
-
import * as csharp from "../src/index.js";
|
|
6
|
-
import * as utils from "./utils.js";
|
|
7
|
-
it("declares class with no members", () => {
|
|
8
|
-
const res = utils.toSourceText(_$createComponent(csharp.Class, {
|
|
9
|
-
accessModifier: "public",
|
|
10
|
-
name: "TestClass"
|
|
11
|
-
}));
|
|
12
|
-
expect(res).toBe(coretest.d`
|
|
13
|
-
namespace TestCode
|
|
14
|
-
{
|
|
15
|
-
public class TestClass;
|
|
16
|
-
}
|
|
17
|
-
`);
|
|
18
|
-
});
|
|
19
|
-
it("declares class with some members", () => {
|
|
20
|
-
const res = utils.toSourceText(_$createComponent(csharp.Class, {
|
|
21
|
-
accessModifier: "public",
|
|
22
|
-
name: "TestClass",
|
|
23
|
-
get children() {
|
|
24
|
-
return _$createComponent(core.StatementList, {
|
|
25
|
-
get children() {
|
|
26
|
-
return [_$createComponent(csharp.ClassMember, {
|
|
27
|
-
accessModifier: "public",
|
|
28
|
-
name: "MemberOne",
|
|
29
|
-
type: "string"
|
|
30
|
-
}), _$createComponent(csharp.ClassMember, {
|
|
31
|
-
accessModifier: "private",
|
|
32
|
-
name: "MemberTwo",
|
|
33
|
-
type: "int"
|
|
34
|
-
})];
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}));
|
|
39
|
-
expect(res).toBe(coretest.d`
|
|
40
|
-
namespace TestCode
|
|
41
|
-
{
|
|
42
|
-
public class TestClass
|
|
43
|
-
{
|
|
44
|
-
public string MemberOne;
|
|
45
|
-
private int memberTwo;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
`);
|
|
49
|
-
});
|
|
50
|
-
it("declares class with some methods", () => {
|
|
51
|
-
const res = utils.toSourceText(_$createComponent(csharp.Class, {
|
|
52
|
-
accessModifier: "public",
|
|
53
|
-
name: "TestClass",
|
|
54
|
-
get children() {
|
|
55
|
-
return _$createComponent(core.List, {
|
|
56
|
-
get children() {
|
|
57
|
-
return [_$createComponent(csharp.ClassMethod, {
|
|
58
|
-
accessModifier: "public",
|
|
59
|
-
name: "MethodOne"
|
|
60
|
-
}), _$createComponent(csharp.ClassMethod, {
|
|
61
|
-
accessModifier: "private",
|
|
62
|
-
methodModifier: "virtual",
|
|
63
|
-
name: "MethodTwo"
|
|
64
|
-
})];
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}));
|
|
69
|
-
expect(res).toBe(coretest.d`
|
|
70
|
-
namespace TestCode
|
|
71
|
-
{
|
|
72
|
-
public class TestClass
|
|
73
|
-
{
|
|
74
|
-
public void MethodOne() {}
|
|
75
|
-
private virtual void MethodTwo() {}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
`);
|
|
79
|
-
});
|
|
80
|
-
it("uses refkeys for members, params, and return type", () => {
|
|
81
|
-
const inputTypeRefkey = core.refkey();
|
|
82
|
-
const testResultTypeRefkey = core.refkey();
|
|
83
|
-
const enumTypeRefkey = core.refkey();
|
|
84
|
-
const params = [{
|
|
85
|
-
name: "IntParam",
|
|
86
|
-
type: "int"
|
|
87
|
-
}, {
|
|
88
|
-
name: "BodyParam",
|
|
89
|
-
type: inputTypeRefkey
|
|
90
|
-
}];
|
|
91
|
-
const res = core.render(_$createComponent(core.Output, {
|
|
92
|
-
get namePolicy() {
|
|
93
|
-
return csharp.createCSharpNamePolicy();
|
|
94
|
-
},
|
|
95
|
-
get children() {
|
|
96
|
-
return _$createComponent(csharp.Namespace, {
|
|
97
|
-
name: "TestCode",
|
|
98
|
-
get children() {
|
|
99
|
-
return _$createComponent(csharp.SourceFile, {
|
|
100
|
-
path: "Test.cs",
|
|
101
|
-
get children() {
|
|
102
|
-
return [_$createComponent(csharp.Enum, {
|
|
103
|
-
accessModifier: "public",
|
|
104
|
-
name: "TestEnum",
|
|
105
|
-
refkey: enumTypeRefkey,
|
|
106
|
-
get children() {
|
|
107
|
-
return _$createComponent(core.List, {
|
|
108
|
-
comma: true,
|
|
109
|
-
hardline: true,
|
|
110
|
-
get children() {
|
|
111
|
-
return [_$createComponent(csharp.EnumMember, {
|
|
112
|
-
name: "One"
|
|
113
|
-
}), _$createComponent(csharp.EnumMember, {
|
|
114
|
-
name: "Two"
|
|
115
|
-
})];
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}), _$createIntrinsic("hbr", {}), _$createComponent(csharp.Class, {
|
|
120
|
-
accessModifier: "public",
|
|
121
|
-
name: "TestInput",
|
|
122
|
-
refkey: inputTypeRefkey
|
|
123
|
-
}), _$createIntrinsic("hbr", {}), _$createComponent(csharp.Class, {
|
|
124
|
-
accessModifier: "public",
|
|
125
|
-
name: "TestResult",
|
|
126
|
-
refkey: testResultTypeRefkey
|
|
127
|
-
}), _$createIntrinsic("hbr", {}), _$createComponent(csharp.Class, {
|
|
128
|
-
accessModifier: "public",
|
|
129
|
-
name: "TestClass",
|
|
130
|
-
get children() {
|
|
131
|
-
return [_$createComponent(csharp.ClassMember, {
|
|
132
|
-
accessModifier: "private",
|
|
133
|
-
name: "MemberOne",
|
|
134
|
-
type: enumTypeRefkey
|
|
135
|
-
}), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.ClassMethod, {
|
|
136
|
-
accessModifier: "public",
|
|
137
|
-
name: "MethodOne",
|
|
138
|
-
parameters: params,
|
|
139
|
-
returns: testResultTypeRefkey,
|
|
140
|
-
get children() {
|
|
141
|
-
return ["return new ", testResultTypeRefkey, "();"];
|
|
142
|
-
}
|
|
143
|
-
})];
|
|
144
|
-
}
|
|
145
|
-
})];
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
}));
|
|
152
|
-
expect(res.contents[0].contents).toBe(coretest.d`
|
|
153
|
-
namespace TestCode
|
|
154
|
-
{
|
|
155
|
-
public enum TestEnum
|
|
156
|
-
{
|
|
157
|
-
One,
|
|
158
|
-
Two
|
|
159
|
-
}
|
|
160
|
-
public class TestInput;
|
|
161
|
-
public class TestResult;
|
|
162
|
-
public class TestClass
|
|
163
|
-
{
|
|
164
|
-
private TestEnum memberOne;
|
|
165
|
-
public TestResult MethodOne(int intParam, TestInput bodyParam)
|
|
166
|
-
{
|
|
167
|
-
return new TestResult();
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
`);
|
|
172
|
-
});
|
|
173
|
-
it("declares class with generic parameters", () => {
|
|
174
|
-
const typeParameters = {
|
|
175
|
-
T: core.refkey(),
|
|
176
|
-
U: core.refkey()
|
|
177
|
-
};
|
|
178
|
-
const res = utils.toSourceText(_$createComponent(csharp.Class, {
|
|
179
|
-
accessModifier: "public",
|
|
180
|
-
name: "TestClass",
|
|
181
|
-
typeParameters: typeParameters,
|
|
182
|
-
get children() {
|
|
183
|
-
return [_$createComponent(csharp.ClassMember, {
|
|
184
|
-
accessModifier: "public",
|
|
185
|
-
name: "memberOne",
|
|
186
|
-
get type() {
|
|
187
|
-
return typeParameters.T;
|
|
188
|
-
}
|
|
189
|
-
}), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.ClassMember, {
|
|
190
|
-
accessModifier: "private",
|
|
191
|
-
name: "memberTwo",
|
|
192
|
-
get type() {
|
|
193
|
-
return typeParameters.U;
|
|
194
|
-
}
|
|
195
|
-
}), ";"];
|
|
196
|
-
}
|
|
197
|
-
}));
|
|
198
|
-
expect(res).toBe(coretest.d`
|
|
199
|
-
namespace TestCode
|
|
200
|
-
{
|
|
201
|
-
public class TestClass<T, U>
|
|
202
|
-
{
|
|
203
|
-
public T MemberOne;
|
|
204
|
-
private U memberTwo;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
`);
|
|
208
|
-
});
|
|
209
|
-
it("declares class with invalid members", () => {
|
|
210
|
-
const decl = _$createComponent(csharp.Class, {
|
|
211
|
-
accessModifier: "public",
|
|
212
|
-
name: "TestClass",
|
|
213
|
-
get children() {
|
|
214
|
-
return [_$createComponent(csharp.EnumMember, {
|
|
215
|
-
name: "One"
|
|
216
|
-
}), ",", _$createIntrinsic("hbr", {}), _$createComponent(csharp.EnumMember, {
|
|
217
|
-
name: "Two"
|
|
218
|
-
})];
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
expect(() => utils.toSourceText(decl)).toThrow("can't define an enum member outside of an enum-decl scope");
|
|
222
|
-
});
|
|
223
|
-
it("declares class with constructor", () => {
|
|
224
|
-
const res = utils.toSourceText(_$createComponent(csharp.Class, {
|
|
225
|
-
accessModifier: "public",
|
|
226
|
-
name: "TestClass",
|
|
227
|
-
get children() {
|
|
228
|
-
return _$createComponent(csharp.ClassConstructor, {
|
|
229
|
-
accessModifier: "public"
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
}));
|
|
233
|
-
expect(res).toBe(coretest.d`
|
|
234
|
-
namespace TestCode
|
|
235
|
-
{
|
|
236
|
-
public class TestClass
|
|
237
|
-
{
|
|
238
|
-
public TestClass() {}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
`);
|
|
242
|
-
});
|
|
243
|
-
it("declares class with constructor params and assigns values to fields", () => {
|
|
244
|
-
const thisNameRefkey = core.refkey();
|
|
245
|
-
const thisSizeRefkey = core.refkey();
|
|
246
|
-
const paramNameRefkey = core.refkey();
|
|
247
|
-
const paramSizeRefkey = core.refkey();
|
|
248
|
-
const ctorParams = [{
|
|
249
|
-
name: "name",
|
|
250
|
-
type: "string",
|
|
251
|
-
refkey: paramNameRefkey
|
|
252
|
-
}, {
|
|
253
|
-
name: "size",
|
|
254
|
-
type: "int",
|
|
255
|
-
refkey: paramSizeRefkey
|
|
256
|
-
}];
|
|
257
|
-
const res = utils.toSourceText(_$createComponent(csharp.Class, {
|
|
258
|
-
accessModifier: "public",
|
|
259
|
-
name: "TestClass",
|
|
260
|
-
get children() {
|
|
261
|
-
return [_$createComponent(csharp.ClassMember, {
|
|
262
|
-
accessModifier: "private",
|
|
263
|
-
name: "name",
|
|
264
|
-
type: "string",
|
|
265
|
-
refkey: thisNameRefkey
|
|
266
|
-
}), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.ClassMember, {
|
|
267
|
-
accessModifier: "private",
|
|
268
|
-
name: "size",
|
|
269
|
-
type: "int",
|
|
270
|
-
refkey: thisSizeRefkey
|
|
271
|
-
}), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.ClassConstructor, {
|
|
272
|
-
accessModifier: "public",
|
|
273
|
-
parameters: ctorParams,
|
|
274
|
-
get children() {
|
|
275
|
-
return [thisNameRefkey, " = ", paramNameRefkey, ";", _$createIntrinsic("hbr", {}), thisSizeRefkey, " = ", paramSizeRefkey, ";"];
|
|
276
|
-
}
|
|
277
|
-
})];
|
|
278
|
-
}
|
|
279
|
-
}));
|
|
280
|
-
|
|
281
|
-
// TODO: assignments to members should have this. prefix
|
|
282
|
-
// e.g. this.name = name;
|
|
283
|
-
expect(res).toBe(coretest.d`
|
|
284
|
-
namespace TestCode
|
|
285
|
-
{
|
|
286
|
-
public class TestClass
|
|
287
|
-
{
|
|
288
|
-
private string name;
|
|
289
|
-
private int size;
|
|
290
|
-
public TestClass(string name, int size)
|
|
291
|
-
{
|
|
292
|
-
name = name;
|
|
293
|
-
size = size;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
`);
|
|
298
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projectdirectory.test.d.ts","sourceRoot":"","sources":["../../test/projectdirectory.test.tsx"],"names":[],"mappings":""}
|
package/test/class.test.tsx
DELETED
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
import * as core from "@alloy-js/core";
|
|
2
|
-
import * as coretest from "@alloy-js/core/testing";
|
|
3
|
-
import { expect, it } from "vitest";
|
|
4
|
-
import * as csharp from "../src/index.js";
|
|
5
|
-
import * as utils from "./utils.js";
|
|
6
|
-
|
|
7
|
-
it("declares class with no members", () => {
|
|
8
|
-
const res = utils.toSourceText(
|
|
9
|
-
<csharp.Class accessModifier="public" name="TestClass" />,
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
expect(res).toBe(coretest.d`
|
|
13
|
-
namespace TestCode
|
|
14
|
-
{
|
|
15
|
-
public class TestClass;
|
|
16
|
-
}
|
|
17
|
-
`);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("declares class with some members", () => {
|
|
21
|
-
const res = utils.toSourceText(
|
|
22
|
-
<csharp.Class accessModifier="public" name="TestClass">
|
|
23
|
-
<core.StatementList>
|
|
24
|
-
<csharp.ClassMember
|
|
25
|
-
accessModifier="public"
|
|
26
|
-
name="MemberOne"
|
|
27
|
-
type="string"
|
|
28
|
-
/>
|
|
29
|
-
<csharp.ClassMember
|
|
30
|
-
accessModifier="private"
|
|
31
|
-
name="MemberTwo"
|
|
32
|
-
type="int"
|
|
33
|
-
/>
|
|
34
|
-
</core.StatementList>
|
|
35
|
-
</csharp.Class>,
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
expect(res).toBe(coretest.d`
|
|
39
|
-
namespace TestCode
|
|
40
|
-
{
|
|
41
|
-
public class TestClass
|
|
42
|
-
{
|
|
43
|
-
public string MemberOne;
|
|
44
|
-
private int memberTwo;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
`);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("declares class with some methods", () => {
|
|
51
|
-
const res = utils.toSourceText(
|
|
52
|
-
<csharp.Class accessModifier="public" name="TestClass">
|
|
53
|
-
<core.List>
|
|
54
|
-
<csharp.ClassMethod accessModifier="public" name="MethodOne" />
|
|
55
|
-
<csharp.ClassMethod
|
|
56
|
-
accessModifier="private"
|
|
57
|
-
methodModifier="virtual"
|
|
58
|
-
name="MethodTwo"
|
|
59
|
-
/>
|
|
60
|
-
</core.List>
|
|
61
|
-
</csharp.Class>,
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
expect(res).toBe(coretest.d`
|
|
65
|
-
namespace TestCode
|
|
66
|
-
{
|
|
67
|
-
public class TestClass
|
|
68
|
-
{
|
|
69
|
-
public void MethodOne() {}
|
|
70
|
-
private virtual void MethodTwo() {}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
`);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it("uses refkeys for members, params, and return type", () => {
|
|
77
|
-
const inputTypeRefkey = core.refkey();
|
|
78
|
-
const testResultTypeRefkey = core.refkey();
|
|
79
|
-
const enumTypeRefkey = core.refkey();
|
|
80
|
-
|
|
81
|
-
const params = [
|
|
82
|
-
{
|
|
83
|
-
name: "IntParam",
|
|
84
|
-
type: "int",
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
name: "BodyParam",
|
|
88
|
-
type: inputTypeRefkey,
|
|
89
|
-
},
|
|
90
|
-
];
|
|
91
|
-
|
|
92
|
-
const res = core.render(
|
|
93
|
-
<core.Output namePolicy={csharp.createCSharpNamePolicy()}>
|
|
94
|
-
<csharp.Namespace name="TestCode">
|
|
95
|
-
<csharp.SourceFile path="Test.cs">
|
|
96
|
-
<csharp.Enum
|
|
97
|
-
accessModifier="public"
|
|
98
|
-
name="TestEnum"
|
|
99
|
-
refkey={enumTypeRefkey}
|
|
100
|
-
>
|
|
101
|
-
<core.List comma hardline>
|
|
102
|
-
<csharp.EnumMember name="One" />
|
|
103
|
-
<csharp.EnumMember name="Two" />
|
|
104
|
-
</core.List>
|
|
105
|
-
</csharp.Enum>
|
|
106
|
-
<hbr />
|
|
107
|
-
<csharp.Class
|
|
108
|
-
accessModifier="public"
|
|
109
|
-
name="TestInput"
|
|
110
|
-
refkey={inputTypeRefkey}
|
|
111
|
-
/>
|
|
112
|
-
<hbr />
|
|
113
|
-
<csharp.Class
|
|
114
|
-
accessModifier="public"
|
|
115
|
-
name="TestResult"
|
|
116
|
-
refkey={testResultTypeRefkey}
|
|
117
|
-
/>
|
|
118
|
-
<hbr />
|
|
119
|
-
<csharp.Class accessModifier="public" name="TestClass">
|
|
120
|
-
<csharp.ClassMember
|
|
121
|
-
accessModifier="private"
|
|
122
|
-
name="MemberOne"
|
|
123
|
-
type={enumTypeRefkey}
|
|
124
|
-
/>
|
|
125
|
-
;
|
|
126
|
-
<hbr />
|
|
127
|
-
<csharp.ClassMethod
|
|
128
|
-
accessModifier="public"
|
|
129
|
-
name="MethodOne"
|
|
130
|
-
parameters={params}
|
|
131
|
-
returns={testResultTypeRefkey}
|
|
132
|
-
>
|
|
133
|
-
return new {testResultTypeRefkey}();
|
|
134
|
-
</csharp.ClassMethod>
|
|
135
|
-
</csharp.Class>
|
|
136
|
-
</csharp.SourceFile>
|
|
137
|
-
</csharp.Namespace>
|
|
138
|
-
</core.Output>,
|
|
139
|
-
);
|
|
140
|
-
|
|
141
|
-
expect(res.contents[0].contents).toBe(coretest.d`
|
|
142
|
-
namespace TestCode
|
|
143
|
-
{
|
|
144
|
-
public enum TestEnum
|
|
145
|
-
{
|
|
146
|
-
One,
|
|
147
|
-
Two
|
|
148
|
-
}
|
|
149
|
-
public class TestInput;
|
|
150
|
-
public class TestResult;
|
|
151
|
-
public class TestClass
|
|
152
|
-
{
|
|
153
|
-
private TestEnum memberOne;
|
|
154
|
-
public TestResult MethodOne(int intParam, TestInput bodyParam)
|
|
155
|
-
{
|
|
156
|
-
return new TestResult();
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
`);
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it("declares class with generic parameters", () => {
|
|
164
|
-
const typeParameters = {
|
|
165
|
-
T: core.refkey(),
|
|
166
|
-
U: core.refkey(),
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
const res = utils.toSourceText(
|
|
170
|
-
<csharp.Class
|
|
171
|
-
accessModifier="public"
|
|
172
|
-
name="TestClass"
|
|
173
|
-
typeParameters={typeParameters}
|
|
174
|
-
>
|
|
175
|
-
<csharp.ClassMember
|
|
176
|
-
accessModifier="public"
|
|
177
|
-
name="memberOne"
|
|
178
|
-
type={typeParameters.T}
|
|
179
|
-
/>
|
|
180
|
-
;<hbr />
|
|
181
|
-
<csharp.ClassMember
|
|
182
|
-
accessModifier="private"
|
|
183
|
-
name="memberTwo"
|
|
184
|
-
type={typeParameters.U}
|
|
185
|
-
/>
|
|
186
|
-
;
|
|
187
|
-
</csharp.Class>,
|
|
188
|
-
);
|
|
189
|
-
|
|
190
|
-
expect(res).toBe(coretest.d`
|
|
191
|
-
namespace TestCode
|
|
192
|
-
{
|
|
193
|
-
public class TestClass<T, U>
|
|
194
|
-
{
|
|
195
|
-
public T MemberOne;
|
|
196
|
-
private U memberTwo;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
`);
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
it("declares class with invalid members", () => {
|
|
203
|
-
const decl = (
|
|
204
|
-
<csharp.Class accessModifier="public" name="TestClass">
|
|
205
|
-
<csharp.EnumMember name="One" />,<hbr />
|
|
206
|
-
<csharp.EnumMember name="Two" />
|
|
207
|
-
</csharp.Class>
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
expect(() => utils.toSourceText(decl)).toThrow(
|
|
211
|
-
"can't define an enum member outside of an enum-decl scope",
|
|
212
|
-
);
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
it("declares class with constructor", () => {
|
|
216
|
-
const res = utils.toSourceText(
|
|
217
|
-
<csharp.Class accessModifier="public" name="TestClass">
|
|
218
|
-
<csharp.ClassConstructor accessModifier="public" />
|
|
219
|
-
</csharp.Class>,
|
|
220
|
-
);
|
|
221
|
-
|
|
222
|
-
expect(res).toBe(coretest.d`
|
|
223
|
-
namespace TestCode
|
|
224
|
-
{
|
|
225
|
-
public class TestClass
|
|
226
|
-
{
|
|
227
|
-
public TestClass() {}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
`);
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
it("declares class with constructor params and assigns values to fields", () => {
|
|
234
|
-
const thisNameRefkey = core.refkey();
|
|
235
|
-
const thisSizeRefkey = core.refkey();
|
|
236
|
-
const paramNameRefkey = core.refkey();
|
|
237
|
-
const paramSizeRefkey = core.refkey();
|
|
238
|
-
|
|
239
|
-
const ctorParams = [
|
|
240
|
-
{
|
|
241
|
-
name: "name",
|
|
242
|
-
type: "string",
|
|
243
|
-
refkey: paramNameRefkey,
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
name: "size",
|
|
247
|
-
type: "int",
|
|
248
|
-
refkey: paramSizeRefkey,
|
|
249
|
-
},
|
|
250
|
-
];
|
|
251
|
-
|
|
252
|
-
const res = utils.toSourceText(
|
|
253
|
-
<csharp.Class accessModifier="public" name="TestClass">
|
|
254
|
-
<csharp.ClassMember
|
|
255
|
-
accessModifier="private"
|
|
256
|
-
name="name"
|
|
257
|
-
type="string"
|
|
258
|
-
refkey={thisNameRefkey}
|
|
259
|
-
/>
|
|
260
|
-
;<hbr />
|
|
261
|
-
<csharp.ClassMember
|
|
262
|
-
accessModifier="private"
|
|
263
|
-
name="size"
|
|
264
|
-
type="int"
|
|
265
|
-
refkey={thisSizeRefkey}
|
|
266
|
-
/>
|
|
267
|
-
;<hbr />
|
|
268
|
-
<csharp.ClassConstructor accessModifier="public" parameters={ctorParams}>
|
|
269
|
-
{thisNameRefkey} = {paramNameRefkey};<hbr />
|
|
270
|
-
{thisSizeRefkey} = {paramSizeRefkey};
|
|
271
|
-
</csharp.ClassConstructor>
|
|
272
|
-
</csharp.Class>,
|
|
273
|
-
);
|
|
274
|
-
|
|
275
|
-
// TODO: assignments to members should have this. prefix
|
|
276
|
-
// e.g. this.name = name;
|
|
277
|
-
expect(res).toBe(coretest.d`
|
|
278
|
-
namespace TestCode
|
|
279
|
-
{
|
|
280
|
-
public class TestClass
|
|
281
|
-
{
|
|
282
|
-
private string name;
|
|
283
|
-
private int size;
|
|
284
|
-
public TestClass(string name, int size)
|
|
285
|
-
{
|
|
286
|
-
name = name;
|
|
287
|
-
size = size;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
`);
|
|
292
|
-
});
|