@fincity/kirun-js 1.0.5 → 1.1.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/__tests__/engine/function/system/array/AddFirstTest.ts +13 -12
- package/__tests__/engine/function/system/array/AddTest.ts +11 -11
- package/__tests__/engine/function/system/array/BinarySearchTest.ts +29 -14
- package/__tests__/engine/function/system/array/CompareTest.ts +3 -3
- package/__tests__/engine/function/system/array/CopyTest.ts +5 -5
- package/__tests__/engine/function/system/array/DeleteFirstTest.ts +10 -10
- package/__tests__/engine/function/system/array/DeleteFromTest.ts +8 -8
- package/__tests__/engine/function/system/array/DeleteLastTest.ts +10 -10
- package/__tests__/engine/function/system/array/DeleteTest.ts +60 -25
- package/__tests__/engine/function/system/array/DisjointTest.ts +6 -7
- package/__tests__/engine/function/system/array/Equals.ts +5 -5
- package/__tests__/engine/function/system/array/FillTest.ts +5 -5
- package/__tests__/engine/function/system/array/FrequencyTest.ts +11 -11
- package/__tests__/engine/function/system/array/IndexOfArrayTest.ts +14 -20
- package/__tests__/engine/function/system/array/IndexOfTest.ts +26 -14
- package/__tests__/engine/function/system/array/InsertTest.ts +12 -12
- package/__tests__/engine/function/system/array/LastIndexOfArrayTest.ts +9 -12
- package/__tests__/engine/function/system/array/LastIndexOfTest.ts +16 -16
- package/__tests__/engine/function/system/array/MaxTest.ts +18 -18
- package/__tests__/engine/function/system/array/MinTest.ts +18 -18
- package/__tests__/engine/function/system/array/MisMatchTest.ts +8 -11
- package/__tests__/engine/function/system/array/ReverseTest.ts +12 -12
- package/__tests__/engine/function/system/array/RotateTest.ts +6 -6
- package/__tests__/engine/function/system/array/ShuffleTest.ts +7 -4
- package/__tests__/engine/function/system/array/SortTest.ts +10 -10
- package/__tests__/engine/function/system/array/SubArrayTest.ts +19 -10
- package/__tests__/engine/function/system/context/SetFunctionTest.ts +24 -5
- package/__tests__/engine/function/system/math/AddTest.ts +2 -2
- package/__tests__/engine/function/system/math/RandomIntTest.ts +46 -0
- package/__tests__/engine/function/system/string/ConcatenateTest.ts +4 -4
- package/__tests__/engine/function/system/string/DeleteForGivenLengthTest.ts +8 -4
- package/__tests__/engine/function/system/string/InsertAtGivenPositionTest.ts +6 -6
- package/__tests__/engine/function/system/string/PostPadTest.ts +6 -6
- package/__tests__/engine/function/system/string/PrePadTest.ts +8 -8
- package/__tests__/engine/function/system/string/RegionMatchesTest.ts +15 -6
- package/__tests__/engine/function/system/string/ReverseTest.ts +6 -6
- package/__tests__/engine/function/system/string/SplitTest.ts +8 -4
- package/__tests__/engine/function/system/string/StringFunctionRepoTest2.ts +35 -11
- package/__tests__/engine/function/system/string/StringFunctionRepoTest3.ts +14 -5
- package/__tests__/engine/function/system/string/StringFunctionRepositoryTest.ts +40 -16
- package/__tests__/engine/function/system/string/ToStringTest.ts +6 -6
- package/__tests__/engine/function/system/string/TrimToTest.ts +8 -6
- package/__tests__/engine/runtime/KIRuntimeTest.ts +148 -155
- package/__tests__/engine/runtime/KIRuntimeWithDefinitionTest.ts +89 -0
- package/__tests__/engine/util/LinkedListTest.ts +9 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +267 -109
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/engine/function/AbstractFunction.ts +5 -3
- package/src/engine/function/Function.ts +1 -1
- package/src/engine/function/system/GenerateEvent.ts +1 -1
- package/src/engine/function/system/If.ts +1 -1
- package/src/engine/function/system/array/AbstractArrayFunction.ts +5 -0
- package/src/engine/function/system/array/Add.ts +1 -1
- package/src/engine/function/system/array/AddFirst.ts +1 -1
- package/src/engine/function/system/array/BinarySearch.ts +1 -1
- package/src/engine/function/system/array/Compare.ts +1 -1
- package/src/engine/function/system/array/Copy.ts +1 -1
- package/src/engine/function/system/array/Delete.ts +24 -32
- package/src/engine/function/system/array/DeleteFirst.ts +1 -1
- package/src/engine/function/system/array/DeleteFrom.ts +1 -1
- package/src/engine/function/system/array/DeleteLast.ts +1 -1
- package/src/engine/function/system/array/Disjoint.ts +1 -1
- package/src/engine/function/system/array/Equals.ts +2 -2
- package/src/engine/function/system/array/Fill.ts +1 -1
- package/src/engine/function/system/array/Frequency.ts +1 -1
- package/src/engine/function/system/array/IndexOf.ts +1 -1
- package/src/engine/function/system/array/IndexOfArray.ts +1 -1
- package/src/engine/function/system/array/Insert.ts +1 -1
- package/src/engine/function/system/array/LastIndexOf.ts +1 -1
- package/src/engine/function/system/array/LastIndexOfArray.ts +1 -1
- package/src/engine/function/system/array/Max.ts +1 -1
- package/src/engine/function/system/array/Min.ts +1 -1
- package/src/engine/function/system/array/MisMatch.ts +1 -1
- package/src/engine/function/system/array/Reverse.ts +1 -1
- package/src/engine/function/system/array/Rotate.ts +1 -1
- package/src/engine/function/system/array/Shuffle.ts +1 -1
- package/src/engine/function/system/array/Sort.ts +1 -1
- package/src/engine/function/system/array/SubArray.ts +1 -1
- package/src/engine/function/system/context/Create.ts +1 -1
- package/src/engine/function/system/context/Get.ts +1 -1
- package/src/engine/function/system/context/SetFunction.ts +1 -1
- package/src/engine/function/system/loop/CountLoop.ts +1 -1
- package/src/engine/function/system/loop/RangeLoop.ts +1 -1
- package/src/engine/function/system/math/Add.ts +2 -4
- package/src/engine/function/system/math/GenericMathFunction.ts +2 -4
- package/src/engine/function/system/math/Hypotenuse.ts +2 -6
- package/src/engine/function/system/math/Maximum.ts +2 -4
- package/src/engine/function/system/math/Minimum.ts +2 -4
- package/src/engine/function/system/math/Random.ts +1 -1
- package/src/engine/function/system/math/RandomFloat.ts +56 -0
- package/src/engine/function/system/math/RandomInt.ts +56 -0
- package/src/engine/function/system/string/AbstractStringFunction.ts +24 -8
- package/src/engine/function/system/string/Concatenate.ts +2 -2
- package/src/engine/function/system/string/DeleteForGivenLength.ts +25 -15
- package/src/engine/function/system/string/InsertAtGivenPosition.ts +17 -7
- package/src/engine/function/system/string/PostPad.ts +20 -10
- package/src/engine/function/system/string/PrePad.ts +17 -7
- package/src/engine/function/system/string/RegionMatches.ts +40 -22
- package/src/engine/function/system/string/ReplaceAtGivenPosition.ts +26 -13
- package/src/engine/function/system/string/Reverse.ts +4 -3
- package/src/engine/function/system/string/Split.ts +13 -4
- package/src/engine/function/system/string/ToString.ts +9 -5
- package/src/engine/function/system/string/TrimTo.ts +13 -6
- package/src/engine/json/schema/Schema.ts +1 -0
- package/src/engine/model/Event.ts +15 -0
- package/src/engine/model/FunctionDefinition.ts +76 -29
- package/src/engine/model/Parameter.ts +11 -0
- package/src/engine/model/ParameterReference.ts +8 -1
- package/src/engine/model/Position.ts +5 -0
- package/src/engine/model/Statement.ts +16 -0
- package/src/engine/model/StatementGroup.ts +7 -0
- package/src/engine/runtime/KIRuntime.ts +26 -24
- package/src/index.ts +71 -20
|
@@ -21,7 +21,7 @@ import { FunctionOutput } from '../../../src/engine/model/FunctionOutput';
|
|
|
21
21
|
import { HybridRepository } from '../../../src/engine/HybridRepository';
|
|
22
22
|
import { Function } from '../../../src/engine/function/Function';
|
|
23
23
|
|
|
24
|
-
test('KIRuntime Test 1', () => {
|
|
24
|
+
test('KIRuntime Test 1', async () => {
|
|
25
25
|
let start = new Date().getTime();
|
|
26
26
|
let num: number = 7000;
|
|
27
27
|
let array: number[] = [];
|
|
@@ -44,16 +44,19 @@ test('KIRuntime Test 1', () => {
|
|
|
44
44
|
defaultValue: new Array(),
|
|
45
45
|
items: integerSchema,
|
|
46
46
|
};
|
|
47
|
-
var createArray =new Statement(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
var createArray = new Statement(
|
|
48
|
+
'createArray',
|
|
49
|
+
create.getNamespace(),
|
|
50
|
+
create.getName(),
|
|
51
|
+
).setParameterMap(
|
|
52
|
+
new Map([
|
|
53
|
+
['name', [ParameterReference.ofValue('a')]],
|
|
54
|
+
['schema', [ParameterReference.ofValue(arrayOfIntegerSchema)]],
|
|
55
|
+
]),
|
|
56
|
+
);
|
|
54
57
|
|
|
55
58
|
var rangeLoop = new RangeLoop().getSignature();
|
|
56
|
-
var loop =new Statement('loop', rangeLoop.getNamespace(), rangeLoop.getName())
|
|
59
|
+
var loop = new Statement('loop', rangeLoop.getNamespace(), rangeLoop.getName())
|
|
57
60
|
.setParameterMap(
|
|
58
61
|
new Map([
|
|
59
62
|
['from', [ParameterReference.ofValue(0)]],
|
|
@@ -65,7 +68,7 @@ test('KIRuntime Test 1', () => {
|
|
|
65
68
|
var resultObj = { name: 'result', value: { isExpression: true, value: 'Context.a' } };
|
|
66
69
|
|
|
67
70
|
var generate = new GenerateEvent().getSignature();
|
|
68
|
-
var outputGenerate =new Statement('outputStep', generate.getNamespace(), generate.getName())
|
|
71
|
+
var outputGenerate = new Statement('outputStep', generate.getNamespace(), generate.getName())
|
|
69
72
|
.setParameterMap(
|
|
70
73
|
new Map([
|
|
71
74
|
['eventName', [ParameterReference.ofValue('output')]],
|
|
@@ -75,22 +78,25 @@ test('KIRuntime Test 1', () => {
|
|
|
75
78
|
.setDependentStatements(['Steps.loop.output']);
|
|
76
79
|
|
|
77
80
|
var ifFunction = new If().getSignature();
|
|
78
|
-
var ifStep =new Statement(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
var ifStep = new Statement(
|
|
82
|
+
'if',
|
|
83
|
+
ifFunction.getNamespace(),
|
|
84
|
+
ifFunction.getName(),
|
|
85
|
+
).setParameterMap(
|
|
86
|
+
new Map([
|
|
87
|
+
[
|
|
88
|
+
'condition',
|
|
81
89
|
[
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
'Steps.loop.iteration.index = 0 or Steps.loop.iteration.index = 1',
|
|
86
|
-
),
|
|
87
|
-
],
|
|
90
|
+
ParameterReference.ofExpression(
|
|
91
|
+
'Steps.loop.iteration.index = 0 or Steps.loop.iteration.index = 1',
|
|
92
|
+
),
|
|
88
93
|
],
|
|
89
|
-
]
|
|
90
|
-
)
|
|
94
|
+
],
|
|
95
|
+
]),
|
|
96
|
+
);
|
|
91
97
|
|
|
92
98
|
var set = new SetFunction().getSignature();
|
|
93
|
-
var set1 =new Statement('setOnTrue', set.getNamespace(), set.getName())
|
|
99
|
+
var set1 = new Statement('setOnTrue', set.getNamespace(), set.getName())
|
|
94
100
|
.setParameterMap(
|
|
95
101
|
new Map([
|
|
96
102
|
['name', [ParameterReference.ofValue('Context.a[Steps.loop.iteration.index]')]],
|
|
@@ -98,7 +104,7 @@ test('KIRuntime Test 1', () => {
|
|
|
98
104
|
]),
|
|
99
105
|
)
|
|
100
106
|
.setDependentStatements(['Steps.if.true']);
|
|
101
|
-
var set2 =new Statement('setOnFalse', set.getNamespace(), set.getName())
|
|
107
|
+
var set2 = new Statement('setOnFalse', set.getNamespace(), set.getName())
|
|
102
108
|
.setParameterMap(
|
|
103
109
|
new Map([
|
|
104
110
|
['name', [ParameterReference.ofValue('Context.a[Steps.loop.iteration.index]')]],
|
|
@@ -115,141 +121,132 @@ test('KIRuntime Test 1', () => {
|
|
|
115
121
|
.setDependentStatements(['Steps.if.false']);
|
|
116
122
|
|
|
117
123
|
start = new Date().getTime();
|
|
118
|
-
let out: EventResult[] =
|
|
119
|
-
new
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
)
|
|
146
|
-
new
|
|
147
|
-
|
|
148
|
-
)
|
|
149
|
-
.execute(new FunctionExecutionParameters().setArguments(new Map([['Count', num]])))
|
|
150
|
-
.allResults();
|
|
124
|
+
let out: EventResult[] = (
|
|
125
|
+
await new KIRuntime(
|
|
126
|
+
new FunctionDefinition('Fibonacci')
|
|
127
|
+
.setSteps(
|
|
128
|
+
new Map([
|
|
129
|
+
Statement.ofEntry(createArray),
|
|
130
|
+
Statement.ofEntry(loop),
|
|
131
|
+
Statement.ofEntry(outputGenerate),
|
|
132
|
+
Statement.ofEntry(ifStep),
|
|
133
|
+
Statement.ofEntry(set1),
|
|
134
|
+
Statement.ofEntry(set2),
|
|
135
|
+
]),
|
|
136
|
+
)
|
|
137
|
+
.setNamespace('Test')
|
|
138
|
+
.setEvents(
|
|
139
|
+
new Map([
|
|
140
|
+
Event.outputEventMapEntry(
|
|
141
|
+
new Map([
|
|
142
|
+
['result', Schema.ofArray('result', Schema.ofInteger('result'))],
|
|
143
|
+
]),
|
|
144
|
+
),
|
|
145
|
+
]),
|
|
146
|
+
)
|
|
147
|
+
.setParameters(
|
|
148
|
+
new Map([['Count', new Parameter('Count', Schema.ofInteger('Count'))]]),
|
|
149
|
+
) as FunctionDefinition,
|
|
150
|
+
new KIRunFunctionRepository(),
|
|
151
|
+
new KIRunSchemaRepository(),
|
|
152
|
+
).execute(new FunctionExecutionParameters().setArguments(new Map([['Count', num]])))
|
|
153
|
+
).allResults();
|
|
151
154
|
console.log('KIRunt Logic : ' + (new Date().getTime() - start));
|
|
152
155
|
expect(out[0].getResult().get('result')).toStrictEqual(array);
|
|
153
156
|
});
|
|
154
157
|
|
|
155
|
-
test('KIRuntime Test 2', () => {
|
|
158
|
+
test('KIRuntime Test 2', async () => {
|
|
156
159
|
var genEvent = new GenerateEvent().getSignature();
|
|
157
160
|
|
|
158
161
|
var expression = { isExpression: true, value: 'Steps.first.output.value' };
|
|
159
162
|
|
|
160
163
|
let resultObj = { name: 'result', value: expression };
|
|
161
164
|
|
|
162
|
-
let out: EventResult[] =
|
|
163
|
-
(
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
[
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
).setSteps(
|
|
175
|
-
new Map([
|
|
176
|
-
Statement.ofEntry(
|
|
177
|
-
new Statement('first', Namespaces.MATH, 'Absolute')
|
|
178
|
-
.setParameterMap(
|
|
165
|
+
let out: EventResult[] = (
|
|
166
|
+
await new KIRuntime(
|
|
167
|
+
(
|
|
168
|
+
new FunctionDefinition('SingleCall')
|
|
169
|
+
.setNamespace('Test')
|
|
170
|
+
.setParameters(
|
|
171
|
+
new Map([['Value', new Parameter('Value', Schema.ofInteger('Value'))]]),
|
|
172
|
+
) as FunctionDefinition
|
|
173
|
+
).setSteps(
|
|
174
|
+
new Map([
|
|
175
|
+
Statement.ofEntry(
|
|
176
|
+
new Statement('first', Namespaces.MATH, 'Absolute').setParameterMap(
|
|
179
177
|
new Map([
|
|
180
178
|
['value', [ParameterReference.ofExpression('Arguments.Value')]],
|
|
181
179
|
]),
|
|
182
180
|
),
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
181
|
+
),
|
|
182
|
+
Statement.ofEntry(
|
|
183
|
+
new Statement(
|
|
184
|
+
'second',
|
|
185
|
+
genEvent.getNamespace(),
|
|
186
|
+
genEvent.getName(),
|
|
187
|
+
).setParameterMap(
|
|
187
188
|
new Map([
|
|
188
189
|
['eventName', [ParameterReference.ofValue('output')]],
|
|
189
190
|
['results', [ParameterReference.ofValue(resultObj)]],
|
|
190
191
|
]),
|
|
191
192
|
),
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
.allResults();
|
|
193
|
+
),
|
|
194
|
+
]),
|
|
195
|
+
),
|
|
196
|
+
new KIRunFunctionRepository(),
|
|
197
|
+
new KIRunSchemaRepository(),
|
|
198
|
+
).execute(new FunctionExecutionParameters().setArguments(new Map([['Value', -10]])))
|
|
199
|
+
).allResults();
|
|
200
200
|
|
|
201
201
|
expect(out[0].getResult().get('result')).toBe(10);
|
|
202
202
|
});
|
|
203
|
-
test('KIRuntime Test 3', () => {
|
|
203
|
+
test('KIRuntime Test 3', async () => {
|
|
204
204
|
var genEvent = new GenerateEvent().getSignature();
|
|
205
205
|
|
|
206
206
|
var expression = { isExpression: true, value: 'Steps.first.output.value' };
|
|
207
207
|
|
|
208
208
|
let resultObj = { name: 'result', value: expression };
|
|
209
209
|
|
|
210
|
-
let out: EventResult[] =
|
|
211
|
-
(
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
[
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
).setSteps(
|
|
223
|
-
new Map([
|
|
224
|
-
Statement.ofEntry(
|
|
225
|
-
new Statement('first', Namespaces.MATH, 'CubeRoot')
|
|
226
|
-
.setParameterMap(
|
|
210
|
+
let out: EventResult[] = (
|
|
211
|
+
await new KIRuntime(
|
|
212
|
+
(
|
|
213
|
+
new FunctionDefinition('SingleCall')
|
|
214
|
+
.setNamespace('Test')
|
|
215
|
+
.setParameters(
|
|
216
|
+
new Map([['Value', new Parameter('Value', Schema.ofInteger('Value'))]]),
|
|
217
|
+
) as FunctionDefinition
|
|
218
|
+
).setSteps(
|
|
219
|
+
new Map([
|
|
220
|
+
Statement.ofEntry(
|
|
221
|
+
new Statement('first', Namespaces.MATH, 'CubeRoot').setParameterMap(
|
|
227
222
|
new Map([
|
|
228
223
|
['value', [ParameterReference.ofExpression('Arguments.Value')]],
|
|
229
224
|
]),
|
|
230
225
|
),
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
226
|
+
),
|
|
227
|
+
Statement.ofEntry(
|
|
228
|
+
new Statement(
|
|
229
|
+
'second',
|
|
230
|
+
genEvent.getNamespace(),
|
|
231
|
+
genEvent.getName(),
|
|
232
|
+
).setParameterMap(
|
|
235
233
|
new Map([
|
|
236
234
|
['eventName', [ParameterReference.ofValue('output')]],
|
|
237
235
|
['results', [ParameterReference.ofValue(resultObj)]],
|
|
238
236
|
]),
|
|
239
237
|
),
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
.allResults();
|
|
238
|
+
),
|
|
239
|
+
]),
|
|
240
|
+
),
|
|
241
|
+
new KIRunFunctionRepository(),
|
|
242
|
+
new KIRunSchemaRepository(),
|
|
243
|
+
).execute(new FunctionExecutionParameters().setArguments(new Map([['Value', 27]])))
|
|
244
|
+
).allResults();
|
|
248
245
|
|
|
249
246
|
expect(out[0].getResult().get('result')).toBe(3);
|
|
250
247
|
});
|
|
251
248
|
|
|
252
|
-
test('KIRuntime Test 4', () => {
|
|
249
|
+
test('KIRuntime Test 4', async () => {
|
|
253
250
|
let start = new Date().getTime();
|
|
254
251
|
const num = 7;
|
|
255
252
|
let array = new Array(num);
|
|
@@ -266,14 +263,7 @@ test('KIRuntime Test 4', () => {
|
|
|
266
263
|
|
|
267
264
|
var fibFunctionSignature = new FunctionSignature('FibFunction')
|
|
268
265
|
.setNamespace('FibSpace')
|
|
269
|
-
.setParameters(
|
|
270
|
-
new Map([
|
|
271
|
-
[
|
|
272
|
-
'value',
|
|
273
|
-
new Parameter('value',Schema.ofInteger('value')),
|
|
274
|
-
],
|
|
275
|
-
]),
|
|
276
|
-
)
|
|
266
|
+
.setParameters(new Map([['value', new Parameter('value', Schema.ofInteger('value'))]]))
|
|
277
267
|
.setEvents(
|
|
278
268
|
new Map([
|
|
279
269
|
Event.outputEventMapEntry(
|
|
@@ -286,7 +276,9 @@ test('KIRuntime Test 4', () => {
|
|
|
286
276
|
return fibFunctionSignature;
|
|
287
277
|
}
|
|
288
278
|
|
|
289
|
-
protected internalExecute(
|
|
279
|
+
protected async internalExecute(
|
|
280
|
+
context: FunctionExecutionParameters,
|
|
281
|
+
): Promise<FunctionOutput> {
|
|
290
282
|
let count = context.getArguments()?.get('value');
|
|
291
283
|
let a = new Array(count);
|
|
292
284
|
for (let i = 0; i < count; i++) a[i] = i < 2 ? i : a[i - 1] + a[i - 2];
|
|
@@ -308,44 +300,45 @@ test('KIRuntime Test 4', () => {
|
|
|
308
300
|
});
|
|
309
301
|
|
|
310
302
|
start = new Date().getTime();
|
|
311
|
-
let out: EventResult[] =
|
|
312
|
-
(
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
[
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
.setParameterMap(
|
|
303
|
+
let out: EventResult[] = (
|
|
304
|
+
await new KIRuntime(
|
|
305
|
+
(
|
|
306
|
+
new FunctionDefinition('CustomFunction')
|
|
307
|
+
.setNamespace('Test')
|
|
308
|
+
.setParameters(
|
|
309
|
+
new Map([['Value', new Parameter('Value', Schema.ofInteger('Value'))]]),
|
|
310
|
+
) as FunctionDefinition
|
|
311
|
+
).setSteps(
|
|
312
|
+
new Map([
|
|
313
|
+
Statement.ofEntry(
|
|
314
|
+
new Statement(
|
|
315
|
+
'fib',
|
|
316
|
+
fibFunctionSignature.getNamespace(),
|
|
317
|
+
'asdf',
|
|
318
|
+
).setParameterMap(
|
|
328
319
|
new Map([
|
|
329
320
|
['value', [ParameterReference.ofExpression('Arguments.Value')]],
|
|
330
321
|
]),
|
|
331
322
|
),
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
323
|
+
),
|
|
324
|
+
Statement.ofEntry(
|
|
325
|
+
new Statement(
|
|
326
|
+
'fiboutput',
|
|
327
|
+
genEvent.getNamespace(),
|
|
328
|
+
genEvent.getName(),
|
|
329
|
+
).setParameterMap(
|
|
336
330
|
new Map([
|
|
337
331
|
['eventName', [ParameterReference.ofValue('output')]],
|
|
338
332
|
['results', [ParameterReference.ofValue(resultObj)]],
|
|
339
333
|
]),
|
|
340
334
|
),
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
.allResults();
|
|
335
|
+
),
|
|
336
|
+
]),
|
|
337
|
+
),
|
|
338
|
+
hybrid,
|
|
339
|
+
new KIRunSchemaRepository(),
|
|
340
|
+
).execute(new FunctionExecutionParameters().setArguments(new Map([['Value', num]])))
|
|
341
|
+
).allResults();
|
|
349
342
|
console.log('KIRun Logic : ' + (new Date().getTime() - start));
|
|
350
343
|
expect(out[0].getResult().get('result')).toStrictEqual(array);
|
|
351
344
|
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { KIRuntime } from '../../../src/engine/runtime/KIRuntime';
|
|
2
|
+
import { EventResult } from '../../../src/engine/model/EventResult';
|
|
3
|
+
import { Event } from '../../../src/engine/model/Event';
|
|
4
|
+
import { FunctionDefinition } from '../../../src/engine/model/FunctionDefinition';
|
|
5
|
+
import { Parameter } from '../../../src/engine/model/Parameter';
|
|
6
|
+
import { FunctionExecutionParameters } from '../../../src/engine/runtime/FunctionExecutionParameters';
|
|
7
|
+
import { Create } from '../../../src/engine/function/system/context/Create';
|
|
8
|
+
import { SetFunction } from '../../../src/engine/function/system/context/SetFunction';
|
|
9
|
+
import { GenerateEvent } from '../../../src/engine/function/system/GenerateEvent';
|
|
10
|
+
import { If } from '../../../src/engine/function/system/If';
|
|
11
|
+
import { RangeLoop } from '../../../src/engine/function/system/loop/RangeLoop';
|
|
12
|
+
import { Statement } from '../../../src/engine/model/Statement';
|
|
13
|
+
import { ParameterReference } from '../../../src/engine/model/ParameterReference';
|
|
14
|
+
import { Schema } from '../../../src/engine/json/schema/Schema';
|
|
15
|
+
import { KIRunFunctionRepository } from '../../../src/engine/repository/KIRunFunctionRepository';
|
|
16
|
+
import { KIRunSchemaRepository } from '../../../src/engine/repository/KIRunSchemaRepository';
|
|
17
|
+
import { Namespaces } from '../../../src/engine/namespaces/Namespaces';
|
|
18
|
+
import { FunctionSignature } from '../../../src/engine/model/FunctionSignature';
|
|
19
|
+
import { AbstractFunction } from '../../../src/engine/function/AbstractFunction';
|
|
20
|
+
import { FunctionOutput } from '../../../src/engine/model/FunctionOutput';
|
|
21
|
+
import { HybridRepository } from '../../../src/engine/HybridRepository';
|
|
22
|
+
import { Function } from '../../../src/engine/function/Function';
|
|
23
|
+
|
|
24
|
+
test('KIRuntime With Definition 1', async () => {
|
|
25
|
+
var def = {
|
|
26
|
+
name: 'getAppData',
|
|
27
|
+
namespace: 'UIApp',
|
|
28
|
+
parameters: {
|
|
29
|
+
a: { parameterName: 'a', schema: { name: 'integer', type: 'INTEGER' } },
|
|
30
|
+
b: { parameterName: 'b', schema: { name: 'integer', type: 'INTEGER' } },
|
|
31
|
+
c: { parameterName: 'c', schema: { name: 'integer', type: 'INTEGER' } },
|
|
32
|
+
},
|
|
33
|
+
events: {
|
|
34
|
+
output: {
|
|
35
|
+
name: 'output',
|
|
36
|
+
parameters: { additionResult: { name: 'additionResult', type: 'INTEGER' } },
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
steps: {
|
|
40
|
+
add: {
|
|
41
|
+
statementName: 'add',
|
|
42
|
+
namespace: Namespaces.MATH,
|
|
43
|
+
name: 'Add',
|
|
44
|
+
parameterMap: {
|
|
45
|
+
value: [
|
|
46
|
+
{ type: 'EXPRESSION', expression: 'Arguments.a' },
|
|
47
|
+
{ type: 'EXPRESSION', expression: '10 + 1' },
|
|
48
|
+
{ type: 'EXPRESSION', expression: 'Arguments.c' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
genOutput: {
|
|
53
|
+
statementName: 'genOutput',
|
|
54
|
+
namespace: Namespaces.SYSTEM,
|
|
55
|
+
name: 'GenerateEvent',
|
|
56
|
+
parameterMap: {
|
|
57
|
+
eventName: [{ type: 'VALUE', value: 'output' }],
|
|
58
|
+
results: [
|
|
59
|
+
{
|
|
60
|
+
type: 'VALUE',
|
|
61
|
+
value: {
|
|
62
|
+
name: 'additionResult',
|
|
63
|
+
value: { isExpression: true, value: 'Steps.add.output.value' },
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const fd = FunctionDefinition.from(def);
|
|
73
|
+
|
|
74
|
+
let result = await new KIRuntime(
|
|
75
|
+
fd,
|
|
76
|
+
new KIRunFunctionRepository(),
|
|
77
|
+
new KIRunSchemaRepository(),
|
|
78
|
+
).execute(
|
|
79
|
+
new FunctionExecutionParameters().setArguments(
|
|
80
|
+
new Map([
|
|
81
|
+
['a', 7],
|
|
82
|
+
['b', 11],
|
|
83
|
+
['c', 13],
|
|
84
|
+
]),
|
|
85
|
+
),
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
expect(result.allResults()[0].getResult().get('additionResult')).toBe(31);
|
|
89
|
+
});
|
|
@@ -27,3 +27,12 @@ test('LinkedList Test', () => {
|
|
|
27
27
|
x.add(4);
|
|
28
28
|
expect(x.toArray()).toStrictEqual([1, 2, 3, 4]);
|
|
29
29
|
});
|
|
30
|
+
|
|
31
|
+
test('LinkedList Test - peekLastTest', () => {
|
|
32
|
+
let x = new LinkedList();
|
|
33
|
+
x.push(230);
|
|
34
|
+
x.push(231);
|
|
35
|
+
x.push(233);
|
|
36
|
+
|
|
37
|
+
expect(x.peekLast()).toBe(230);
|
|
38
|
+
});
|