@fincity/kirun-js 1.1.6 → 1.3.0

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.
@@ -1,4 +1,10 @@
1
- import { KIRunFunctionRepository, KIRunSchemaRepository } from '../../../../src';
1
+ import {
2
+ ArgumentsTokenValueExtractor,
3
+ KIRunFunctionRepository,
4
+ KIRunSchemaRepository,
5
+ MapUtil,
6
+ TokenValueExtractor,
7
+ } from '../../../../src';
2
8
  import { Schema } from '../../../../src/engine/json/schema/Schema';
3
9
  import { ContextElement } from '../../../../src/engine/runtime/ContextElement';
4
10
  import { ExpressionEvaluator } from '../../../../src/engine/runtime/expression/ExpressionEvaluator';
@@ -130,3 +136,78 @@ test('Expression Test', () => {
130
136
  17.3533,
131
137
  );
132
138
  });
139
+
140
+ test('ExpressionEvaluation deep tests', () => {
141
+ let atv: ArgumentsTokenValueExtractor = new ArgumentsTokenValueExtractor(
142
+ new Map<string, any>([
143
+ ['a', 'kirun '],
144
+ ['b', 2],
145
+ ['c', { a: 2, b: [true, false], c: { x: 'kiran' } }],
146
+ ['d', { a: 2, b: [true, false], c: { x: 'kiran' } }],
147
+ ]),
148
+ );
149
+ let valuesMap: Map<string, TokenValueExtractor> = MapUtil.of(atv.getPrefix(), atv);
150
+
151
+ let ev = new ExpressionEvaluator('Arguments.a = Arugments.b');
152
+ expect(ev.evaluate(valuesMap)).toBeFalsy();
153
+
154
+ ev = new ExpressionEvaluator('Arguments.c = Arguments.d');
155
+ expect(ev.evaluate(valuesMap)).toBeTruthy();
156
+
157
+ ev = new ExpressionEvaluator('Arguments.e = null');
158
+ expect(ev.evaluate(valuesMap)).toBeTruthy();
159
+
160
+ ev = new ExpressionEvaluator('Arguments.e != null');
161
+ expect(ev.evaluate(valuesMap)).toBeFalsy();
162
+
163
+ ev = new ExpressionEvaluator('Arguments.e = false');
164
+ expect(ev.evaluate(valuesMap)).toBeTruthy();
165
+
166
+ ev = new ExpressionEvaluator('Arguments.c != null');
167
+ expect(ev.evaluate(valuesMap)).toBeTruthy();
168
+ });
169
+
170
+ test('Expression Evaluation nullish coalescing', () => {
171
+ let atv: ArgumentsTokenValueExtractor = new ArgumentsTokenValueExtractor(
172
+ new Map<string, any>([
173
+ ['a', 'kirun '],
174
+ ['b', 2],
175
+ ['b1', 4],
176
+ ['c', { a: 2, b: [true, false], c: { x: 'kiran' } }],
177
+ ['d', { a: 2, b: [true, false], c: { x: 'kiran' } }],
178
+ ]),
179
+ );
180
+ let valuesMap: Map<string, TokenValueExtractor> = MapUtil.of(atv.getPrefix(), atv);
181
+
182
+ let ev = new ExpressionEvaluator('(Arguments.e ?? Arguments.b ?? Arguments.b1) + 4');
183
+ expect(ev.evaluate(valuesMap)).toBe(6);
184
+
185
+ ev = new ExpressionEvaluator('(Arguments.e ?? Arguments.b2 ?? Arguments.b1) + 4');
186
+ expect(ev.evaluate(valuesMap)).toBe(8);
187
+ });
188
+
189
+ test('Expression Evaluation nesting expression', () => {
190
+ let atv: ArgumentsTokenValueExtractor = new ArgumentsTokenValueExtractor(
191
+ new Map<string, any>([
192
+ ['a', 'kirun '],
193
+ ['b', 2],
194
+ ['b1', 4],
195
+ ['b2', 4],
196
+ ['c', { a: 2, b: [true, false], c: { x: 'Arguments.b2' } }],
197
+ ['d', 'c'],
198
+ ]),
199
+ );
200
+ let valuesMap: Map<string, TokenValueExtractor> = MapUtil.of(atv.getPrefix(), atv);
201
+
202
+ let ev = new ExpressionEvaluator(
203
+ 'Arguments.{{Arguments.d}}.a + {{Arguments.{{Arguments.d}}.c.x}}',
204
+ );
205
+ expect(ev.evaluate(valuesMap)).toBe(6);
206
+
207
+ ev = new ExpressionEvaluator(
208
+ "'There are {{{{Arguments.{{Arguments.d}}.c.x}}}} boys in the class room...' * Arguments.b",
209
+ );
210
+ expect(ev.evaluate(valuesMap)).toBe(
211
+ 'There are 4 boys in the class room...There are 4 boys in the class room...',
212
+ );
213
+ });
@@ -0,0 +1,77 @@
1
+ import {
2
+ ArgumentsTokenValueExtractor,
3
+ Expression,
4
+ MapUtil,
5
+ TokenValueExtractor,
6
+ } from '../../../../src';
7
+ import { ExpressionEvaluator } from '../../../../src/engine/runtime/expression/ExpressionEvaluator';
8
+
9
+ test('Expression with String Literal - 1 ', () => {
10
+ let ex: Expression = new Expression("'ki/run'+'ab'");
11
+
12
+ let ev: ExpressionEvaluator = new ExpressionEvaluator(ex);
13
+
14
+ expect(ev.evaluate(MapUtil.of())).toBe('ki/runab');
15
+
16
+ let evt: ExpressionEvaluator = new ExpressionEvaluator('"Steps.a');
17
+
18
+ let atv: ArgumentsTokenValueExtractor = new ArgumentsTokenValueExtractor(
19
+ new Map<string, any>([
20
+ ['a', 'kirun '],
21
+ ['b', 2],
22
+ ['c', true],
23
+ ['d', 1.5],
24
+ ]),
25
+ );
26
+ const valuesMap: Map<string, TokenValueExtractor> = MapUtil.of(atv.getPrefix(), atv);
27
+
28
+ expect(() => evt.evaluate(valuesMap)).toThrow();
29
+
30
+ ev = new ExpressionEvaluator("Arguments.a+'kiran'");
31
+
32
+ expect(ev.evaluate(valuesMap)).toBe('kirun kiran');
33
+
34
+ ev = new ExpressionEvaluator("Arguments.b+'kiran'");
35
+
36
+ expect(ev.evaluate(valuesMap)).toBe('2kiran');
37
+
38
+ ev = new ExpressionEvaluator('Arguments.c+\'k"ir"an\'');
39
+
40
+ expect(ev.evaluate(valuesMap)).toBe('truek"ir"an');
41
+
42
+ ev = new ExpressionEvaluator("Arguments.b+\"'kir\" + ' an'");
43
+
44
+ expect(ev.evaluate(valuesMap)).toBe("2'kir an");
45
+
46
+ ev = new ExpressionEvaluator("Arguments.a+'kiran'+ Arguments.b");
47
+
48
+ expect(ev.evaluate(valuesMap)).toBe('kirun kiran2');
49
+ });
50
+
51
+ test('Expression with String Literal - 2 ', () => {
52
+ let ev: ExpressionEvaluator = new ExpressionEvaluator("'a' * 10");
53
+
54
+ let atv: ArgumentsTokenValueExtractor = new ArgumentsTokenValueExtractor(
55
+ new Map<string, any>([
56
+ ['a', 'kirun '],
57
+ ['b', 2],
58
+ ['c', true],
59
+ ['d', 1.5],
60
+ ]),
61
+ );
62
+ const valuesMap: Map<string, TokenValueExtractor> = MapUtil.of(atv.getPrefix(), atv);
63
+
64
+ expect(ev.evaluate(valuesMap)).toBe('aaaaaaaaaa');
65
+
66
+ ev = new ExpressionEvaluator('2.5*Arguments.a');
67
+ expect(ev.evaluate(valuesMap)).toBe('kirun kirun kir');
68
+
69
+ ev = new ExpressionEvaluator('-0.5*Arguments.a');
70
+ expect(ev.evaluate(valuesMap)).toBe('rik');
71
+
72
+ ev = new ExpressionEvaluator("'asdf' * -1");
73
+ expect(ev.evaluate(valuesMap)).toBe('fdsa');
74
+
75
+ ev = new ExpressionEvaluator("'asdf' * 0");
76
+ expect(ev.evaluate(valuesMap)).toBe('');
77
+ });
@@ -0,0 +1,13 @@
1
+ import { deepEqual } from '../../../src/engine/util/deepEqual';
2
+
3
+ test('deepEqual', () => {
4
+ expect(deepEqual(true, false)).toBeFalsy();
5
+ expect(deepEqual(2, 2)).toBeTruthy();
6
+ expect(deepEqual(null, undefined)).toBeTruthy();
7
+ expect(deepEqual([1, 2, 3, { a: [3, 4] }], [1, 2, 3, { a: [3, 4] }])).toBeTruthy();
8
+ expect(deepEqual([1, 2, 3, { a: [3, 4] }], [1, 2, 3, { a: [3] }])).toBeFalsy();
9
+ expect(deepEqual([1, 2, 3, { a: [3, 4] }], [1, 2, 3, { a: [3, '4'] }])).toBeFalsy();
10
+ expect(
11
+ deepEqual([1, 2, 3, { a: [3, 4], b: null }], [1, 2, 3, { a: [3, 4], b: undefined }]),
12
+ ).toBeTruthy();
13
+ });