@longsightgroup/qti3-core 0.11.0 → 0.12.1

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 (91) hide show
  1. package/README.md +7 -2
  2. package/dist/binary-choice.d.ts +9 -0
  3. package/dist/binary-choice.d.ts.map +1 -0
  4. package/dist/binary-choice.js +81 -0
  5. package/dist/binary-choice.js.map +1 -0
  6. package/dist/index.d.ts +16 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +10 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/qti-identifier.d.ts +3 -0
  11. package/dist/qti-identifier.d.ts.map +1 -0
  12. package/dist/qti-identifier.js +5 -0
  13. package/dist/qti-identifier.js.map +1 -0
  14. package/dist/qti-package-items.d.ts.map +1 -1
  15. package/dist/qti-package-items.js +22 -26
  16. package/dist/qti-package-items.js.map +1 -1
  17. package/dist/qti-package-paths.d.ts +2 -0
  18. package/dist/qti-package-paths.d.ts.map +1 -1
  19. package/dist/qti-package-paths.js +6 -0
  20. package/dist/qti-package-paths.js.map +1 -1
  21. package/dist/qti-package-types.d.ts +1 -0
  22. package/dist/qti-package-types.d.ts.map +1 -1
  23. package/dist/support.d.ts.map +1 -1
  24. package/dist/support.js +3 -1
  25. package/dist/support.js.map +1 -1
  26. package/dist/test-expression-parser.d.ts +6 -0
  27. package/dist/test-expression-parser.d.ts.map +1 -0
  28. package/dist/test-expression-parser.js +76 -0
  29. package/dist/test-expression-parser.js.map +1 -0
  30. package/dist/test-expression-serializer.d.ts +5 -0
  31. package/dist/test-expression-serializer.d.ts.map +1 -0
  32. package/dist/test-expression-serializer.js +54 -0
  33. package/dist/test-expression-serializer.js.map +1 -0
  34. package/dist/test-expression-validation.d.ts +14 -0
  35. package/dist/test-expression-validation.d.ts.map +1 -0
  36. package/dist/test-expression-validation.js +101 -0
  37. package/dist/test-expression-validation.js.map +1 -0
  38. package/dist/test-expression.d.ts +99 -0
  39. package/dist/test-expression.d.ts.map +1 -0
  40. package/dist/test-expression.js +28 -0
  41. package/dist/test-expression.js.map +1 -0
  42. package/dist/test-model.d.ts +62 -0
  43. package/dist/test-model.d.ts.map +1 -0
  44. package/dist/test-model.js +5 -0
  45. package/dist/test-model.js.map +1 -0
  46. package/dist/test-parser.d.ts +13 -0
  47. package/dist/test-parser.d.ts.map +1 -0
  48. package/dist/test-parser.js +144 -0
  49. package/dist/test-parser.js.map +1 -0
  50. package/dist/test-processing.d.ts +22 -0
  51. package/dist/test-processing.d.ts.map +1 -0
  52. package/dist/test-processing.js +84 -0
  53. package/dist/test-processing.js.map +1 -0
  54. package/dist/test-session.d.ts +31 -0
  55. package/dist/test-session.d.ts.map +1 -0
  56. package/dist/test-session.js +102 -0
  57. package/dist/test-session.js.map +1 -0
  58. package/dist/test-support.d.ts +4 -0
  59. package/dist/test-support.d.ts.map +1 -0
  60. package/dist/test-support.js +30 -0
  61. package/dist/test-support.js.map +1 -0
  62. package/dist/test-validation.d.ts +4 -0
  63. package/dist/test-validation.d.ts.map +1 -0
  64. package/dist/test-validation.js +133 -0
  65. package/dist/test-validation.js.map +1 -0
  66. package/dist/test-xml.d.ts +7 -0
  67. package/dist/test-xml.d.ts.map +1 -0
  68. package/dist/test-xml.js +23 -0
  69. package/dist/test-xml.js.map +1 -0
  70. package/dist/types.d.ts +5 -1
  71. package/dist/types.d.ts.map +1 -1
  72. package/package.json +1 -1
  73. package/src/binary-choice.ts +96 -0
  74. package/src/index.ts +29 -0
  75. package/src/qti-identifier.ts +4 -0
  76. package/src/qti-package-items.ts +28 -37
  77. package/src/qti-package-paths.ts +9 -0
  78. package/src/qti-package-types.ts +1 -0
  79. package/src/support.ts +3 -1
  80. package/src/test-expression-parser.ts +89 -0
  81. package/src/test-expression-serializer.ts +71 -0
  82. package/src/test-expression-validation.ts +139 -0
  83. package/src/test-expression.ts +66 -0
  84. package/src/test-model.ts +68 -0
  85. package/src/test-parser.ts +201 -0
  86. package/src/test-processing.ts +107 -0
  87. package/src/test-session.ts +160 -0
  88. package/src/test-support.ts +31 -0
  89. package/src/test-validation.ts +190 -0
  90. package/src/test-xml.ts +37 -0
  91. package/src/types.ts +6 -0
