@mmapp/player-core 0.1.0-alpha.1 → 0.1.0-alpha.3
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/README.md +66 -0
- package/dist/index.d.mts +81 -1
- package/dist/index.d.ts +81 -1
- package/dist/index.js +81 -2
- package/dist/index.mjs +79 -2
- package/package.json +3 -2
- package/package.json.backup +0 -35
- package/src/__tests__/actions.test.ts +0 -187
- package/src/__tests__/blueprint-e2e.test.ts +0 -706
- package/src/__tests__/blueprint-test-runner.test.ts +0 -680
- package/src/__tests__/core-functions.test.ts +0 -78
- package/src/__tests__/dsl-compiler.test.ts +0 -1382
- package/src/__tests__/dsl-grammar.test.ts +0 -1682
- package/src/__tests__/events.test.ts +0 -200
- package/src/__tests__/expression.test.ts +0 -296
- package/src/__tests__/failure-policies.test.ts +0 -110
- package/src/__tests__/frontend-context.test.ts +0 -182
- package/src/__tests__/integration.test.ts +0 -256
- package/src/__tests__/security.test.ts +0 -190
- package/src/__tests__/state-machine.test.ts +0 -450
- package/src/__tests__/testing-engine.test.ts +0 -671
- package/src/actions/dispatcher.ts +0 -80
- package/src/actions/index.ts +0 -7
- package/src/actions/types.ts +0 -25
- package/src/dsl/compiler/component-mapper.ts +0 -289
- package/src/dsl/compiler/field-mapper.ts +0 -187
- package/src/dsl/compiler/index.ts +0 -82
- package/src/dsl/compiler/manifest-compiler.ts +0 -76
- package/src/dsl/compiler/symbol-table.ts +0 -214
- package/src/dsl/compiler/utils.ts +0 -48
- package/src/dsl/compiler/view-compiler.ts +0 -286
- package/src/dsl/compiler/workflow-compiler.ts +0 -600
- package/src/dsl/index.ts +0 -66
- package/src/dsl/ir-migration.ts +0 -221
- package/src/dsl/ir-types.ts +0 -416
- package/src/dsl/lexer.ts +0 -579
- package/src/dsl/parser.ts +0 -115
- package/src/dsl/types.ts +0 -256
- package/src/events/event-bus.ts +0 -68
- package/src/events/index.ts +0 -9
- package/src/events/pattern-matcher.ts +0 -61
- package/src/events/types.ts +0 -27
- package/src/expression/evaluator.ts +0 -676
- package/src/expression/functions.ts +0 -214
- package/src/expression/index.ts +0 -13
- package/src/expression/types.ts +0 -64
- package/src/index.ts +0 -61
- package/src/state-machine/index.ts +0 -16
- package/src/state-machine/interpreter.ts +0 -319
- package/src/state-machine/types.ts +0 -89
- package/src/testing/action-trace.ts +0 -209
- package/src/testing/blueprint-test-runner.ts +0 -214
- package/src/testing/graph-walker.ts +0 -249
- package/src/testing/index.ts +0 -69
- package/src/testing/nrt-comparator.ts +0 -199
- package/src/testing/nrt-types.ts +0 -230
- package/src/testing/test-actions.ts +0 -645
- package/src/testing/test-compiler.ts +0 -278
- package/src/testing/test-runner.ts +0 -444
- package/src/testing/types.ts +0 -231
- package/src/validation/definition-validator.ts +0 -812
- package/src/validation/index.ts +0 -13
- package/tsconfig.json +0 -26
- package/vitest.config.ts +0 -8
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core Function Tests — one test per function (31 total).
|
|
3
|
-
* Verifies each of the 31 core expression functions produces correct results.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
7
|
-
import { createEvaluator, WEB_FAILURE_POLICIES, clearExpressionCache } from '../expression';
|
|
8
|
-
import type { Evaluator, ExpressionContext } from '../expression';
|
|
9
|
-
|
|
10
|
-
describe('31 Core Functions', () => {
|
|
11
|
-
let ev: Evaluator;
|
|
12
|
-
let ctx: ExpressionContext;
|
|
13
|
-
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
clearExpressionCache();
|
|
16
|
-
ev = createEvaluator({ functions: [], failurePolicy: WEB_FAILURE_POLICIES.VIEW_BINDING });
|
|
17
|
-
ctx = {
|
|
18
|
-
state_data: { items: [1, 2, 3], name: 'Alice', empty: '', obj: { a: 1 } },
|
|
19
|
-
memory: {},
|
|
20
|
-
current_state: 'active',
|
|
21
|
-
status: 'ACTIVE',
|
|
22
|
-
items: [1, 2, 3],
|
|
23
|
-
name: 'Alice',
|
|
24
|
-
empty: '',
|
|
25
|
-
obj: { a: 1 },
|
|
26
|
-
};
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// Math (8)
|
|
30
|
-
it('add', () => expect(ev.evaluate('add(10, 5)', ctx).value).toBe(15));
|
|
31
|
-
it('subtract', () => expect(ev.evaluate('subtract(10, 3)', ctx).value).toBe(7));
|
|
32
|
-
it('multiply', () => expect(ev.evaluate('multiply(4, 5)', ctx).value).toBe(20));
|
|
33
|
-
it('divide', () => expect(ev.evaluate('divide(10, 2)', ctx).value).toBe(5));
|
|
34
|
-
it('divide by zero', () => expect(ev.evaluate('divide(10, 0)', ctx).value).toBe(0));
|
|
35
|
-
it('abs', () => expect(ev.evaluate('abs(-42)', ctx).value).toBe(42));
|
|
36
|
-
it('round', () => expect(ev.evaluate('round(3.456, 1)', ctx).value).toBe(3.5));
|
|
37
|
-
it('min', () => expect(ev.evaluate('min(5, 2, 8)', ctx).value).toBe(2));
|
|
38
|
-
it('max', () => expect(ev.evaluate('max(5, 2, 8)', ctx).value).toBe(8));
|
|
39
|
-
|
|
40
|
-
// Comparison (6)
|
|
41
|
-
it('eq', () => expect(ev.evaluate('eq(5, 5)', ctx).value).toBe(true));
|
|
42
|
-
it('neq', () => expect(ev.evaluate('neq(5, 3)', ctx).value).toBe(true));
|
|
43
|
-
it('gt', () => expect(ev.evaluate('gt(5, 3)', ctx).value).toBe(true));
|
|
44
|
-
it('gte', () => expect(ev.evaluate('gte(5, 5)', ctx).value).toBe(true));
|
|
45
|
-
it('lt', () => expect(ev.evaluate('lt(3, 5)', ctx).value).toBe(true));
|
|
46
|
-
it('lte', () => expect(ev.evaluate('lte(5, 5)', ctx).value).toBe(true));
|
|
47
|
-
|
|
48
|
-
// Logic (5)
|
|
49
|
-
it('if', () => expect(ev.evaluate("if(true, 'yes', 'no')", ctx).value).toBe('yes'));
|
|
50
|
-
it('and', () => expect(ev.evaluate('and(true, true, true)', ctx).value).toBe(true));
|
|
51
|
-
it('or', () => expect(ev.evaluate('or(false, true)', ctx).value).toBe(true));
|
|
52
|
-
it('not', () => expect(ev.evaluate('not(false)', ctx).value).toBe(true));
|
|
53
|
-
it('coalesce', () => expect(ev.evaluate("coalesce(null, undefined, 'found')", ctx).value).toBe('found'));
|
|
54
|
-
|
|
55
|
-
// String (6)
|
|
56
|
-
it('concat', () => expect(ev.evaluate("concat('a', 'b', 'c')", ctx).value).toBe('abc'));
|
|
57
|
-
it('upper', () => expect(ev.evaluate("upper('hello')", ctx).value).toBe('HELLO'));
|
|
58
|
-
it('lower', () => expect(ev.evaluate("lower('HELLO')", ctx).value).toBe('hello'));
|
|
59
|
-
it('trim', () => expect(ev.evaluate("trim(' hi ')", ctx).value).toBe('hi'));
|
|
60
|
-
it('format', () => expect(ev.evaluate("format('Hello {0}!', 'World')", ctx).value).toBe('Hello World!'));
|
|
61
|
-
it('length (string)', () => expect(ev.evaluate("length('hello')", ctx).value).toBe(5));
|
|
62
|
-
it('length (array)', () => expect(ev.evaluate('length(items)', ctx).value).toBe(3));
|
|
63
|
-
|
|
64
|
-
// Path (3)
|
|
65
|
-
it('get', () => expect(ev.evaluate("get(obj, 'a')", ctx).value).toBe(1));
|
|
66
|
-
it('includes (string)', () => expect(ev.evaluate("includes(name, 'lic')", ctx).value).toBe(true));
|
|
67
|
-
it('includes (array)', () => expect(ev.evaluate('includes(items, 2)', ctx).value).toBe(true));
|
|
68
|
-
it('is_defined (defined)', () => expect(ev.evaluate('is_defined(name)', ctx).value).toBe(true));
|
|
69
|
-
it('is_defined (null)', () => expect(ev.evaluate('is_defined(null)', ctx).value).toBe(false));
|
|
70
|
-
|
|
71
|
-
// Type (3)
|
|
72
|
-
it('is_empty (empty string)', () => expect(ev.evaluate("is_empty('')", ctx).value).toBe(true));
|
|
73
|
-
it('is_empty (non-empty)', () => expect(ev.evaluate("is_empty('x')", ctx).value).toBe(false));
|
|
74
|
-
it('is_null (null)', () => expect(ev.evaluate('is_null(null)', ctx).value).toBe(true));
|
|
75
|
-
it('is_null (value)', () => expect(ev.evaluate('is_null(name)', ctx).value).toBe(false));
|
|
76
|
-
it('to_string (number)', () => expect(ev.evaluate('to_string(42)', ctx).value).toBe('42'));
|
|
77
|
-
it('to_string (null)', () => expect(ev.evaluate('to_string(null)', ctx).value).toBe(''));
|
|
78
|
-
});
|