@lionweb/delta-protocol-test-cli 0.8.0-beta.0 → 0.8.0-beta.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/cli-client.js +4 -14
- package/dist/cli-client.js.map +1 -1
- package/dist/tasks.d.ts +1 -2
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +23 -10
- package/dist/tasks.js.map +1 -1
- package/package.json +10 -10
- package/src/cli-client.ts +4 -19
- package/src/tasks.ts +33 -11
package/dist/cli-client.js
CHANGED
|
@@ -28,9 +28,7 @@ const { clientInfo, genericError } = ansi;
|
|
|
28
28
|
const testLanguageBase = TestLanguageBase.INSTANCE;
|
|
29
29
|
const languageBases = [testLanguageBase];
|
|
30
30
|
const boldRedIf = (apply, text) => apply ? genericError(text) : text;
|
|
31
|
-
|
|
32
|
-
.map((concept) => [concept.name, concept]));
|
|
33
|
-
// $ node dist/cli-client.js <port> <clientID> <partitionConcept> [tasks] [--${protocolLogOptionPrefix}=<path>]
|
|
31
|
+
// $ node dist/cli-client.js <port> <clientID> [tasks] [--${protocolLogOptionPrefix}=<path>]
|
|
34
32
|
const protocolLogOptionPrefix = "--protocol-log=";
|
|
35
33
|
const protocolLogPathIndex = argv.findIndex((argument) => argument.startsWith(protocolLogOptionPrefix));
|
|
36
34
|
// arguments without "node" (index=0), "dist/cli-client.js" (index=1), and `${protocolLogOptionPrefix}=<path>` (optional)
|
|
@@ -41,8 +39,7 @@ if (trueArguments.length < 3) {
|
|
|
41
39
|
Parameters (${genericError("bold red")} are missing):
|
|
42
40
|
- ${boldRedIf(trueArguments.length < 1, `<port>: the port of the WebSocket where the LionWeb delta protocol repository is running on localhost`)}
|
|
43
41
|
- ${boldRedIf(trueArguments.length < 2, `<clientID>: the ID that the client identifies itself with at the repository`)}
|
|
44
|
-
- ${boldRedIf(trueArguments.length < 3,
|
|
45
|
-
- ${boldRedIf(trueArguments.length < 4, `[tasks]: a comma-separated list of tasks — one of ${Object.keys(recognizedTasks).sort().join(", ")}`)}
|
|
42
|
+
- ${boldRedIf(trueArguments.length < 3, `[tasks]: a comma-separated list of tasks — one of ${Object.keys(recognizedTasks).sort().join(", ")}`)}
|
|
46
43
|
- ${boldRedIf(protocolLogPathIndex === -1, `${protocolLogOptionPrefix}=<path>: option to configure that the client logs all messages exchanged with the repository to a file with the given path`)}
|
|
47
44
|
|
|
48
45
|
ASSUMPTION: the initial (states of the models) on client(s) and repository are identical!
|
|
@@ -51,12 +48,7 @@ Parameters (${genericError("bold red")} are missing):
|
|
|
51
48
|
}
|
|
52
49
|
const port = tryParseInteger(argv[2]);
|
|
53
50
|
const clientId = argv[3];
|
|
54
|
-
const
|
|
55
|
-
if (!(partitionConcept in partitionConcepts)) {
|
|
56
|
-
console.error(genericError(`unknown partition concept specified: ${partitionConcept} — must be one of: ${Object.keys(partitionConcepts).join(", ")}`));
|
|
57
|
-
exit(2);
|
|
58
|
-
}
|
|
59
|
-
const tasks = argv[5]?.split(",") ?? [];
|
|
51
|
+
const tasks = argv[4]?.split(",") ?? [];
|
|
60
52
|
console.log(clientInfo(`tasks provided: ${tasks.length === 0 ? "none" : tasks.join(", ")}`));
|
|
61
53
|
const infoUnrecognizedTasks = tasks
|
|
62
54
|
.map((task, index) => task in recognizedTasks ? undefined : [task, index])
|
|
@@ -82,9 +74,7 @@ await runAsApp(async () => {
|
|
|
82
74
|
})
|
|
83
75
|
});
|
|
84
76
|
console.log(clientInfo(`LionWeb delta protocol client (with ID=${clientId}) connecting to repository on ${url} - press Ctrl+C to terminate`));
|
|
85
|
-
const
|
|
86
|
-
lionWebClient.setModel([partition]);
|
|
87
|
-
const executeTask = taskExecutor(lionWebClient, partition, semanticLogItems);
|
|
77
|
+
const executeTask = taskExecutor(lionWebClient, semanticLogItems);
|
|
88
78
|
let querySequenceNumber = 0;
|
|
89
79
|
const queryId = () => `query-${++querySequenceNumber}`;
|
|
90
80
|
for (const task of tasks) {
|
package/dist/cli-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-client.js","sourceRoot":"","sources":["../src/cli-client.ts"],"names":[],"mappings":";AAEA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"cli-client.js","sourceRoot":"","sources":["../src/cli-client.ts"],"names":[],"mappings":"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"}
|
package/dist/tasks.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { INodeBase } from "@lionweb/class-core";
|
|
2
1
|
import { LionWebClient } from "@lionweb/delta-protocol-client";
|
|
3
2
|
import { ISemanticLogItem } from "@lionweb/delta-protocol-common";
|
|
4
3
|
/**
|
|
@@ -9,5 +8,5 @@ import { ISemanticLogItem } from "@lionweb/delta-protocol-common";
|
|
|
9
8
|
* inside the build package to generate the contents of the following object.
|
|
10
9
|
*/
|
|
11
10
|
export declare const recognizedTasks: Record<string, boolean>;
|
|
12
|
-
export declare const taskExecutor: (lionWebClient: LionWebClient,
|
|
11
|
+
export declare const taskExecutor: (lionWebClient: LionWebClient, semanticLogItems: ISemanticLogItem[]) => (task: keyof typeof recognizedTasks, queryId: string) => Promise<void>;
|
|
13
12
|
//# sourceMappingURL=tasks.d.ts.map
|
package/dist/tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAA+B,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAe9F;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAoCnD,CAAA;AAMD,eAAO,MAAM,YAAY,GAAI,eAAe,aAAa,EAAE,kBAAkB,gBAAgB,EAAE,MAkC7E,MAAM,MAAM,OAAO,eAAe,EAAE,SAAS,MAAM,kBAsIpE,CAAA"}
|
package/dist/tasks.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
import { ansi, ClientReceivedMessage } from "@lionweb/delta-protocol-common";
|
|
18
18
|
import { lastOfArray } from "@lionweb/ts-utils";
|
|
19
|
-
import { TestLanguageBase } from "@lionweb/class-core-test-language";
|
|
19
|
+
import { TestLanguageBase, TestPartition } from "@lionweb/class-core-test-language";
|
|
20
20
|
import { waitUntil } from "./async.js";
|
|
21
21
|
const { clientInfo, genericWarning } = ansi;
|
|
22
22
|
/**
|
|
@@ -64,7 +64,7 @@ export const recognizedTasks = {
|
|
|
64
64
|
"SubscribeToChangingPartitions": true
|
|
65
65
|
};
|
|
66
66
|
const testLanguageBase = TestLanguageBase.INSTANCE;
|
|
67
|
-
export const taskExecutor = (lionWebClient,
|
|
67
|
+
export const taskExecutor = (lionWebClient, semanticLogItems) => {
|
|
68
68
|
const numberOfReceivedMessages = () => semanticLogItems.filter((item) => item instanceof ClientReceivedMessage).length;
|
|
69
69
|
const waitForReceivedMessages = async (numberOfMessagesToReceive) => {
|
|
70
70
|
const expectedNumber = numberOfReceivedMessages() + numberOfMessagesToReceive; // (precompute here)
|
|
@@ -73,10 +73,19 @@ export const taskExecutor = (lionWebClient, partition, semanticLogItems) => {
|
|
|
73
73
|
console.log(clientInfo(`(client "${lionWebClient.clientId}" received a total of ${numberOfReceivedMessages()} messages so far)`));
|
|
74
74
|
});
|
|
75
75
|
};
|
|
76
|
-
const annotation = (id) => lionWebClient.createNode(testLanguageBase.TestAnnotation, id);
|
|
76
|
+
const annotation = (id) => lionWebClient.forest.createNode(testLanguageBase.TestAnnotation, id);
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
78
|
+
const as = (obj, classConstructor, customErrorMessage) => {
|
|
79
|
+
if (obj instanceof classConstructor) {
|
|
80
|
+
return obj;
|
|
81
|
+
}
|
|
82
|
+
throw new Error(customErrorMessage ?? `object is not of class ${classConstructor.name}`);
|
|
83
|
+
};
|
|
84
|
+
const thePartition = () => as(lionWebClient.forest.partitions[0], TestPartition, `partition at index 0 in forest is not a ${testLanguageBase.TestPartition.name}`);
|
|
77
85
|
const linkTestConcept = (id) => id === undefined
|
|
78
|
-
?
|
|
79
|
-
: lionWebClient.createNode(testLanguageBase.LinkTestConcept, id);
|
|
86
|
+
? thePartition().links[0]
|
|
87
|
+
: lionWebClient.forest.createNode(testLanguageBase.LinkTestConcept, id);
|
|
88
|
+
const dataTypeTestConcept = () => thePartition().data;
|
|
80
89
|
return async (task, queryId) => {
|
|
81
90
|
console.log(clientInfo(`client "${lionWebClient.clientId}" is executing task "${task}"`));
|
|
82
91
|
switch (task) {
|
|
@@ -94,13 +103,13 @@ export const taskExecutor = (lionWebClient, partition, semanticLogItems) => {
|
|
|
94
103
|
return waitForReceivedMessages(1);
|
|
95
104
|
}
|
|
96
105
|
case "AddStringValue_0_1":
|
|
97
|
-
|
|
106
|
+
dataTypeTestConcept().stringValue_0_1 = "new property";
|
|
98
107
|
return waitForReceivedMessages(1);
|
|
99
108
|
case "SetStringValue_0_1":
|
|
100
|
-
|
|
109
|
+
dataTypeTestConcept().stringValue_0_1 = "changed property";
|
|
101
110
|
return waitForReceivedMessages(1);
|
|
102
111
|
case "DeleteStringValue_0_1":
|
|
103
|
-
|
|
112
|
+
dataTypeTestConcept().stringValue_0_1 = undefined;
|
|
104
113
|
return waitForReceivedMessages(1);
|
|
105
114
|
case "AddName_Containment_0_1":
|
|
106
115
|
linkTestConcept().containment_0_1.name = "my name";
|
|
@@ -193,9 +202,13 @@ export const taskExecutor = (lionWebClient, partition, semanticLogItems) => {
|
|
|
193
202
|
case "MoveChildFromOtherContainmentInSameParent_Multiple":
|
|
194
203
|
linkTestConcept().addContainment_1_nAtIndex(lastOfArray(linkTestConcept().containment_0_n), 1);
|
|
195
204
|
return waitForReceivedMessages(1);
|
|
196
|
-
case "AddPartition":
|
|
197
|
-
lionWebClient.
|
|
205
|
+
case "AddPartition": {
|
|
206
|
+
const partition = lionWebClient.forest.createNode(testLanguageBase.TestPartition, "partition");
|
|
207
|
+
partition.data = lionWebClient.forest.createNode(testLanguageBase.DataTypeTestConcept, "data");
|
|
208
|
+
partition.addLinks(lionWebClient.forest.createNode(testLanguageBase.LinkTestConcept, "link"));
|
|
209
|
+
lionWebClient.addPartition(partition);
|
|
198
210
|
return waitForReceivedMessages(1);
|
|
211
|
+
}
|
|
199
212
|
default: {
|
|
200
213
|
// (shouldn't happen because of upfront validation of tasks)
|
|
201
214
|
console.log(genericWarning(`task "${task}" is unknown => ignored`));
|
package/dist/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/delta-protocol-test-cli",
|
|
3
|
-
"version": "0.8.0-beta.
|
|
3
|
+
"version": "0.8.0-beta.2",
|
|
4
4
|
"description": "CLI programs for testing the delta protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
"release": "npm publish"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@lionweb/class-core": "0.8.0-beta.
|
|
34
|
-
"@lionweb/class-core-test-language": "0.8.0-beta.
|
|
35
|
-
"@lionweb/core": "0.8.0-beta.
|
|
36
|
-
"@lionweb/delta-protocol-client": "0.8.0-beta.
|
|
37
|
-
"@lionweb/delta-protocol-common": "0.8.0-beta.
|
|
38
|
-
"@lionweb/delta-protocol-low-level-client-ws": "0.8.0-beta.
|
|
39
|
-
"@lionweb/delta-protocol-repository-ws": "0.8.0-beta.
|
|
40
|
-
"@lionweb/json": "0.8.0-beta.
|
|
41
|
-
"@lionweb/utilities": "0.8.0-beta.
|
|
33
|
+
"@lionweb/class-core": "0.8.0-beta.2",
|
|
34
|
+
"@lionweb/class-core-test-language": "0.8.0-beta.2",
|
|
35
|
+
"@lionweb/core": "0.8.0-beta.2",
|
|
36
|
+
"@lionweb/delta-protocol-client": "0.8.0-beta.2",
|
|
37
|
+
"@lionweb/delta-protocol-common": "0.8.0-beta.2",
|
|
38
|
+
"@lionweb/delta-protocol-low-level-client-ws": "0.8.0-beta.2",
|
|
39
|
+
"@lionweb/delta-protocol-repository-ws": "0.8.0-beta.2",
|
|
40
|
+
"@lionweb/json": "0.8.0-beta.2",
|
|
41
|
+
"@lionweb/utilities": "0.8.0-beta.2"
|
|
42
42
|
}
|
|
43
43
|
}
|
package/src/cli-client.ts
CHANGED
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
// SPDX-License-Identifier: Apache-2.0
|
|
19
19
|
|
|
20
20
|
import { TestLanguageBase } from "@lionweb/class-core-test-language"
|
|
21
|
-
import { Concept } from "@lionweb/core"
|
|
22
21
|
import { LionWebClient, LowLevelClientLogItem } from "@lionweb/delta-protocol-client"
|
|
23
22
|
import { ansi, combine, semanticConsoleLogger, semanticLogItemStorer } from "@lionweb/delta-protocol-common"
|
|
24
23
|
import { createWSLowLevelClient } from "@lionweb/delta-protocol-low-level-client-ws"
|
|
@@ -38,12 +37,7 @@ const languageBases = [testLanguageBase]
|
|
|
38
37
|
const boldRedIf = (apply: boolean, text: string) =>
|
|
39
38
|
apply ? genericError(text) : text
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
[testLanguageBase.DataTypeTestConcept, testLanguageBase.LinkTestConcept]
|
|
43
|
-
.map((concept) => [concept.name, concept])
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
// $ node dist/cli-client.js <port> <clientID> <partitionConcept> [tasks] [--${protocolLogOptionPrefix}=<path>]
|
|
40
|
+
// $ node dist/cli-client.js <port> <clientID> [tasks] [--${protocolLogOptionPrefix}=<path>]
|
|
47
41
|
|
|
48
42
|
const protocolLogOptionPrefix = "--protocol-log="
|
|
49
43
|
const protocolLogPathIndex = argv.findIndex((argument) => argument.startsWith(protocolLogOptionPrefix))
|
|
@@ -57,8 +51,7 @@ if (trueArguments.length < 3) {
|
|
|
57
51
|
Parameters (${genericError("bold red")} are missing):
|
|
58
52
|
- ${boldRedIf(trueArguments.length < 1, `<port>: the port of the WebSocket where the LionWeb delta protocol repository is running on localhost`)}
|
|
59
53
|
- ${boldRedIf(trueArguments.length < 2, `<clientID>: the ID that the client identifies itself with at the repository`)}
|
|
60
|
-
- ${boldRedIf(trueArguments.length < 3,
|
|
61
|
-
- ${boldRedIf(trueArguments.length < 4, `[tasks]: a comma-separated list of tasks — one of ${Object.keys(recognizedTasks).sort().join(", ")}`)}
|
|
54
|
+
- ${boldRedIf(trueArguments.length < 3, `[tasks]: a comma-separated list of tasks — one of ${Object.keys(recognizedTasks).sort().join(", ")}`)}
|
|
62
55
|
- ${boldRedIf(protocolLogPathIndex === -1, `${protocolLogOptionPrefix}=<path>: option to configure that the client logs all messages exchanged with the repository to a file with the given path`)}
|
|
63
56
|
|
|
64
57
|
ASSUMPTION: the initial (states of the models) on client(s) and repository are identical!
|
|
@@ -68,12 +61,7 @@ Parameters (${genericError("bold red")} are missing):
|
|
|
68
61
|
|
|
69
62
|
const port = tryParseInteger(argv[2])
|
|
70
63
|
const clientId = argv[3]
|
|
71
|
-
const
|
|
72
|
-
if (!(partitionConcept in partitionConcepts)) {
|
|
73
|
-
console.error(genericError(`unknown partition concept specified: ${partitionConcept} — must be one of: ${Object.keys(partitionConcepts).join(", ")}`))
|
|
74
|
-
exit(2)
|
|
75
|
-
}
|
|
76
|
-
const tasks = argv[5]?.split(",") ?? []
|
|
64
|
+
const tasks = argv[4]?.split(",") ?? []
|
|
77
65
|
console.log(clientInfo(`tasks provided: ${tasks.length === 0 ? "none" : tasks.join(", ")}`))
|
|
78
66
|
const infoUnrecognizedTasks = tasks
|
|
79
67
|
.map((task, index) => task in recognizedTasks ? undefined : [task, index] as [string, number])
|
|
@@ -108,10 +96,7 @@ await runAsApp(async () => {
|
|
|
108
96
|
|
|
109
97
|
console.log(clientInfo(`LionWeb delta protocol client (with ID=${clientId}) connecting to repository on ${url} - press Ctrl+C to terminate`))
|
|
110
98
|
|
|
111
|
-
const
|
|
112
|
-
lionWebClient.setModel([partition])
|
|
113
|
-
|
|
114
|
-
const executeTask = taskExecutor(lionWebClient, partition, semanticLogItems)
|
|
99
|
+
const executeTask = taskExecutor(lionWebClient, semanticLogItems)
|
|
115
100
|
|
|
116
101
|
let querySequenceNumber = 0
|
|
117
102
|
const queryId = () => `query-${++querySequenceNumber}`
|
package/src/tasks.ts
CHANGED
|
@@ -15,12 +15,17 @@
|
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
|
|
18
|
-
import { INodeBase } from "@lionweb/class-core"
|
|
19
18
|
import { LionWebClient } from "@lionweb/delta-protocol-client"
|
|
20
19
|
import { ansi, ClientReceivedMessage, ISemanticLogItem } from "@lionweb/delta-protocol-common"
|
|
21
20
|
import { LionWebId } from "@lionweb/json"
|
|
22
21
|
import { lastOfArray } from "@lionweb/ts-utils"
|
|
23
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
DataTypeTestConcept,
|
|
24
|
+
LinkTestConcept,
|
|
25
|
+
TestAnnotation,
|
|
26
|
+
TestLanguageBase,
|
|
27
|
+
TestPartition
|
|
28
|
+
} from "@lionweb/class-core-test-language"
|
|
24
29
|
|
|
25
30
|
import { waitUntil } from "./async.js"
|
|
26
31
|
const { clientInfo, genericWarning } = ansi
|
|
@@ -75,7 +80,7 @@ export const recognizedTasks: Record<string, boolean> = {
|
|
|
75
80
|
const testLanguageBase = TestLanguageBase.INSTANCE
|
|
76
81
|
|
|
77
82
|
|
|
78
|
-
export const taskExecutor = (lionWebClient: LionWebClient,
|
|
83
|
+
export const taskExecutor = (lionWebClient: LionWebClient, semanticLogItems: ISemanticLogItem[]) => {
|
|
79
84
|
|
|
80
85
|
const numberOfReceivedMessages = () =>
|
|
81
86
|
semanticLogItems.filter((item) => item instanceof ClientReceivedMessage).length
|
|
@@ -89,12 +94,25 @@ export const taskExecutor = (lionWebClient: LionWebClient, partition: INodeBase,
|
|
|
89
94
|
}
|
|
90
95
|
|
|
91
96
|
const annotation = (id: LionWebId) =>
|
|
92
|
-
lionWebClient.createNode(testLanguageBase.TestAnnotation, id) as TestAnnotation
|
|
97
|
+
lionWebClient.forest.createNode(testLanguageBase.TestAnnotation, id) as TestAnnotation
|
|
98
|
+
|
|
99
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
100
|
+
const as = <T>(obj: object, classConstructor: new (...args: any[]) => T, customErrorMessage?: string) => {
|
|
101
|
+
if (obj instanceof classConstructor) {
|
|
102
|
+
return obj as T
|
|
103
|
+
}
|
|
104
|
+
throw new Error(customErrorMessage ?? `object is not of class ${classConstructor.name}`)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const thePartition = () =>
|
|
108
|
+
as(lionWebClient.forest.partitions[0], TestPartition, `partition at index 0 in forest is not a ${testLanguageBase.TestPartition.name}`)
|
|
93
109
|
|
|
94
110
|
const linkTestConcept = (id?: LionWebId) =>
|
|
95
111
|
id === undefined
|
|
96
|
-
?
|
|
97
|
-
: lionWebClient.createNode(testLanguageBase.LinkTestConcept, id) as LinkTestConcept
|
|
112
|
+
? thePartition().links[0]
|
|
113
|
+
: lionWebClient.forest.createNode(testLanguageBase.LinkTestConcept, id) as LinkTestConcept
|
|
114
|
+
|
|
115
|
+
const dataTypeTestConcept = () => thePartition().data!
|
|
98
116
|
|
|
99
117
|
return async (task: keyof typeof recognizedTasks, queryId: string) => {
|
|
100
118
|
console.log(clientInfo(`client "${lionWebClient.clientId}" is executing task "${task}"`))
|
|
@@ -113,13 +131,13 @@ export const taskExecutor = (lionWebClient: LionWebClient, partition: INodeBase,
|
|
|
113
131
|
return waitForReceivedMessages(1)
|
|
114
132
|
}
|
|
115
133
|
case "AddStringValue_0_1":
|
|
116
|
-
(
|
|
134
|
+
dataTypeTestConcept().stringValue_0_1 = "new property"
|
|
117
135
|
return waitForReceivedMessages(1)
|
|
118
136
|
case "SetStringValue_0_1":
|
|
119
|
-
(
|
|
137
|
+
dataTypeTestConcept().stringValue_0_1 = "changed property"
|
|
120
138
|
return waitForReceivedMessages(1)
|
|
121
139
|
case "DeleteStringValue_0_1":
|
|
122
|
-
(
|
|
140
|
+
dataTypeTestConcept().stringValue_0_1 = undefined
|
|
123
141
|
return waitForReceivedMessages(1)
|
|
124
142
|
case "AddName_Containment_0_1":
|
|
125
143
|
linkTestConcept().containment_0_1!.name = "my name"
|
|
@@ -215,9 +233,13 @@ export const taskExecutor = (lionWebClient: LionWebClient, partition: INodeBase,
|
|
|
215
233
|
case "MoveChildFromOtherContainmentInSameParent_Multiple":
|
|
216
234
|
linkTestConcept().addContainment_1_nAtIndex(lastOfArray(linkTestConcept().containment_0_n), 1)
|
|
217
235
|
return waitForReceivedMessages(1)
|
|
218
|
-
case "AddPartition":
|
|
219
|
-
lionWebClient.
|
|
236
|
+
case "AddPartition": {
|
|
237
|
+
const partition = lionWebClient.forest.createNode(testLanguageBase.TestPartition, "partition") as TestPartition
|
|
238
|
+
partition.data = lionWebClient.forest.createNode(testLanguageBase.DataTypeTestConcept, "data") as DataTypeTestConcept
|
|
239
|
+
partition.addLinks(lionWebClient.forest.createNode(testLanguageBase.LinkTestConcept, "link") as LinkTestConcept)
|
|
240
|
+
lionWebClient.addPartition(partition)
|
|
220
241
|
return waitForReceivedMessages(1)
|
|
242
|
+
}
|
|
221
243
|
|
|
222
244
|
default: {
|
|
223
245
|
// (shouldn't happen because of upfront validation of tasks)
|