@@ -0,0 +1,7 @@
1
+ import type { QtiDiagnostic } from "./types.js";
2
+ import type { XmlNode } from "./xml.js";
3
+ /** Report an unsupported construct at its XML source location. */
4
+ export declare function rejectTestXml(node: XmlNode, diagnostics: QtiDiagnostic[]): void;
5
+ /** Check the closed test profile's namespace, attributes, children and element-only content. */
6
+ export declare function checkTestXml(node: XmlNode, names: readonly string[], attrs: readonly string[], diagnostics: QtiDiagnostic[], allowText?: boolean): void;
7
+ //# sourceMappingURL=test-xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-xml.d.ts","sourceRoot":"","sources":["../src/test-xml.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAO/E;AAED,gGAAgG;AAChG,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,EAAE,aAAa,EAAE,EAC5B,SAAS,UAAQ,GAChB,IAAI,CAeN"}
@@ -0,0 +1,23 @@
1
+ import { QTI_ASI_NAMESPACE } from "./qti-namespaces.js";
2
+ /** Report an unsupported construct at its XML source location. */
3
+ export function rejectTestXml(node, diagnostics) {
4
+ diagnostics.push({
5
+ code: "test.xml.unsupported",
6
+ severity: "error",
7
+ message: `Unsupported test element or attributes: ${node.localName}.`,
8
+ source: node.source,
9
+ });
10
+ }
11
+ /** Check the closed test profile's namespace, attributes, children and element-only content. */
12
+ export function checkTestXml(node, names, attrs, diagnostics, allowText = false) {
13
+ if (node.uri !== QTI_ASI_NAMESPACE ||
14
+ Object.keys(node.attributes).some((name) => name !== "xmlns" &&
15
+ !name.startsWith("xmlns:") &&
16
+ !["xsi:schemaLocation", "xml:lang", ...attrs].includes(name)) ||
17
+ (!allowText && node.text.trim().length > 0))
18
+ rejectTestXml(node, diagnostics);
19
+ for (const child of node.children)
20
+ if (child.uri !== QTI_ASI_NAMESPACE || !names.includes(child.localName))
21
+ rejectTestXml(child, diagnostics);
22
+ }
23
+ //# sourceMappingURL=test-xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-xml.js","sourceRoot":"","sources":["../src/test-xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,IAAa,EAAE,WAA4B;IACvE,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,2CAA2C,IAAI,CAAC,SAAS,GAAG;QACrE,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;AACL,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,YAAY,CAC1B,IAAa,EACb,KAAwB,EACxB,KAAwB,EACxB,WAA4B,EAC5B,SAAS,GAAG,KAAK;IAEjB,IACE,IAAI,CAAC,GAAG,KAAK,iBAAiB;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,KAAK,OAAO;YAChB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1B,CAAC,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC/D;QACD,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAE3C,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;QAC/B,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;YACrE,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -705,7 +705,7 @@ export interface QtiScoreResult {
705
705
  diagnostics: QtiDiagnostic[];
