1+
2+ QUnit . module ( 'test' , function ( ) {
3+ QUnit . test ( 'Test' , async function ( assert ) {
4+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
5+
6+ engine = new AlgorithmEngine ( ) ;
7+
8+ var c = engine . TryEvaluate ( "2+3" , 0 ) ;
9+ assert . equal ( 5 , c ) ;
10+ c = engine . TryEvaluate ( "(2)+3" , 0 ) ;
11+ assert . equal ( 5 , c ) ;
12+ c = engine . TryEvaluate ( "2+3*2+10/2*4" , 0 ) ;
13+ assert . equal ( 28 , c ) ;
14+
15+ c = engine . TryEvaluate ( "if(2+3*2+10/2*4,1" , 0 ) ;
16+ assert . equal ( 0 , c ) ;
17+
18+ c = engine . TryEvaluate ( "2.1e3 + 10" , 0 ) ;
19+ assert . equal ( 2110 , c ) ;
20+
21+ c = engine . TryEvaluate ( "2.1e+03 + 10" , 0 ) ;
22+ assert . equal ( 2110 , c ) ;
23+
24+ c = engine . TryEvaluate ( "2.1e+3 + 10" , 0 ) ;
25+ assert . equal ( 2110 , c ) ;
26+
27+ var d = engine . TryEvaluate ( "2.1e-3 + 10" , 0.0 ) ;
28+ assert . equal ( 10.0021 , d ) ;
29+
30+
31+ var e = engine . TryEvaluate ( "e" , 0.0 ) ;
32+ assert . equal ( Math . round ( Math . E , 10 ) , Math . round ( e , 10 ) ) ;
33+ e = engine . TryEvaluate ( "pi" , 0.0 ) ;
34+ assert . equal ( Math . round ( Math . PI , 10 ) , Math . round ( e , 10 ) ) ;
35+
36+ var b = engine . TryEvaluate ( "true" , false ) ;
37+ assert . equal ( true , b ) ;
38+ b = engine . TryEvaluate ( "false" , true ) ;
39+ assert . equal ( false , b ) ;
40+
41+ var b1 = engine . TryEvaluate ( "if(true,1,2)" , 0 ) ;
42+ assert . equal ( 1 , b1 ) ;
43+
44+ b1 = engine . TryEvaluate ( "if(false,1,2)" , 0 ) ;
45+ assert . equal ( 2 , b1 ) ;
46+
47+ var b2 = engine . TryEvaluate ( "pi*4" , 0.0 ) ;
48+ assert . equal ( Math . round ( Math . PI * 4 , 10 ) , Math . round ( b2 , 10 ) ) ;
49+ b2 = engine . TryEvaluate ( "e*4" , 0.0 ) ;
50+ assert . equal ( Math . round ( Math . E * 4 , 10 ) , Math . round ( b2 , 10 ) ) ;
51+
52+ var s = engine . TryEvaluate ( "'aa'&'bb'" , "" ) ;
53+ assert . equal ( "aabb" , s ) ;
54+
55+ s = engine . TryEvaluate ( "'3'+2" , "" ) ;
56+ assert . equal ( "5" , s ) ;
57+
58+ var r = engine . TryEvaluate ( "count(Array(1,2,3,4))" , 0 ) ;
59+ assert . equal ( 4 , r ) ;
60+
61+
62+ r = engine . TryEvaluate ( "(1=1)*9+2" , 0 ) ;
63+ assert . equal ( 11 , r ) ; ;
64+ r = engine . TryEvaluate ( "(1=2)*9+2" , 0 ) ;
65+ assert . equal ( 2 , r ) ; ;
66+
67+ var dt = engine . TryEvaluate ( "'2016-1-1'+1" , new Date ( ) ) ;
68+ assert . equal ( "2016-01-02 00:00:00" , dt ) ;
69+ dt = engine . TryEvaluate ( "'2016-1-1'+9*'1:0'" , new Date ( ) ) ;
70+ assert . equal ( "2016-01-01 09:00:00" , dt ) ;
71+
72+
73+ var value = engine . TryEvaluate ( "1 > (-2)" , false ) ;
74+ assert . equal ( value , true ) ;
75+
76+
77+ value = engine . TryEvaluate ( "(-1) > (-2)" , false ) ;
78+ assert . equal ( value , true ) ;
79+
80+
81+ value = engine . TryEvaluate ( "-1 > (-2)" , false ) ;
82+ assert . equal ( value , true ) ;
83+
84+ value = engine . TryEvaluate ( "-1 > -2" , false ) ;
85+ assert . equal ( value , true ) ;
86+
87+ var value2 = engine . TryEvaluate ( "-1 > -2" , false ) ;
88+ assert . equal ( value2 , true ) ;
89+
90+
91+ var value3 = engine . TryEvaluate ( "-7 < -2" , false ) ;
92+ assert . equal ( value3 , true ) ;
93+
94+ var t1 = engine . TryEvaluate ( "-7 < -2 ?1 : 2" , 0 ) ;
95+ assert . equal ( t1 , 1 ) ;
96+ t1 = engine . TryEvaluate ( "-7 < -2 ?1 : 2" , 0 ) ;
97+ assert . equal ( t1 , 1 ) ;
98+
99+ t1 = engine . TryEvaluate ( "-7 < -2 ?1 :2" , 0 ) ;
100+ assert . equal ( t1 , 1 ) ;
101+ t1 = engine . TryEvaluate ( "-7 < -2 ? 1 : 2" , 0 ) ;
102+ assert . equal ( t1 , 1 ) ;
103+ t1 = engine . TryEvaluate ( "-7 < -2 ?1 : 2" , 0 ) ;
104+ assert . equal ( t1 , 1 ) ;
105+
106+ t1 = engine . TryEvaluate ( "-7 < -2 ?1 : 2" , 0 ) ;
107+ assert . equal ( t1 , 1 ) ;
108+
109+ t1 = engine . TryEvaluate ( "(!(-7 < -2))?1:2" , 0 ) ;
110+ assert . equal ( t1 , 2 ) ;
111+ t1 = engine . TryEvaluate ( "1>2?1:2" , 0 ) ;
112+ assert . equal ( t1 , 2 ) ;
113+
114+ t1 = engine . TryEvaluate ( "1!=2?1:2" , 0 ) ;
115+ assert . equal ( t1 , 1 ) ;
116+
117+ var t2 = engine . TryEvaluate ( "Asc('abcABC123')" , "" ) ;
118+ assert . equal ( t2 , "abcABC123" ) ;
119+ } ) ;
120+
121+ QUnit . test ( 'base_test' , async function ( assert ) {
122+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
123+
124+ engine = new AlgorithmEngine ( ) ;
125+ var t = engine . TryEvaluate ( "1+(3*2+2)/2" , 0 ) ;
126+ assert . equal ( 5 , t ) ;
127+
128+ t = engine . TryEvaluate ( "(8-3)*(3+2)" , 0 ) ;
129+ assert . equal ( 25 , t ) ;
130+
131+ t = engine . TryEvaluate ( "(8-3)*(3+2) % 7" , 0 ) ;
132+ assert . equal ( 4 , t ) ;
133+
134+ var b = engine . TryEvaluate ( "1=1" , false ) ;
135+ assert . equal ( true , b ) ;
136+
137+ b = engine . TryEvaluate ( "1=2" , true ) ;
138+ assert . equal ( false , b ) ;
139+
140+ b = engine . TryEvaluate ( "1<>2" , false ) ;
141+ assert . equal ( true , b ) ;
142+
143+ b = engine . TryEvaluate ( "1!=2" , false ) ;
144+ assert . equal ( true , b ) ;
145+
146+ b = engine . TryEvaluate ( "1>2" , true ) ;
147+ assert . equal ( false , b ) ;
148+
149+ b = engine . TryEvaluate ( "1<2" , false ) ;
150+ assert . equal ( true , b ) ;
151+
152+ b = engine . TryEvaluate ( "1<=2" , false ) ;
153+ assert . equal ( true , b ) ;
154+
155+ b = engine . TryEvaluate ( "1>=2" , true ) ;
156+ assert . equal ( false , b ) ;
157+
158+ b = engine . TryEvaluate ( "'1'='1'" , false ) ;
159+ assert . equal ( true , b ) ;
160+ b = engine . TryEvaluate ( "'e'='e'" , false ) ;
161+ assert . equal ( true , b ) ;
162+ b = engine . TryEvaluate ( "'1'='2'" , true ) ;
163+ assert . equal ( false , b ) ;
164+ b = engine . TryEvaluate ( "'1'!='2'" , false ) ;
165+ assert . equal ( true , b ) ;
166+ } ) ;
167+
168+ QUnit . test ( 'base_test3' , async function ( assert ) {
169+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
170+
171+ engine = new AlgorithmEngine ( ) ;
172+
173+ var c = engine . TryEvaluate ( "(2)+/*123456*/3" , 0 ) ;
174+ assert . equal ( 5 , c ) ;
175+
176+ c = engine . TryEvaluate ( "2+3//eee" , 0 ) ;
177+ assert . equal ( 5 , c ) ;
178+
179+ c = engine . TryEvaluate ( "(2)+/*123456*/3 ee22+22" , 0 ) ;
180+ assert . equal ( 0 , c ) ;
181+ } ) ;
182+
183+ QUnit . test ( 'base_test4' , async function ( assert ) {
184+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
185+
186+ engine = new AlgorithmEngine ( ) ;
187+
188+ var c = engine . TryEvaluate ( "'4dd'&'55' rr" , "" ) ;
189+ assert . equal ( "" , c ) ;
190+ } ) ;
191+
192+ QUnit . test ( 'base_test5' , async function ( assert ) {
193+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
194+
195+ engine = new AlgorithmEngine ( ) ;
196+
197+ var c = engine . TryEvaluate ( "'4dd'&'55'.left(1)" , "" ) ;
198+ assert . equal ( "4dd5" , c ) ;
199+ } ) ;
200+
201+ QUnit . test ( 'Cylinder_Test' , async function ( assert ) {
202+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
203+
204+ c = new AlgorithmEngine ( ) ;
205+ var data = { '半径' : 3 , '直径' : 6 , '高' : 10 } ;
206+
207+ var t = c . TryEvaluate ( "[半径]*[半径]*pi()" , 0.0 , data ) ; //圆底面积
208+ var t2 = c . TryEvaluate ( "半径*半径*pi()" , 0.0 , data ) ; //圆底面积
209+
210+ var t4 = c . TryEvaluate ( "@半径*@半径*pi()" , 0.0 , data ) ; //圆底面积
211+ var t5 = c . TryEvaluate ( "#半径#*#半径#*pi()" , 0.0 , data ) ; //圆底面积
212+ var t6 = c . TryEvaluate ( "【半径】*【半径】*pi()" , 0.0 , data ) ; //圆底面积
213+ var t7 = c . TryEvaluate ( "【半径】*【半径】*pi()" , 0.0 , data ) ; //圆底面积
214+
215+ assert . equal ( t , t2 ) ;
216+ //assert.equal(t, t3);
217+ assert . equal ( t , t4 ) ;
218+ assert . equal ( t , t5 ) ;
219+ assert . equal ( t , t6 ) ;
220+ assert . equal ( t , t7 ) ;
221+
222+
223+
224+ t = c . TryEvaluate ( "[直径]*pi()" , 0.0 , data ) ; //圆的长
225+ t = c . TryEvaluate ( "[半径]*[半径]*pi()*[高]" , 0.0 , data ) ; //圆的体积
226+
227+ t = c . TryEvaluate ( "['半径']*[半径]*pi()*[高]" , 0.0 , data ) ; //圆的体积
228+
229+ //t = c.TryEvaluate("求面积(10)", 0.0, data); //圆的体积
230+ //assert.equal(10 * 10 * Math.PI, t, 10, data);
231+
232+
233+ var json = { '灰色' :'L' , 'canBookCount' :905 , 'saleCount' :91 , 'specId' :'43b0e72e98731aed69e1f0cc7d64bf4d' } ;
234+
235+ var tt = c . TryEvaluate ( "['灰色']" , "" , json ) ; //圆的体积
236+ assert . equal ( "L" , tt ) ;
237+
238+
239+ var tt2 = c . EvaluateFormula ( "'圆'-[半径]-高" , '-' , data ) ;
240+ assert . equal ( "圆-3-10" , tt2 ) ;
241+ } ) ;
242+
243+
244+ QUnit . test ( 'Test5555' , async function ( assert ) {
245+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
246+
247+ engine = new AlgorithmEngine ( ) ;
248+ var data = { '半径' : 3 , '直径' : 6 , '高' : 10 } ;
249+
250+
251+ var t = c . GetSimplifiedFormula ( "[半径]*[半径]*pi()" , data ) ; // 圆底面积
252+ assert . equal ( "3 * 3 * 3.14159265358979" , t ) ;
253+
254+ var t2 = c . GetSimplifiedFormula ( "半径*if(半径>2,1,3)" , data ) ;
255+ assert . equal ( "3 * 1" , t2 ) ;
256+
257+ var t24 = c . GetSimplifiedFormula ( "半径*if(半径>2,1+4,3)" , data ) ;
258+ assert . equal ( "3 * 5" , t24 ) ;
259+ } ) ;
260+ } ) ;
261+
262+
0 commit comments