Skip to content

Commit 8e86613

Browse files
author
linzhijun
committed
添加 单元测试 方案
1 parent 20d813e commit 8e86613

File tree

4 files changed

+7807
-0
lines changed

4 files changed

+7807
-0
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
@page
2+
@{
3+
Layout = null;
4+
}
5+
<!DOCTYPE html>
6+
<html>
7+
<head>
8+
<title>QUnit Test Suite</title>
9+
<script src="_framework/blazor.webassembly.js" autostart="false"></script>
10+
<script src="/toolgood.algorithm.js"></script>
11+
<link href="/qunit/qunit.css" rel="stylesheet" />
12+
</head>
13+
<body>
14+
<h1 id="qunit-header">QUnit Test Suite</h1>
15+
<h2 id="qunit-banner"></h2>
16+
<div id="qunit-testrunner-toolbar"></div>
17+
<h2 id="qunit-userAgent"></h2>
18+
<ol id="qunit-tests"></ol>
19+
</body>
20+
<script src="/qunit/qunit.js"></script>
21+
<script>
22+
23+
QUnit.module('test', function () {
24+
QUnit.test('Test', async function (assert) {
25+
await new Promise(resolve => setTimeout(resolve, 300));
26+
27+
engine = new AlgorithmEngine();
28+
29+
var c = engine.TryEvaluate("2+3", 0);
30+
assert.equal(5, c);
31+
c = engine.TryEvaluate("(2)+3", 0);
32+
assert.equal(5, c);
33+
c = engine.TryEvaluate("2+3*2+10/2*4", 0);
34+
assert.equal(28, c);
35+
36+
c = engine.TryEvaluate("if(2+3*2+10/2*4,1", 0);
37+
assert.equal(0, c);
38+
39+
c = engine.TryEvaluate("2.1e3 + 10", 0);
40+
assert.equal(2110, c);
41+
42+
c = engine.TryEvaluate("2.1e+03 + 10", 0);
43+
assert.equal(2110, c);
44+
45+
c = engine.TryEvaluate("2.1e+3 + 10", 0);
46+
assert.equal(2110, c);
47+
48+
var d = engine.TryEvaluate("2.1e-3 + 10", 0.0);
49+
assert.equal(10.0021, d);
50+
51+
52+
var e = engine.TryEvaluate("e", 0.0);
53+
assert.equal(Math.E, e, 11);
54+
e = engine.TryEvaluate("pi", 0.0);
55+
assert.equal(Math.PI, e, 11);
56+
57+
var b = engine.TryEvaluate("true", false);
58+
assert.equal(true, b);
59+
b = engine.TryEvaluate("false", true);
60+
assert.equal(false, b);
61+
62+
var b1 = engine.TryEvaluate("if(true,1,2)", 0);
63+
assert.equal(1, b1);
64+
65+
b1 = engine.TryEvaluate("if(false,1,2)", 0);
66+
assert.equal(2, b1);
67+
68+
var b2 = engine.TryEvaluate("pi*4", 0.0);
69+
assert.equal(Math.PI * 4, b2, 10);
70+
b2 = engine.TryEvaluate("e*4", 0.0);
71+
assert.equal(Math.E * 4, b2, 10);
72+
73+
var s = engine.TryEvaluate("'aa'&'bb'", "");
74+
assert.equal("aabb", s);
75+
76+
s = engine.TryEvaluate("'3'+2", "");
77+
assert.equal("5", s);
78+
79+
var r = engine.TryEvaluate("count(Array(1,2,3,4))", 0);
80+
assert.equal(4, r);
81+
82+
83+
r = engine.TryEvaluate("(1=1)*9+2", 0);
84+
assert.equal(11, r);;
85+
r = engine.TryEvaluate("(1=2)*9+2", 0);
86+
assert.equal(2, r);;
87+
88+
var dt = engine.TryEvaluate("'2016-1-1'+1", new Date());
89+
assert.equal(new Date("2016-1-2"), dt);
90+
dt = engine.TryEvaluate("'2016-1-1'+9*'1:0'", new Date());
91+
assert.equal(new Date("2016-1-1 9:0"), dt);;
92+
93+
var value = engine.TryEvaluate("1 > (-2)", false);
94+
assert.equal(value, true);
95+
96+
97+
value = engine.TryEvaluate("(-1) > (-2)", false);
98+
assert.equal(value, true);
99+
100+
101+
value = engine.TryEvaluate("-1 > (-2)", false);
102+
assert.equal(value, true);
103+
104+
value = engine.TryEvaluate("-1 > -2", false);
105+
assert.equal(value, true);
106+
107+
var value2 = engine.TryEvaluate("-1 > -2", false);
108+
assert.equal(value2, true);
109+
110+
111+
var value3 = engine.TryEvaluate("-7 < -2", false);
112+
assert.equal(value3, true);
113+
114+
var t1 = engine.TryEvaluate("-7 < -2 ?1 : 2", 0);
115+
assert.equal(t1, 1);
116+
t1 = engine.TryEvaluate("-7 < -2 ?1 : 2", 0);
117+
assert.equal(t1, 1);
118+
119+
t1 = engine.TryEvaluate("-7 < -2 ?1 :2", 0);
120+
assert.equal(t1, 1);
121+
t1 = engine.TryEvaluate("-7 < -2 ? 1 : 2", 0);
122+
assert.equal(t1, 1);
123+
t1 = engine.TryEvaluate("-7 < -2 ?1 : 2", 0);
124+
assert.equal(t1, 1);
125+
126+
t1 = engine.TryEvaluate("-7 < -2 ?1 : 2", 0);
127+
assert.equal(t1, 1);
128+
129+
t1 = engine.TryEvaluate("(!(-7 < -2))?1:2", 0);
130+
assert.equal(t1, 2);
131+
t1 = engine.TryEvaluate("1>2?1:2", 0);
132+
assert.equal(t1, 2);
133+
134+
t1 = engine.TryEvaluate("1!=2?1:2", 0);
135+
assert.equal(t1, 1);
136+
137+
var t2 = engine.TryEvaluate("Asc('abcABC123')", "");
138+
assert.equal(t2, "abcABC123");
139+
});
140+
});
141+
142+
143+
</script>
144+
@* <script src="/test/test.js"></script>
145+
<script src="/test/test-csharp.js"></script>
146+
<script src="/test/test-datetime.js"></script>
147+
<script src="/test/test-flow.js"></script>
148+
<script src="/test/test-math.js"></script>
149+
<script src="/test/test-string.js"></script>
150+
<script src="/test/test-vlookup.js"></script> *@
151+
</html>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
window.onload = async function () { await Blazor.start(); };
2+
DistanceUnitType = new class { constructor() { this.MM = 1; this.CM = 2; this.DM = 3; this.M = 4; this.KM = 5; } }();
3+
AreaUnitType = new class { constructor() { this.MM2 = 11; this.CM2 = 12; this.DM2 = 13; this.M2 = 14; this.KM2 = 15; } }();
4+
VolumeUnitType = new class { constructor() { this.MM3 = 21; this.CM3 = 22; this.DM3 = 23; this.M3 = 24; this.KM3 = 25; } }();
5+
MassUnitType = new class { constructor() { this.G = 31; this.KG = 32; this.T = 33; } }();
6+
AlgorithmEngine = class {
7+
constructor() {
8+
this.UseExcelIndex = true;
9+
this.UseTempDict = false;
10+
this.UseLocalTime = false;
11+
this.DistanceUnit = DistanceUnitType.M;
12+
this.AreaUnit = AreaUnitType.M2;
13+
this.VolumeUnit = VolumeUnitType.M3;
14+
this.MassUnit = MassUnitType.KG;
15+
this.IgnoreCase = false;
16+
}
17+
TryEvaluateString = function (exp, def, data) { return DotNet.invokeMethod('ToolGood.Algorithm.WebAssembly', 'TryEvaluateString', exp, def, data, JSON.stringify(this)); }
18+
TryEvaluateNumber = function (exp, def, data) { return DotNet.invokeMethod('ToolGood.Algorithm.WebAssembly', 'TryEvaluateNumber', exp, def, data, JSON.stringify(this)); }
19+
TryEvaluateBool = function (exp, def, data) { return DotNet.invokeMethod('ToolGood.Algorithm.WebAssembly', 'TryEvaluateBool', exp, def, data, JSON.stringify(this)); }
20+
TryEvaluateDateTime = function (exp, def, data) { return DotNet.invokeMethod('ToolGood.Algorithm.WebAssembly', 'TryEvaluateDateTime', exp, def, data, JSON.stringify(this)); }
21+
22+
TryEvaluate = function (exp, def, data) {
23+
if (def == null) { return this.TryEvaluateString(exp, def, data); }
24+
if (typeof def == "number") { return this.TryEvaluateNumber(exp, def, data); }
25+
if (typeof def == "boolean") { return this.TryEvaluateBool(exp, def, data); }
26+
if (typeof def == "object" && def instanceof Date) { return this.TryEvaluateDateTime(exp, def, data); }
27+
28+
return this.TryEvaluateString(exp, def, data);
29+
}
30+
31+
};

0 commit comments

Comments
 (0)