706
706
  state: QtiAttemptStateV1;
707
707
  }
708
- export type QtiElementSupport = QtiInteractionElementSupport | QtiProcessingElementSupport | QtiItemMetadataElementSupport;
708
+ export type QtiElementSupport = QtiInteractionElementSupport | QtiProcessingElementSupport | QtiTestElementSupport | QtiItemMetadataElementSupport;
709
709
  interface QtiElementSupportBase {
710
710
  qtiName: string;
711
711
  support: QtiSupportStatus;
@@ -725,6 +725,10 @@ export interface QtiInteractionElementSupport extends QtiElementSupportBase {
725
725
  export interface QtiProcessingElementSupport extends QtiElementSupportBase {
726
726
  category: "processing";
727
727
  }
728
+ /** Executable assessment-test support, separate from item processing/rendering. */
729
+ export interface QtiTestElementSupport extends QtiElementSupportBase {
730
+ category: "test";
731
+ }
728
732
  export interface QtiItemMetadataElementSupport extends QtiElementSupportBase {
729
733
  category: "itemMetadata";
730
734
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longsightgroup/qti3-core",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "description": "Framework-neutral TypeScript core for parsing, validating, scoring, and serializing QTI 3 assessment items.",
5
5
  "keywords": [
6
6
  "assessment",
@@ -0,0 +1,96 @@
1
+ import { parseQtiXml } from "./parser.js";
2
+ import { createItemSession } from "./session.js";
3
+ import { collectQtiResponseProcessingExpressions } from "./processing-expression-collection.js";
4
+ import { responseProcessingTemplateKind } from "./processing-templates.js";
5
+ import type { QtiTestResult } from "./test-model.js";
6
+
7
+ /** Item policy established by exhaustive scoring of every available choice. */
8
+ export interface QtiBinaryChoicePolicy {
9
+ readonly responseIdentifier: string;
10
+ readonly correctChoice: string;
11
+ }
12
+
13
+ /** Host scoring policy: inspect every choice and reject random or session-dependent scoring. */
14
+ export function inspectQtiBinaryChoice(itemXml: string): QtiTestResult<QtiBinaryChoicePolicy> {
15
+ const fail = (message: string): QtiTestResult<never> => ({
16
+ ok: false,
17
+ diagnostics: [{ code: "item.binaryChoice", severity: "error", message }],
18
+ });
19
+ const parsed = parseQtiXml(itemXml);
20
+ if (!parsed.ok || !parsed.document) return { ok: false, diagnostics: parsed.diagnostics };
21
+ const { item } = parsed.document;
22
+ const interaction = item.interactions[0];
23
+ const response = item.responseDeclarations[0];
24
+ if (
25
+ item.adaptive ||
26
+ item.timeDependent ||
27
+ item.templateProcessing ||
28
+ item.templateDeclarations.length ||
29
+ item.interactions.length !== 1 ||
30
+ interaction?.type !== "choice" ||
31
+ interaction.attributes["max-choices"] !== "1" ||
32
+ item.responseDeclarations.length !== 1 ||
33
+ !response ||
34
+ response.cardinality !== "single" ||
35
+ response.baseType !== "identifier" ||
36
+ interaction.responseIdentifier !== response.identifier ||
37
+ interaction.choices.length < 2 ||
38
+ typeof response.correctResponse !== "string" ||
39
+ !item.responseProcessing
40
+ ) {
41
+ return fail("Requires one non-adaptive single-choice interaction with one correct response.");
42
+ }
43
+ const processing = item.responseProcessing;
44
+ if (processing.template) {
45
+ const kind = responseProcessingTemplateKind(processing.template);
46
+ if (kind !== "matchCorrect" && kind !== "mapResponse")
47
+ return fail("Unsupported binary-choice scoring template.");
48
+ }
49
+ const variables = new Set([
50
+ response.identifier,
51
+ ...item.outcomeDeclarations.map((d) => d.identifier),
52
+ ]);
53
+ const expressions = collectQtiResponseProcessingExpressions(processing);
54
+ if (
55
+ expressions.some(
56
+ (e) =>
57
+ ![
58
+ "baseValue",
59
+ "variable",
60
+ "correct",
61
+ "match",
62
+ "isNull",
63
+ "and",
64
+ "or",
65
+ "not",
66
+ "mapResponse",
67
+ "numericCompare",
68
+ "sum",
69
+ "product",
70
+ ].includes(e.type) ||
71
+ (e.type === "variable" && !variables.has(e.identifier)),
72
+ )
73
+ ) {
74
+ return fail("Binary-choice scoring must depend only on the answer and declared outcomes.");
75
+ }
76
+ let correctCount = 0;
77
+ for (const choice of interaction.choices) {
78
+ const session = createItemSession(parsed.document);
79
+ session.respond(response.identifier, choice.identifier);
80
+ const scored = session.score();
81
+ const expected = choice.identifier === response.correctResponse ? 1 : 0;
82
+ if (
83
+ scored.outcomes.SCORE !== expected ||
84
+ scored.diagnostics.some((d) => d.severity === "error")
85
+ ) {
86
+ return fail("Every choice must score 0 or 1 and agree with the declared correct response.");
87
+ }
88
+ correctCount += expected;
89
+ }
90
+ return correctCount === 1
91
+ ? {
92
+ ok: true,
93
+ value: { responseIdentifier: response.identifier, correctChoice: response.correctResponse },
94
+ }
95
+ : fail("Exactly one available choice must be correct.");
96
+ }
package/src/index.ts CHANGED
@@ -392,3 +392,32 @@ export {
392
392
  formatQtiTextResponse,
393
393
  qtiTextResponseString,
394
394
  } from "./text-response.js";
395
+ export type {
396
+ QtiExecutableTest,
397
+ QtiTestDefinition,
398
+ QtiTestSection,
399
+ QtiTestItemRef,
400
+ QtiTestBranch,
401
+ QtiTestResult,
402
+ QtiTestOutcomeRule,
403
+ } from "./test-model.js";
404
+ export { validateQtiTest } from "./test-validation.js";
405
+ export { parseQtiTest } from "./test-parser.js";
406
+ export { parseQtiTestExecution } from "./test-parser.js";
407
+ export type { QtiTestExecution } from "./test-parser.js";
408
+ export {
409
+ startQtiTest,
410
+ submitQtiTestAnswer,
411
+ snapshotQtiTestSession,
412
+ restoreQtiTestSession,
413
+ } from "./test-session.js";
414
+ export type { QtiTestSession, QtiTestSessionSnapshot } from "./test-session.js";
415
+ export type { QtiTestSubmission } from "./test-processing.js";
416
+ export type { QtiTestExpression, QtiTestBaseType } from "./test-expression.js";
417
+ export { serializeTestExpression } from "./test-expression-serializer.js";
418
+ export { isQtiIdentifier } from "./qti-identifier.js";
419
+ export { isQtiPackageItemHref } from "./qti-package-paths.js";
420
+ export { testFailure } from "./test-model.js";
421
+ export { testExecutionSupport } from "./test-support.js";
422
+ export { inspectQtiBinaryChoice } from "./binary-choice.js";
423
+ export type { QtiBinaryChoicePolicy } from "./binary-choice.js";
@@ -0,0 +1,4 @@
1
+ /** Whether a value is a complete QTI identifier in the supported ASCII lexical space. */
2
+ export function isQtiIdentifier(identifier: string): boolean {
3
+ return /^[A-Za-z_][A-Za-z0-9_.-]*$/.test(identifier);
4
+ }
@@ -287,25 +287,29 @@ export function itemReferencesForPackageShape(
287
287
  assessmentTest: QtiAssessmentTestPackageModel | undefined,
288
288
  diagnostics: QtiDiagnostic[],
289
289
  ): PackageItemReference[] {
290
- if (packageShape === "assessment-test-resource") {
291
- const itemResourcesByHref = new Map<string, QtiManifestResource>();
292
- for (const resource of itemResources) {
293
- if (resource.href === undefined) continue;
294
- if (itemResourcesByHref.has(resource.href)) {
295
- pushPackageDiagnostic(
296
- diagnostics,
297
- "package.manifest.itemResource.href.duplicate",
298
- "error",
299
- `Multiple manifest item resources point to ${resource.href}.`,
300
- resource.href,
301
- );
302
- continue;
303
- }
304
- itemResourcesByHref.set(resource.href, resource);
290
+ if (packageShape === "unknown") return [];
291
+
292
+ const itemResourcesByHref = new Map<string, QtiManifestResource>();
293
+ for (const resource of itemResources) {
294
+ if (resource.href === undefined) continue;
295
+ if (itemResourcesByHref.has(resource.href)) {
296
+ pushPackageDiagnostic(
297
+ diagnostics,
298
+ "package.manifest.itemResource.href.duplicate",
299
+ "error",
300
+ `Multiple manifest item resources point to ${resource.href}.`,
301
+ resource.href,
302
+ );
303
+ continue;
305
304
  }
306
- return (assessmentTest?.itemRefs ?? []).map((itemRef) => {
305
+ itemResourcesByHref.set(resource.href, resource);
306
+ }
307
+
308
+ const references: PackageItemReference[] = [];
309
+ if (packageShape === "assessment-test-resource") {
310
+ for (const itemRef of assessmentTest?.itemRefs ?? []) {
307
311
  const itemResource = itemResourcesByHref.get(itemRef.href);
308
- return {
312
+ references.push({
309
313
  href: itemRef.href,
310
314
  source: "assessment-test",
311
315
  manifestResourceIdentifier: itemResource?.identifier,
@@ -314,28 +318,15 @@ export function itemReferencesForPackageShape(
314
318
  ...(assessmentTest?.standards ?? []),
315
319
  ...(itemResource?.standards ?? []),
316
320
  ]),
317
- };
318
- });
321
+ });
322
+ }
319
323
  }
320
324
 
321
- if (packageShape !== "manifest-item-resources") return [];
322
-
323
- const references: PackageItemReference[] = [];
324
- const seen = new Set<string>();
325
- for (const resource of itemResources) {
326
- const href = resource.href;
327
- if (!href) continue;
328
- if (seen.has(href)) {
329
- pushPackageDiagnostic(
330
- diagnostics,
331
- "package.manifest.itemResource.href.duplicate",
332
- "error",
333
- `Multiple manifest item resources point to ${href}.`,
334
- href,
335
- );
336
- continue;
337
- }
338
- seen.add(href);
325
+ // A test supplies delivery order, not the inventory of content to validate.
326
+ // Retain that order, then include manifest items that the test does not reference.
327
+ const testHrefs = new Set(references.map((reference) => reference.href));
328
+ for (const [href, resource] of itemResourcesByHref) {
329
+ if (testHrefs.has(href)) continue;
339
330
  references.push({
340
331
  href,
341
332
  source: "manifest",
@@ -54,3 +54,12 @@ export function normalizePackagePath(
54
54
  }
55
55
  return parts.join("/");
56
56
  }
57
+
58
+ /** Whether an item href is a normalized package-local path, without URI routing or traversal. */
59
+ export function isQtiPackageItemHref(href: string): boolean {
60
+ return (
61
+ href.length > 0 &&
62
+ !/^[a-z][a-z0-9+.-]*:|[\\?#\s]/i.test(href) &&
63
+ href.split("/").every((part) => part.length > 0 && part !== "." && part !== "..")
64
+ );
65
+ }
@@ -186,6 +186,7 @@ export interface QtiPackageParseResult {
186
186
  /** All .xml entries in inventory order, including files outside the selected resource graph. */
187
187
  readonly xmlFiles: readonly QtiPackageXmlFileSummary[];
188
188
  readonly packageShape: QtiPackageShape;
189
+ /** Test-referenced items in test order, followed by remaining manifest items in manifest order. */
189
190
  readonly items: readonly QtiPackageItem[];
190
191
  readonly assets: readonly QtiPackageAsset[];
191
192
  readonly manifestResources: readonly QtiManifestResource[];
package/src/support.ts CHANGED
@@ -8,6 +8,7 @@ import type {
8
8
  QtiProcessingElementSupport,
9
9
  QtiSourceLocation,
10
10
  } from "./types.js";
11
+ import { testExecutionSupport } from "./test-support.js";
11
12
  import {
12
13
  browserFeedbackTests,
13
14
  browserHarnessTests,
@@ -397,6 +398,7 @@ export const itemMetadataSupport: QtiItemMetadataElementSupport[] = [
397
398
  ];
398
399
 
399
400
  export const elementSupport: QtiElementSupport[] = [
401
+ ...testExecutionSupport,
400
402
  ...interactionSupport,
401
403
  ...deprecatedInteractionSupport,
402
404
  ...processingSupport,
@@ -492,7 +494,7 @@ function pciEntry(): QtiInteractionElementSupport {
492
494
  return {
493
495
  ...entry("qti-portable-custom-interaction", "portableCustom"),
494
496
  notes:
495
- "Parses and validates PCI metadata, exposes a browser host contract, scores captured responses, and preserves opaque interaction state. Production module execution policy belongs to the host delivery runtime.",
497
+ "Parses and validates PCI metadata, exposes a browser host contract for every response cardinality and base type, scores captured responses, and preserves opaque interaction state. Production module execution policy belongs to the host delivery runtime.",
496
498
  };
497
499
  }
498
500
 
@@ -0,0 +1,89 @@
1
+ import { assertNever } from "./assert-never.js";
2
+ import { coerceValue } from "./parser-values.js";
3
+ import { isTestBaseType, testExpressionSyntax, type QtiTestExpression } from "./test-expression.js";
4
+ import { checkTestXml, rejectTestXml } from "./test-xml.js";
5
+ import type { QtiDiagnostic } from "./types.js";
6
+ import { textContent, type XmlNode } from "./xml.js";
7
+
8
+ /** Read the single expression owned by a branch or outcome assignment. */
9
+ export function parseTestExpressionChild(
10
+ node: XmlNode,
11
+ diagnostics: QtiDiagnostic[],
12
+ ): QtiTestExpression | undefined {
13
+ const first = node.children[0];
14
+ if (node.children.length !== 1 || !first) {
15
+ rejectTestXml(node, diagnostics);
16
+ return undefined;
17
+ }
18
+ return parseTestExpression(first, diagnostics);
19
+ }
20
+
21
+ function parseTestExpression(
22
+ node: XmlNode,
23
+ diagnostics: QtiDiagnostic[],
24
+ ): QtiTestExpression | undefined {
25
+ const syntax = testExpressionSyntax.find((entry) => entry.name === node.localName);
26
+ if (!syntax) {
27
+ rejectTestXml(node, diagnostics);
28
+ return undefined;
29
+ }
30
+ checkTestXml(
31
+ node,
32
+ testExpressionSyntax.map((entry) => entry.name),
33
+ syntax.attributes,
34
+ diagnostics,
35
+ syntax.type === "baseValue",
36
+ );
37
+ const arityValid =
38
+ syntax.arity === "oneOrMore" ? node.children.length > 0 : node.children.length === syntax.arity;
39
+ if (!arityValid) {
40
+ rejectTestXml(node, diagnostics);
41
+ return undefined;
42
+ }
43
+ const expressions: QtiTestExpression[] = [];
44
+ for (const child of node.children) {
45
+ const parsed = parseTestExpression(child, diagnostics);
46
+ if (!parsed) return undefined;
47
+ expressions.push(parsed);
48
+ }
49
+ const source = node.source;
50
+ switch (syntax.type) {
51
+ case "baseValue": {
52
+ const baseType = node.attributes["base-type"];
53
+ if (!isTestBaseType(baseType)) {
54
+ rejectTestXml(node, diagnostics);
55
+ return undefined;
56
+ }
57
+ return {
58
+ type: "baseValue",
59
+ baseType,
60
+ value: coerceValue(textContent(node), baseType),
61
+ source,
62
+ };
63
+ }
64
+ case "variable":
65
+ return { type: "variable", identifier: node.attributes.identifier ?? "", source };
66
+ case "testVariables":
67
+ return {
68
+ type: "testVariables",
69
+ variableIdentifier: node.attributes["variable-identifier"] ?? "",
70
+ includeCategory: node.attributes["include-category"],
71
+ source,
72
+ };
73
+ case "sum":
74
+ case "and":
75
+ case "or":
76
+ return { type: syntax.type, expressions, source };
77
+ case "numericCompare": {
78
+ const [left, right] = expressions;
79
+ if (!left || !right) return undefined;
80
+ return { type: "numericCompare", operator: syntax.operator, left, right, source };
81
+ }
82
+ case "not": {
83
+ const expression = expressions[0];
84
+ return expression ? { type: "not", expression, source } : undefined;
85
+ }
86
+ default:
87
+ return assertNever(syntax);
88
+ }
89
+ }
@@ -0,0 +1,71 @@
1
+ import { assertNever } from "./assert-never.js";
2
+ import { renderElement, type XmlAttribute } from "./serializer-processing-xml.js";
3
+ import { testExpressionSyntax, type QtiTestExpression } from "./test-expression.js";
4
+ import { testFailure, type QtiTestResult } from "./test-model.js";
5
+ import { escapeXmlText } from "./xml.js";
6
+
7
+ /** Serialize the closed test expression language without involving item processing. */
8
+ export function serializeTestExpression(expression: QtiTestExpression): QtiTestResult<string> {
9
+ const result = serializeExpression(expression, 0);
10
+ return result.ok ? { ok: true, value: result.value.join("\n") } : result;
11
+ }
12
+
13
+ function serializeExpression(
14
+ expression: QtiTestExpression,
15
+ indent: number,
16
+ ): QtiTestResult<readonly string[]> {
17
+ const syntax = testExpressionSyntax.find(
18
+ (entry) =>
19
+ entry.type === expression.type &&
20
+ (expression.type !== "numericCompare" ||
21
+ (entry.type === "numericCompare" && entry.operator === expression.operator)),
22
+ );
23
+ if (!syntax)
24
+ return testFailure(
25
+ "expression.unsupported",
26
+ "Cannot serialize an unsupported test expression.",
27
+ );
28
+ const attributes: XmlAttribute[] = [];
29
+ let children: readonly QtiTestExpression[] = [];
30
+ switch (expression.type) {
31
+ case "baseValue":
32
+ return {
33
+ ok: true,
34
+ value: renderElement(
35
+ syntax.name,
36
+ [["base-type", expression.baseType]],
37
+ escapeXmlText(String(expression.value)),
38
+ indent,
39
+ ),
40
+ };
41
+ case "variable":
42
+ attributes.push(["identifier", expression.identifier]);
43
+ break;
44
+ case "testVariables":
45
+ attributes.push(
46
+ ["variable-identifier", expression.variableIdentifier],
47
+ ["include-category", expression.includeCategory],
48
+ );
49
+ break;
50
+ case "sum":
51
+ case "and":
52
+ case "or":
53
+ children = expression.expressions;
54
+ break;
55
+ case "numericCompare":
56
+ children = [expression.left, expression.right];
57
+ break;
58
+ case "not":
59
+ children = [expression.expression];
60
+ break;
61
+ default:
62
+ return assertNever(expression);
63
+ }
64
+ const content: string[] = [];
65
+ for (const child of children) {
66
+ const result = serializeExpression(child, indent + 1);
67
+ if (!result.ok) return result;
68
+ content.push(...result.value);
69
+ }
70
+ return { ok: true, value: renderElement(syntax.name, attributes, content, indent) };
71
+ }