@alloy-js/csharp 0.20.0-dev.3 → 0.20.0-dev.4

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.
Files changed (249) hide show
  1. package/dist/src/components/Declaration.d.ts +2 -2
  2. package/dist/src/components/Declaration.d.ts.map +1 -1
  3. package/dist/src/components/Declaration.js +3 -13
  4. package/dist/src/components/Reference.d.ts.map +1 -1
  5. package/dist/src/components/Reference.js +5 -1
  6. package/dist/src/components/SourceFile.d.ts +8 -9
  7. package/dist/src/components/SourceFile.d.ts.map +1 -1
  8. package/dist/src/components/SourceFile.js +69 -45
  9. package/dist/src/components/UsingDirective.d.ts +5 -1
  10. package/dist/src/components/UsingDirective.d.ts.map +1 -1
  11. package/dist/src/components/UsingDirective.js +3 -1
  12. package/dist/src/components/class/declaration.d.ts +2 -2
  13. package/dist/src/components/class/declaration.d.ts.map +1 -1
  14. package/dist/src/components/class/declaration.js +18 -32
  15. package/dist/src/components/class/declaration.test.js +171 -193
  16. package/dist/src/components/constructor/constructor.d.ts.map +1 -1
  17. package/dist/src/components/constructor/constructor.js +11 -16
  18. package/dist/src/components/constructor/constructor.test.js +10 -19
  19. package/dist/src/components/{EnumDeclaration.d.ts → enum/declaration.d.ts} +6 -11
  20. package/dist/src/components/enum/declaration.d.ts.map +1 -0
  21. package/dist/src/components/enum/declaration.js +54 -0
  22. package/dist/src/components/enum/declaration.ref.test.d.ts +2 -0
  23. package/dist/src/components/enum/declaration.ref.test.d.ts.map +1 -0
  24. package/dist/src/components/enum/declaration.ref.test.js +120 -0
  25. package/dist/src/components/enum/declaration.test.d.ts +2 -0
  26. package/dist/src/components/enum/declaration.test.d.ts.map +1 -0
  27. package/dist/src/components/enum/declaration.test.js +39 -0
  28. package/dist/src/components/enum/member.d.ts +7 -0
  29. package/dist/src/components/enum/member.d.ts.map +1 -0
  30. package/dist/src/components/enum/member.js +29 -0
  31. package/dist/src/components/enum/member.test.d.ts +2 -0
  32. package/dist/src/components/enum/member.test.d.ts.map +1 -0
  33. package/dist/src/components/enum/member.test.js +28 -0
  34. package/dist/src/components/field/field.d.ts.map +1 -1
  35. package/dist/src/components/field/field.js +9 -14
  36. package/dist/src/components/field/field.test.js +7 -7
  37. package/dist/src/components/index.d.ts +5 -2
  38. package/dist/src/components/index.d.ts.map +1 -1
  39. package/dist/src/components/index.js +5 -2
  40. package/dist/src/components/interface/declaration.d.ts.map +1 -1
  41. package/dist/src/components/interface/declaration.js +19 -21
  42. package/dist/src/components/interface/declaration.test.js +26 -35
  43. package/dist/src/components/interface/method.d.ts.map +1 -1
  44. package/dist/src/components/interface/method.js +7 -15
  45. package/dist/src/components/interface/method.test.js +38 -47
  46. package/dist/src/components/interface/property.d.ts.map +1 -1
  47. package/dist/src/components/interface/property.js +21 -36
  48. package/dist/src/components/interface/property.test.js +11 -11
  49. package/dist/src/components/lexical-scope.d.ts +8 -0
  50. package/dist/src/components/lexical-scope.d.ts.map +1 -0
  51. package/dist/src/components/lexical-scope.js +24 -0
  52. package/dist/src/components/method/method.d.ts +5 -2
  53. package/dist/src/components/method/method.d.ts.map +1 -1
  54. package/dist/src/components/method/method.js +7 -13
  55. package/dist/src/components/method/method.test.js +11 -11
  56. package/dist/src/components/method-scope.d.ts +8 -0
  57. package/dist/src/components/method-scope.d.ts.map +1 -0
  58. package/dist/src/components/method-scope.js +24 -0
  59. package/dist/src/components/namespace-scopes.d.ts +13 -0
  60. package/dist/src/components/namespace-scopes.d.ts.map +1 -0
  61. package/dist/src/components/namespace-scopes.js +44 -0
  62. package/dist/src/components/namespace.d.ts +7 -0
  63. package/dist/src/components/namespace.d.ts.map +1 -0
  64. package/dist/src/components/namespace.js +46 -0
  65. package/dist/src/components/namespace.ref.test.d.ts +2 -0
  66. package/dist/src/components/namespace.ref.test.d.ts.map +1 -0
  67. package/dist/src/components/namespace.ref.test.js +181 -0
  68. package/dist/src/components/namespace.test.d.ts.map +1 -0
  69. package/dist/src/components/namespace.test.js +78 -0
  70. package/dist/src/components/parameters/parameters.d.ts +2 -2
  71. package/dist/src/components/parameters/parameters.d.ts.map +1 -1
  72. package/dist/src/components/parameters/parameters.js +12 -11
  73. package/dist/src/components/parameters/parameters.test.d.ts +2 -0
  74. package/dist/src/components/parameters/parameters.test.d.ts.map +1 -0
  75. package/dist/src/components/parameters/parameters.test.js +87 -0
  76. package/dist/src/components/property/property.d.ts.map +1 -1
  77. package/dist/src/components/property/property.js +21 -36
  78. package/dist/src/components/property/property.test.js +14 -14
  79. package/dist/src/components/record/declaration.d.ts.map +1 -1
  80. package/dist/src/components/record/declaration.js +8 -12
  81. package/dist/src/components/record/declaration.test.js +6 -13
  82. package/dist/src/components/struct/declaration.d.ts.map +1 -1
  83. package/dist/src/components/struct/declaration.js +4 -6
  84. package/dist/src/components/struct/declaration.test.js +30 -39
  85. package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -1
  86. package/dist/src/components/type-parameters/type-parameter.js +7 -10
  87. package/dist/src/components/type-parameters/type-parameters.test.js +3 -3
  88. package/dist/src/components/var/declaration.d.ts.map +1 -1
  89. package/dist/src/components/var/declaration.js +6 -8
  90. package/dist/src/components/var/declaration.test.js +11 -20
  91. package/dist/src/contexts/global-namespace.d.ts +5 -0
  92. package/dist/src/contexts/global-namespace.d.ts.map +1 -0
  93. package/dist/src/contexts/global-namespace.js +24 -0
  94. package/dist/src/contexts/namespace.d.ts +8 -0
  95. package/dist/src/contexts/namespace.d.ts.map +1 -0
  96. package/dist/src/contexts/namespace.js +5 -0
  97. package/dist/src/index.d.ts +1 -0
  98. package/dist/src/index.d.ts.map +1 -1
  99. package/dist/src/index.js +1 -0
  100. package/dist/src/modifiers.d.ts +11 -0
  101. package/dist/src/modifiers.d.ts.map +1 -1
  102. package/dist/src/scopes/class.d.ts +10 -0
  103. package/dist/src/scopes/class.d.ts.map +1 -0
  104. package/dist/src/scopes/class.js +10 -0
  105. package/dist/src/scopes/contexts.d.ts +9 -0
  106. package/dist/src/scopes/contexts.d.ts.map +1 -0
  107. package/dist/src/scopes/contexts.js +33 -0
  108. package/dist/src/scopes/csharp.d.ts +8 -0
  109. package/dist/src/scopes/csharp.d.ts.map +1 -0
  110. package/dist/src/scopes/csharp.js +11 -0
  111. package/dist/src/scopes/factories.d.ts +9 -0
  112. package/dist/src/scopes/factories.d.ts.map +1 -0
  113. package/dist/src/scopes/factories.js +23 -0
  114. package/dist/src/scopes/index.d.ts +10 -0
  115. package/dist/src/scopes/index.d.ts.map +1 -0
  116. package/dist/src/scopes/index.js +9 -0
  117. package/dist/src/scopes/lexical.d.ts +7 -0
  118. package/dist/src/scopes/lexical.d.ts.map +1 -0
  119. package/dist/src/scopes/lexical.js +7 -0
  120. package/dist/src/scopes/method.d.ts +9 -0
  121. package/dist/src/scopes/method.d.ts.map +1 -0
  122. package/dist/src/scopes/method.js +13 -0
  123. package/dist/src/scopes/named-type.d.ts +22 -0
  124. package/dist/src/scopes/named-type.d.ts.map +1 -0
  125. package/dist/src/scopes/named-type.js +32 -0
  126. package/dist/src/scopes/namespace.d.ts +11 -0
  127. package/dist/src/scopes/namespace.d.ts.map +1 -0
  128. package/dist/src/scopes/namespace.js +38 -0
  129. package/dist/src/scopes/source-file.d.ts +16 -0
  130. package/dist/src/scopes/source-file.d.ts.map +1 -0
  131. package/dist/src/scopes/source-file.js +43 -0
  132. package/dist/src/symbols/csharp.d.ts +76 -0
  133. package/dist/src/symbols/csharp.d.ts.map +1 -0
  134. package/dist/src/symbols/csharp.js +222 -0
  135. package/dist/src/symbols/factories.d.ts +25 -0
  136. package/dist/src/symbols/factories.d.ts.map +1 -0
  137. package/dist/src/symbols/factories.js +86 -0
  138. package/dist/src/symbols/index.d.ts +5 -2
  139. package/dist/src/symbols/index.d.ts.map +1 -1
  140. package/dist/src/symbols/index.js +6 -3
  141. package/dist/src/symbols/method.d.ts +13 -0
  142. package/dist/src/symbols/method.d.ts.map +1 -0
  143. package/dist/src/symbols/method.js +15 -0
  144. package/dist/src/symbols/named-type.d.ts +19 -0
  145. package/dist/src/symbols/named-type.d.ts.map +1 -0
  146. package/dist/src/symbols/named-type.js +30 -0
  147. package/dist/src/symbols/namespace.d.ts +22 -0
  148. package/dist/src/symbols/namespace.d.ts.map +1 -0
  149. package/dist/src/symbols/namespace.js +44 -0
  150. package/dist/src/symbols/reference.d.ts +2 -2
  151. package/dist/src/symbols/reference.d.ts.map +1 -1
  152. package/dist/src/symbols/reference.js +36 -43
  153. package/dist/test/project-directory.test.js +12 -16
  154. package/dist/test/sourcefile.test.js +7 -19
  155. package/dist/test/using.test.js +18 -16
  156. package/dist/test/utils.js +2 -2
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +6 -2
  159. package/src/components/Declaration.tsx +3 -6
  160. package/src/components/Reference.tsx +3 -1
  161. package/src/components/SourceFile.tsx +68 -55
  162. package/src/components/UsingDirective.tsx +12 -2
  163. package/src/components/class/declaration.test.tsx +120 -143
  164. package/src/components/class/declaration.tsx +19 -32
  165. package/src/components/constructor/constructor.test.tsx +10 -16
  166. package/src/components/constructor/constructor.tsx +13 -27
  167. package/src/components/enum/declaration.ref.test.tsx +93 -0
  168. package/src/components/enum/declaration.test.tsx +34 -0
  169. package/src/components/enum/declaration.tsx +65 -0
  170. package/src/components/enum/member.test.tsx +24 -0
  171. package/src/components/enum/member.tsx +36 -0
  172. package/src/components/field/field.test.tsx +7 -7
  173. package/src/components/field/field.tsx +12 -14
  174. package/src/components/index.ts +5 -2
  175. package/src/components/interface/declaration.test.tsx +26 -32
  176. package/src/components/interface/declaration.tsx +16 -18
  177. package/src/components/interface/method.test.tsx +38 -44
  178. package/src/components/interface/method.tsx +7 -19
  179. package/src/components/interface/property.test.tsx +11 -11
  180. package/src/components/interface/property.tsx +15 -33
  181. package/src/components/lexical-scope.tsx +29 -0
  182. package/src/components/method/method.test.tsx +11 -11
  183. package/src/components/method/method.tsx +12 -18
  184. package/src/components/method-scope.tsx +27 -0
  185. package/src/components/namespace-scopes.tsx +44 -0
  186. package/src/components/namespace.ref.test.tsx +139 -0
  187. package/src/components/namespace.test.tsx +52 -0
  188. package/src/components/namespace.tsx +45 -0
  189. package/src/components/parameters/parameters.test.tsx +71 -0
  190. package/src/components/parameters/parameters.tsx +9 -16
  191. package/src/components/property/property.test.tsx +14 -14
  192. package/src/components/property/property.tsx +17 -38
  193. package/src/components/record/declaration.test.tsx +5 -12
  194. package/src/components/record/declaration.tsx +10 -11
  195. package/src/components/struct/declaration.test.tsx +16 -22
  196. package/src/components/struct/declaration.tsx +4 -6
  197. package/src/components/type-parameters/type-parameter.tsx +14 -11
  198. package/src/components/type-parameters/type-parameters.test.tsx +4 -4
  199. package/src/components/var/declaration.test.tsx +8 -14
  200. package/src/components/var/declaration.tsx +12 -6
  201. package/src/contexts/global-namespace.ts +29 -0
  202. package/src/contexts/namespace.ts +13 -0
  203. package/src/index.ts +1 -0
  204. package/src/modifiers.ts +14 -0
  205. package/src/scopes/class.ts +12 -0
  206. package/src/scopes/contexts.ts +45 -0
  207. package/src/scopes/csharp.ts +18 -0
  208. package/src/scopes/factories.ts +45 -0
  209. package/src/scopes/index.ts +9 -0
  210. package/src/scopes/lexical.ts +10 -0
  211. package/src/scopes/method.ts +22 -0
  212. package/src/scopes/named-type.ts +44 -0
  213. package/src/scopes/namespace.ts +59 -0
  214. package/src/scopes/source-file.ts +67 -0
  215. package/src/symbols/csharp.ts +307 -0
  216. package/src/symbols/factories.ts +199 -0
  217. package/src/symbols/index.ts +5 -2
  218. package/src/symbols/method.ts +26 -0
  219. package/src/symbols/named-type.ts +54 -0
  220. package/src/symbols/namespace.ts +62 -0
  221. package/src/symbols/reference.ts +47 -50
  222. package/temp/api.json +6251 -2454
  223. package/test/project-directory.test.tsx +12 -16
  224. package/test/sourcefile.test.tsx +7 -21
  225. package/test/using.test.tsx +18 -16
  226. package/test/utils.tsx +1 -1
  227. package/dist/src/components/EnumDeclaration.d.ts.map +0 -1
  228. package/dist/src/components/EnumDeclaration.js +0 -82
  229. package/dist/src/components/Namespace.d.ts +0 -11
  230. package/dist/src/components/Namespace.d.ts.map +0 -1
  231. package/dist/src/components/Namespace.js +0 -33
  232. package/dist/src/symbols/csharp-output-symbol.d.ts +0 -8
  233. package/dist/src/symbols/csharp-output-symbol.d.ts.map +0 -1
  234. package/dist/src/symbols/csharp-output-symbol.js +0 -19
  235. package/dist/src/symbols/scopes.d.ts +0 -20
  236. package/dist/src/symbols/scopes.d.ts.map +0 -1
  237. package/dist/src/symbols/scopes.js +0 -42
  238. package/dist/test/enum.test.d.ts +0 -2
  239. package/dist/test/enum.test.d.ts.map +0 -1
  240. package/dist/test/enum.test.js +0 -178
  241. package/dist/test/namespace.test.d.ts.map +0 -1
  242. package/dist/test/namespace.test.js +0 -81
  243. package/src/components/EnumDeclaration.tsx +0 -98
  244. package/src/components/Namespace.tsx +0 -35
  245. package/src/symbols/csharp-output-symbol.ts +0 -22
  246. package/src/symbols/scopes.ts +0 -61
  247. package/test/enum.test.tsx +0 -149
  248. package/test/namespace.test.tsx +0 -55
  249. /package/dist/{test → src/components}/namespace.test.d.ts +0 -0
