@schukai/monster 4.11.0 → 4.12.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.
- package/CHANGELOG.md +29 -0
- package/package.json +1 -1
- package/source/components/content/camera-capture.mjs +41 -8
- package/source/components/content/stylesheet/camera-capture.mjs +13 -6
- package/source/components/data/metric-graph.mjs +356 -358
- package/source/components/data/metric.mjs +92 -94
- package/source/components/data/stylesheet/metric-graph.mjs +13 -6
- package/source/components/data/stylesheet/metric.mjs +13 -6
- package/source/components/datatable/filter.mjs +22 -0
- package/source/components/form/message-state-button.mjs +26 -22
- package/source/components/layout/popper.mjs +75 -68
- package/source/components/layout/split-panel.mjs +15 -8
- package/source/i18n/util.mjs +41 -0
- package/source/monster.mjs +3 -0
- package/source/text/generate-range-comparison-expression.mjs +109 -39
- package/source/types/version.mjs +1 -1
- package/test/cases/monster.mjs +1 -1
- package/test/cases/text/generate-range-comparison-expression.mjs +94 -0
- package/test/cases/text/util.mjs +3 -3
- package/test/web/import.js +1 -0
- package/test/web/test.html +2 -2
- package/test/web/tests.js +313 -132
@@ -0,0 +1,94 @@
|
|
1
|
+
import { expect } from "chai";
|
2
|
+
import { generateRangeComparisonExpression } from "../../../source/text/generate-range-comparison-expression.mjs";
|
3
|
+
|
4
|
+
describe('generateRangeComparisonExpression', function () {
|
5
|
+
|
6
|
+
it('soll Einzelwerte korrekt behandeln', function () {
|
7
|
+
expect(generateRangeComparisonExpression("5", "x")).to.equal("x==5");
|
8
|
+
expect(generateRangeComparisonExpression("0", "age")).to.equal("age==0");
|
9
|
+
expect(generateRangeComparisonExpression("-3", "score")).to.equal("score<=3");
|
10
|
+
expect(generateRangeComparisonExpression("7.5", "n")).to.equal("n==7.5");
|
11
|
+
});
|
12
|
+
|
13
|
+
it('soll einfache inklusive Ranges korrekt behandeln', function () {
|
14
|
+
expect(generateRangeComparisonExpression("4-6", "x")).to.equal("x>=4 && x<=6");
|
15
|
+
expect(generateRangeComparisonExpression("10-15", "a")).to.equal("a>=10 && a<=15");
|
16
|
+
expect(generateRangeComparisonExpression("-5-5", "y")).to.equal("y>=-5 && y<=5");
|
17
|
+
expect(generateRangeComparisonExpression("4.1-6.2", "x")).to.equal("x>=4.1 && x<=6.2");
|
18
|
+
});
|
19
|
+
|
20
|
+
it('soll exklusive Ranges (mit ~) korrekt behandeln', function () {
|
21
|
+
expect(generateRangeComparisonExpression("4~6", "x")).to.equal("x>4 && x<6");
|
22
|
+
expect(generateRangeComparisonExpression("10~15", "a")).to.equal("a>10 && a<15");
|
23
|
+
expect(generateRangeComparisonExpression("-4~4", "y")).to.equal("y>-4 && y<4");
|
24
|
+
});
|
25
|
+
|
26
|
+
it('soll offene Intervalle links korrekt behandeln', function () {
|
27
|
+
expect(generateRangeComparisonExpression("-6", "x")).to.equal("x<=6");
|
28
|
+
expect(generateRangeComparisonExpression("-2", "y")).to.equal("y<=2");
|
29
|
+
expect(generateRangeComparisonExpression(" -3 ", "z")).to.equal("z<=3");
|
30
|
+
});
|
31
|
+
|
32
|
+
it('soll offene Intervalle rechts korrekt behandeln', function () {
|
33
|
+
expect(generateRangeComparisonExpression("4-", "x")).to.equal("x>=4");
|
34
|
+
expect(generateRangeComparisonExpression("10-", "z")).to.equal("z>=10");
|
35
|
+
expect(generateRangeComparisonExpression(" -5- ", "y")).to.equal("y>=-5");
|
36
|
+
});
|
37
|
+
|
38
|
+
it('soll die Operatoren < und > korrekt behandeln', function () {
|
39
|
+
expect(generateRangeComparisonExpression(">4", "x")).to.equal("x>4");
|
40
|
+
expect(generateRangeComparisonExpression("<6", "x")).to.equal("x<6");
|
41
|
+
expect(generateRangeComparisonExpression(">-4.2", "n")).to.equal("n>-4.2");
|
42
|
+
expect(generateRangeComparisonExpression("--2", "x")).to.equal("x<=-2");
|
43
|
+
});
|
44
|
+
|
45
|
+
it('soll mehrere Bedingungen per Komma ODER-verknüpfen', function () {
|
46
|
+
expect(generateRangeComparisonExpression("4-6,10,20~25", "x"))
|
47
|
+
.to.equal("(x>=4 && x<=6) || (x==10) || (x>20 && x<25)");
|
48
|
+
expect(generateRangeComparisonExpression("0,5-10", "y"))
|
49
|
+
.to.equal("(y==0) || (y>=5 && y<=10)");
|
50
|
+
expect(generateRangeComparisonExpression(">1,<3", "z"))
|
51
|
+
.to.equal("(z>1) || (z<3)");
|
52
|
+
});
|
53
|
+
|
54
|
+
it('soll urlEncode korrekt unterstützen', function () {
|
55
|
+
expect(generateRangeComparisonExpression("4-6", "x", { urlEncode: true }))
|
56
|
+
.to.equal("x%3E%3D4%20%26%26%20x%3C%3D6");
|
57
|
+
expect(generateRangeComparisonExpression("10", "n", { urlEncode: true }))
|
58
|
+
.to.equal("n%3D%3D10");
|
59
|
+
});
|
60
|
+
|
61
|
+
it('soll Fehler werfen bei falschen Eingaben', function () {
|
62
|
+
expect(() => generateRangeComparisonExpression("", "x")).to.throw("Invalid input");
|
63
|
+
expect(() => generateRangeComparisonExpression("abc", "x")).to.throw("Invalid value 'abc'");
|
64
|
+
expect(() => generateRangeComparisonExpression("4-3", "x")).to.throw("Invalid range '4-3'");
|
65
|
+
expect(() => generateRangeComparisonExpression("4-foo", "x")).to.throw("Invalid value '4-foo'");
|
66
|
+
expect(() => generateRangeComparisonExpression("4~foo", "x")).to.throw("Invalid value '4~foo'");
|
67
|
+
expect(() => generateRangeComparisonExpression(">", "x")).to.throw("Invalid value in '>'");
|
68
|
+
expect(() => generateRangeComparisonExpression("<", "x")).to.throw("Invalid value in '<'");
|
69
|
+
expect(() => generateRangeComparisonExpression("--", "x")).to.throw("Invalid range '--'");
|
70
|
+
expect(() => generateRangeComparisonExpression("-foo", "x")).to.throw("Invalid value '-foo'");
|
71
|
+
expect(() => generateRangeComparisonExpression("foo-", "x")).to.throw("Invalid value 'foo-'");
|
72
|
+
expect(() => generateRangeComparisonExpression("5~", "x")).to.not.throw();
|
73
|
+
expect(() => generateRangeComparisonExpression("~5", "x")).to.not.throw();
|
74
|
+
expect(() => generateRangeComparisonExpression(">", "")).to.throw("Invalid value in '>'");
|
75
|
+
expect(() => generateRangeComparisonExpression("1,,2", "x")).not.to.throw();
|
76
|
+
expect(() => generateRangeComparisonExpression(",", "x")).to.not.throw();
|
77
|
+
});
|
78
|
+
|
79
|
+
it('soll Leerzeichen robust behandeln', function () {
|
80
|
+
expect(generateRangeComparisonExpression(" 4 - 6 , 8 ", "x"))
|
81
|
+
.to.equal("(x>=4 && x<=6) || (x==8)");
|
82
|
+
expect(generateRangeComparisonExpression(" -10--5 ", "temp"))
|
83
|
+
.to.equal("temp>=-10 && temp<=-5");
|
84
|
+
});
|
85
|
+
|
86
|
+
it('soll negative Werte korrekt behandeln', function () {
|
87
|
+
expect(generateRangeComparisonExpression("-10--5", "temp"))
|
88
|
+
.to.equal("temp>=-10 && temp<=-5");
|
89
|
+
expect(generateRangeComparisonExpression("> -3", "z")).to.equal("z>-3");
|
90
|
+
expect(generateRangeComparisonExpression(" -4~4 ", "y")).to.equal("y>-4 && y<4");
|
91
|
+
expect(generateRangeComparisonExpression("-5", "x")).to.equal("x<=5");
|
92
|
+
|
93
|
+
});
|
94
|
+
});
|
package/test/cases/text/util.mjs
CHANGED
@@ -55,7 +55,7 @@ describe('generateRangeComparisonExpression', () => {
|
|
55
55
|
{
|
56
56
|
expression: '1,3,5',
|
57
57
|
valueName: 'x',
|
58
|
-
expected: '(x%3D%3D1)
|
58
|
+
expected: '(x%3D%3D1)%20%7C%7C%20(x%3D%3D3)%20%7C%7C%20(x%3D%3D5)',
|
59
59
|
},
|
60
60
|
{
|
61
61
|
expression: '-10',
|
@@ -70,12 +70,12 @@ describe('generateRangeComparisonExpression', () => {
|
|
70
70
|
{
|
71
71
|
expression: '1-3,6-8',
|
72
72
|
valueName: 'y',
|
73
|
-
expected: '(y%3E%3D1
|
73
|
+
expected: '(y%3E%3D1%20%26%26%20y%3C%3D3)%20%7C%7C%20(y%3E%3D6%20%26%26%20y%3C%3D8)',
|
74
74
|
},
|
75
75
|
{
|
76
76
|
expression: '1-3,5,7-9',
|
77
77
|
valueName: 'z',
|
78
|
-
expected: '(z%3E%3D1
|
78
|
+
expected: '(z%3E%3D1%20%26%26%20z%3C%3D3)%20%7C%7C%20(z%3D%3D5)%20%7C%7C%20(z%3E%3D7%20%26%26%20z%3C%3D9)',
|
79
79
|
},
|
80
80
|
];
|
81
81
|
|
package/test/web/import.js
CHANGED
@@ -19,6 +19,7 @@ import "../cases/components/host/overlay.mjs";
|
|
19
19
|
import "../cases/components/host/util.mjs";
|
20
20
|
import "../cases/components/host/details.mjs";
|
21
21
|
import "../cases/text/formatter.mjs";
|
22
|
+
import "../cases/text/generate-range-comparison-expression.mjs";
|
22
23
|
import "../cases/text/util.mjs";
|
23
24
|
import "../cases/text/bracketed-key-value-hash.mjs";
|
24
25
|
import "../cases/math/random.mjs";
|
package/test/web/test.html
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
</head>
|
10
10
|
<body>
|
11
11
|
<div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
|
12
|
-
<h1 style='margin-bottom: 0.1em;'>Monster 4.
|
13
|
-
<div id="lastupdate" style='font-size:0.7em'>last update
|
12
|
+
<h1 style='margin-bottom: 0.1em;'>Monster 4.11.1</h1>
|
13
|
+
<div id="lastupdate" style='font-size:0.7em'>last update Do 29. Mai 13:24:01 CEST 2025</div>
|
14
14
|
</div>
|
15
15
|
<div id="mocha-errors"
|
16
16
|
style="color: red;font-weight: bold;display: flex;align-items: center;justify-content: center;flex-direction: column;margin:20px;"></div>
|