@@ -1,98 +0,0 @@
1
- import * as core from "@alloy-js/core";
2
- import {
3
- AccessModifiers,
4
- computeModifiersPrefix,
5
- getAccessModifier,
6
- } from "../modifiers.js";
7
- import { useCSharpNamePolicy } from "../name-policy.js";
8
- import { CSharpOutputSymbol } from "../symbols/csharp-output-symbol.js";
9
- import {
10
- CSharpMemberScope,
11
- useCSharpMemberScope,
12
- useCSharpScope,
13
- } from "../symbols/scopes.js";
14
- import { Name } from "./Name.jsx";
15
-
16
- // properties for creating an enum
17
- export interface EnumDeclarationProps extends AccessModifiers {
18
- name: string;
19
- refkey?: core.Refkey;
20
- children?: core.Children;
21
- }
22
-
23
- /**
24
- * A C# enum declaration
25
- * @example
26
- * ```tsx
27
- * <EnumDeclaration public name="Color">
28
- * <EnumMember name="Red" />
29
- * <EnumMember name="Green" />
30
- * <EnumMember name="Blue" />
31
- * </EnumDeclaration>
32
- * ```
33
- * This will produce:
34
- * ```csharp
35
- * public enum Color
36
- * {
37
- * Red,
38
- * Green,
39
- * Blue
40
- * }
41
- * ```
42
- */
43
- export function EnumDeclaration(props: EnumDeclarationProps) {
44
- const name = useCSharpNamePolicy().getName(props.name!, "enum");
45
- const scope = useCSharpScope();
46
-
47
- const thisEnumSymbol = new CSharpOutputSymbol(name, {
48
- scope,
49
- refkeys: props.refkey ?? core.refkey(props.name),
50
- });
51
-
52
- // this creates a new scope for the enum definition.
53
- // members will automatically "inherit" this scope so
54
- // that refkeys to them will produce the fully-qualified
55
- // name e.g. Foo.Bar.
56
- const thisEnumScope = new CSharpMemberScope("enum-decl", {
57
- parent: scope,
58
- owner: thisEnumSymbol,
59
- });
60
-
61
- const modifiers = computeModifiersPrefix([getAccessModifier(props)]);
62
-
63
- if (thisEnumScope.owner)
64
- return (
65
- <core.Declaration symbol={thisEnumSymbol}>
66
- {modifiers}enum <Name />
67
- {!props.children && ";"}
68
- {props.children && (
69
- <core.Scope value={thisEnumScope}>
70
- <core.Block newline>{props.children}</core.Block>
71
- </core.Scope>
72
- )}
73
- </core.Declaration>
74
- );
75
- }
76
-
77
- // properties for creating a C# enum member
78
- export interface EnumMemberProps {
79
- name: string;
80
- refkey?: core.Refkey;
81
- }
82
-
83
- // a member within a C# enum
84
- export function EnumMember(props: EnumMemberProps) {
85
- const scope = useCSharpMemberScope(["enum-decl"]);
86
-
87
- const name = useCSharpNamePolicy().getName(props.name, "enum-member");
88
- const thisEnumValueSymbol = new CSharpOutputSymbol(name, {
89
- scope,
90
- refkeys: props.refkey ?? core.refkey(props.name),
91
- });
92
-
93
- return (
94
- <core.Declaration symbol={thisEnumValueSymbol}>
95
- <Name />
96
- </core.Declaration>
97
- );
98
- }
@@ -1,35 +0,0 @@
1
- import * as core from "@alloy-js/core";
2
- import { CSharpNamespaceScope } from "../symbols/scopes.js";
3
-
4
- // contains the info for the current namespace
5
- export interface NamespaceContext {
6
- name: string;
7
- }
8
-
9
- const NamespaceContext = core.createContext<NamespaceContext>();
10
-
11
- // returns the current namespace
12
- export function useNamespace(): NamespaceContext | undefined {
13
- return core.useContext(NamespaceContext) as NamespaceContext;
14
- }
15
-
16
- // properties for creating a C# namespace
17
- export interface NamespaceProps {
18
- name: string;
19
- children?: core.Children;
20
- }
21
-
22
- // a C# namespace. contains one or more source files
23
- export function Namespace(props: NamespaceProps) {
24
- const scope = new CSharpNamespaceScope(props.name);
25
-
26
- const namespaceCtx: NamespaceContext = {
27
- name: props.name,
28
- };
29
-
30
- return (
31
- <NamespaceContext.Provider value={namespaceCtx}>
32
- <core.Scope value={scope}>{props.children}</core.Scope>
33
- </NamespaceContext.Provider>
34
- );
35
- }
@@ -1,22 +0,0 @@
1
- import * as core from "@alloy-js/core";
2
- import { useNamespace } from "../components/Namespace.jsx";
3
- import { CSharpOutputScope } from "./scopes.js";
4
-
5
- // represents a symbol from a .cs file. Class, enum, interface etc.
6
-
7
- export class CSharpOutputSymbol extends core.OutputSymbol {
8
- get scope() {
9
- return super.scope as CSharpOutputScope;
10
- }
11
- set scope(value: CSharpOutputScope) {
12
- super.scope = value;
13
- }
14
-
15
- constructor(name: string, options?: core.OutputSymbolOptions) {
16
- const namespaceCtx = useNamespace();
17
- if (!namespaceCtx) {
18
- throw new Error("symbol must be declared inside a namespace");
19
- }
20
- super(name, options);
21
- }
22
- }
@@ -1,61 +0,0 @@
1
- import * as core from "@alloy-js/core";
2
- import { CSharpOutputSymbol } from "./csharp-output-symbol.js";
3
-
4
- // indicates that the scope for a symbols is at the namespace level
5
- export class CSharpNamespaceScope extends core.OutputScope {
6
- get kind() {
7
- return "namespace";
8
- }
9
- }
10
-
11
- // the kind of member scope. i.e. are we in an enum, class, etc
12
- export type CSharpMemberScopeName =
13
- | "class-decl"
14
- | "constructor-decl"
15
- | "enum-decl"
16
- | "method-decl";
17
-
18
- // indicates that the scope for a symbol resides within a type
19
- // e.g. for an enum value, class field etc, these would have
20
- // member scope where the owner is the containing type.
21
- export class CSharpMemberScope extends core.OutputScope {
22
- get kind() {
23
- return "member";
24
- }
25
-
26
- get name() {
27
- return super.name as CSharpMemberScopeName;
28
- }
29
-
30
- get owner() {
31
- return super.owner as CSharpOutputSymbol;
32
- }
33
- }
34
-
35
- // contains the possible scopes where a declaration can reside
36
- export type CSharpOutputScope = CSharpMemberScope | CSharpNamespaceScope;
37
-
38
- // returns the current C# scope
39
- export function useCSharpScope(): CSharpOutputScope {
40
- return core.useScope() as CSharpOutputScope;
41
- }
42
-
43
- export function useCSharpMemberScope<T extends unknown[]>(
44
- names: T,
45
- ): CSharpMemberScope & { name: T[number] } {
46
- const scope = useCSharpScope();
47
- assertMemberOfScope(scope, names);
48
- return scope;
49
- }
50
-
51
- export function assertMemberOfScope<T extends unknown[]>(
52
- scope: CSharpOutputScope,
53
- names: T,
54
- ): asserts scope is CSharpMemberScope & { name: T[number] } {
55
- if (scope.kind !== "member" || !names.includes(scope.name as T[number])) {
56
- const context = core.getContext();
57
- throw new Error(
58
- `Can't define a ${context?.componentOwner?.component.name} outside of a ${names.join(" or ")} scope`,
59
- );
60
- }
61
- }
@@ -1,149 +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
- import { findFile } from "./utils.js";
7
-
8
- it("declares enum with no members", () => {
9
- const res = utils.toSourceText(
10
- <csharp.EnumDeclaration public name="TestEnum" />,
11
- );
12
-
13
- expect(res).toBe(coretest.d`
14
- namespace TestCode
15
- {
16
- public enum TestEnum;
17
- }
18
- `);
19
- });
20
-
21
- it("declares enum with members", () => {
22
- const res = utils.toSourceText(
23
- <csharp.EnumDeclaration public name="TestEnum">
24
- <csharp.EnumMember name="One" />,<hbr />
25
- <csharp.EnumMember name="Two" />
26
- </csharp.EnumDeclaration>,
27
- );
28
-
29
- expect(res).toBe(coretest.d`
30
- namespace TestCode
31
- {
32
- public enum TestEnum
33
- {
34
- One,
35
- Two
36
- }
37
- }
38
- `);
39
- });
40
-
41
- it("applies naming policy to enum and members", () => {
42
- const res = utils.toSourceText(
43
- <csharp.EnumDeclaration public name="testEnum">
44
- <csharp.EnumMember name="one" />,<hbr />
45
- <csharp.EnumMember name="two" />
46
- </csharp.EnumDeclaration>,
47
- );
48
-
49
- expect(res).toBe(coretest.d`
50
- namespace TestCode
51
- {
52
- public enum TestEnum
53
- {
54
- One,
55
- Two
56
- }
57
- }
58
- `);
59
- });
60
-
61
- it("can reference things by refkey", () => {
62
- const enumRK = core.refkey();
63
- const twoRK = core.refkey();
64
-
65
- const res = core.render(
66
- <core.Output>
67
- <csharp.Namespace name="TestCode">
68
- <csharp.SourceFile path="Test.cs">
69
- <csharp.EnumDeclaration public name="TestEnum" refkey={enumRK}>
70
- <csharp.EnumMember name="One" />,<hbr />
71
- <csharp.EnumMember name="Two" refkey={twoRK} />
72
- </csharp.EnumDeclaration>
73
- <hbr />
74
- {enumRK};<hbr />
75
- {twoRK};
76
- </csharp.SourceFile>
77
- </csharp.Namespace>
78
- </core.Output>,
79
- );
80
-
81
- expect(findFile(res, "Test.cs").contents).toBe(coretest.d`
82
- namespace TestCode
83
- {
84
- public enum TestEnum
85
- {
86
- One,
87
- Two
88
- }
89
- TestEnum;
90
- TestEnum.Two;
91
- }
92
- `);
93
- });
94
-
95
- it("can reference things by refkey across files", () => {
96
- const enumRK = core.refkey();
97
- const barRK = core.refkey();
98
-
99
- const res = core.render(
100
- <core.Output>
101
- <csharp.Namespace name="TestCode">
102
- <csharp.SourceFile path="Test.cs">
103
- <csharp.EnumDeclaration public name="TestEnum">
104
- <csharp.EnumMember name="One" />,<hbr />
105
- <csharp.EnumMember name="Two" />
106
- </csharp.EnumDeclaration>
107
- <hbr />
108
- {enumRK};<hbr />
109
- {barRK};
110
- </csharp.SourceFile>
111
- <csharp.SourceFile path="Other.cs">
112
- <csharp.EnumDeclaration public name="OtherEnum" refkey={enumRK}>
113
- <csharp.EnumMember name="Foo" />,<hbr />
114
- <csharp.EnumMember name="Bar" refkey={barRK} />
115
- </csharp.EnumDeclaration>
116
- <hbr />
117
- {enumRK};<hbr />
118
- {barRK};
119
- </csharp.SourceFile>
120
- </csharp.Namespace>
121
- </core.Output>,
122
- );
123
-
124
- expect(findFile(res, "Test.cs").contents).toBe(coretest.d`
125
- namespace TestCode
126
- {
127
- public enum TestEnum
128
- {
129
- One,
130
- Two
131
- }
132
- OtherEnum;
133
- OtherEnum.Bar;
134
- }
135
- `);
136
-
137
- expect(findFile(res, "Other.cs").contents).toBe(coretest.d`
138
- namespace TestCode
139
- {
140
- public enum OtherEnum
141
- {
142
- Foo,
143
- Bar
144
- }
145
- OtherEnum;
146
- OtherEnum.Bar;
147
- }
148
- `);
149
- });
@@ -1,55 +0,0 @@
1
- import * as core from "@alloy-js/core";
2
- import * as coretest from "@alloy-js/core/testing";
3
- import { it } from "vitest";
4
- import * as csharp from "../src/index.js";
5
- import { assertFileContents } from "./utils.jsx";
6
-
7
- it("defines multiple namespaces and source files with unique content", () => {
8
- const res = core.render(
9
- <core.Output>
10
- <csharp.Namespace name="Namespace1">
11
- <csharp.SourceFile path="Model1.cs">
12
- <csharp.ClassDeclaration public name="Model1" />
13
- </csharp.SourceFile>
14
- <csharp.SourceFile path="Model2.cs">
15
- <csharp.ClassDeclaration public name="Model2" />
16
- </csharp.SourceFile>
17
- </csharp.Namespace>
18
- <csharp.Namespace name="Namespace2">
19
- <csharp.SourceFile path="Model3.cs">
20
- <csharp.ClassDeclaration public name="Model3" />
21
- </csharp.SourceFile>
22
- <csharp.SourceFile path="Model4.cs">
23
- <csharp.ClassDeclaration public name="Model4" />
24
- </csharp.SourceFile>
25
- </csharp.Namespace>
26
- </core.Output>,
27
- );
28
-
29
- assertFileContents(res, {
30
- "Model1.cs": coretest.d`
31
- namespace Namespace1
32
- {
33
- public class Model1;
34
- }
35
- `,
36
- "Model2.cs": coretest.d`
37
- namespace Namespace1
38
- {
39
- public class Model2;
40
- }
41
- `,
42
- "Model3.cs": coretest.d`
43
- namespace Namespace2
44
- {
45
- public class Model3;
46
- }
47
- `,
48
- "Model4.cs": coretest.d`
49
- namespace Namespace2
50
- {
51
- public class Model4;
52
- }
53
- `,
54
- });
55
- });