Skip to content

Commit 3d6215a

Browse files
committed
添加 拆分 条件
1 parent cf9e55c commit 3d6215a

File tree

8 files changed

+1392
-34
lines changed

8 files changed

+1392
-34
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
using PetaTest;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using ToolGood.Algorithm;
8+
using ToolGood.Algorithm.Internals;
9+
using static ToolGood.Algorithm.Internals.ConditionTree;
10+
11+
namespace ToolGood.Algorithm2.Test.ConditionTrees
12+
{
13+
[TestFixture]
14+
public class ConditionTreeTest
15+
{
16+
[Test]
17+
public void Test1()
18+
{
19+
string txt = "AA.IsText()=bb";
20+
var t1 = ConditionTree.Parse(txt);
21+
Assert.AreEqual(t1.Type, ConditionType.String);
22+
Assert.AreEqual("AA.IsText()=bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
23+
24+
txt = "[bbb]=bb";
25+
t1 = ConditionTree.Parse(txt);
26+
Assert.AreEqual(t1.Type, ConditionType.String);
27+
Assert.AreEqual(txt, txt.Substring(t1.Start, t1.End - t1.Start + 1));
28+
}
29+
30+
[Test]
31+
public void Test2()
32+
{
33+
string txt = "AA.IsText()=bb && dd=ss";
34+
var tree = ConditionTree.Parse(txt);
35+
36+
Assert.AreEqual(tree.Type, ConditionType.And);
37+
var t1 = tree.Nodes[0];
38+
var t2 = tree.Nodes[1];
39+
Assert.AreEqual("AA.IsText()=bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
40+
Assert.AreEqual("dd=ss", txt.Substring(t2.Start, t2.End - t2.Start + 1));
41+
}
42+
43+
[Test]
44+
public void Test3()
45+
{
46+
string txt = "AA.IsText()=bb || dd=ss";
47+
var tree = ConditionTree.Parse(txt);
48+
49+
Assert.AreEqual(tree.Type, ConditionType.Or);
50+
var t1 = tree.Nodes[0];
51+
var t2 = tree.Nodes[1];
52+
Assert.AreEqual("AA.IsText()=bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
53+
Assert.AreEqual("dd=ss", txt.Substring(t2.Start, t2.End - t2.Start + 1));
54+
}
55+
56+
57+
[Test]
58+
public void Test4()
59+
{
60+
string txt = "AA.IsText()=bb || (dd=ss && tt=22)";
61+
var tree = ConditionTree.Parse(txt);
62+
63+
Assert.AreEqual(tree.Type, ConditionType.Or);
64+
var t1 = tree.Nodes[0];
65+
var t2 = tree.Nodes[1];
66+
var t3 = t2.Nodes[0];
67+
var t4 = t2.Nodes[1];
68+
Assert.AreEqual("AA.IsText()=bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
69+
Assert.AreEqual("dd=ss", txt.Substring(t3.Start, t3.End - t3.Start + 1));
70+
Assert.AreEqual("tt=22", txt.Substring(t4.Start, t4.End - t4.Start + 1));
71+
}
72+
73+
[Test]
74+
public void Test5()
75+
{
76+
string txt = "AA.IsText()=bb || AND(dd=ss , tt=22)";
77+
var tree = ConditionTree.Parse(txt);
78+
79+
Assert.AreEqual(tree.Type, ConditionType.Or);
80+
var t1 = tree.Nodes[0];
81+
var t2 = tree.Nodes[1];
82+
Assert.AreEqual("AA.IsText()=bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
83+
Assert.AreEqual("AND(dd=ss , tt=22)", txt.Substring(t2.Start, t2.End - t2.Start + 1));
84+
}
85+
86+
[Test]
87+
public void Test6()
88+
{
89+
string txt = "AA.IsText()==bb && (dd=ss || tt=22)";
90+
var tree = ConditionTree.Parse(txt);
91+
92+
Assert.AreEqual(tree.Type, ConditionType.And);
93+
var t1 = tree.Nodes[0];
94+
var t2 = tree.Nodes[1];
95+
Assert.AreEqual(t2.Type, ConditionType.Or);
96+
var t3 = t2.Nodes[0];
97+
var t4 = t2.Nodes[1];
98+
99+
Assert.AreEqual("AA.IsText()==bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
100+
Assert.AreEqual("dd=ss", txt.Substring(t3.Start, t3.End - t3.Start + 1));
101+
Assert.AreEqual("tt=22", txt.Substring(t4.Start, t4.End - t4.Start + 1));
102+
}
103+
104+
[Test]
105+
public void Test7()
106+
{
107+
string txt = "AA.IsText()==bb ? 1:2";
108+
var t1 = ConditionTree.Parse(txt);
109+
Assert.AreEqual(t1.Type, ConditionType.String);
110+
Assert.AreEqual(txt, txt.Substring(t1.Start, t1.End - t1.Start + 1));
111+
}
112+
113+
[Test]
114+
public void Test8()
115+
{
116+
string txt = "AA.IsText()==bb && (dd=ss || {tt}=22)";
117+
var tree = ConditionTree.Parse(txt);
118+
119+
Assert.AreEqual(tree.Type, ConditionType.And);
120+
var t1 = tree.Nodes[0];
121+
var t2 = tree.Nodes[1];
122+
Assert.AreEqual(t2.Type, ConditionType.Or);
123+
var t3 = t2.Nodes[0];
124+
var t4 = t2.Nodes[1];
125+
126+
Assert.AreEqual("AA.IsText()==bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
127+
Assert.AreEqual("dd=ss", txt.Substring(t3.Start, t3.End - t3.Start + 1));
128+
Assert.AreEqual("{tt}=22", txt.Substring(t4.Start, t4.End - t4.Start + 1));
129+
}
130+
131+
[Test]
132+
public void Test9()
133+
{
134+
string txt = "AA.IsText()==bb && (dd=ss || [tt]==22)";
135+
var tree = ConditionTree.Parse(txt);
136+
137+
Assert.AreEqual(tree.Type, ConditionType.And);
138+
var t1 = tree.Nodes[0];
139+
var t2 = tree.Nodes[1];
140+
Assert.AreEqual(t2.Type, ConditionType.Or);
141+
var t3 = t2.Nodes[0];
142+
var t4 = t2.Nodes[1];
143+
144+
Assert.AreEqual("AA.IsText()==bb", txt.Substring(t1.Start, t1.End - t1.Start + 1));
145+
Assert.AreEqual("dd=ss", txt.Substring(t3.Start, t3.End - t3.Start + 1));
146+
Assert.AreEqual("[tt]==22", txt.Substring(t4.Start, t4.End - t4.Start + 1));
147+
}
148+
149+
150+
}
151+
}

csharp/ToolGood.Algorithm2/AlgorithmEngine.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ public ushort TryEvaluate(string exp, ushort def)
393393
return (ushort)obj.IntValue;
394394
}
395395
} catch (Exception ex) {
396-
LastError = ex.Message;
396+
LastError = ex.Message + "\r\n" + ex.StackTrace;
397397
}
398398
return def;
399399
}
@@ -417,7 +417,7 @@ public uint TryEvaluate(string exp, uint def)
417417
return (uint)obj.IntValue;
418418
}
419419
} catch (Exception ex) {
420-
LastError = ex.Message;
420+
LastError = ex.Message + "\r\n" + ex.StackTrace;
421421
}
422422
return def;
423423
}
@@ -441,7 +441,7 @@ public ulong TryEvaluate(string exp, ulong def)
441441
return (ulong)obj.IntValue;
442442
}
443443
} catch (Exception ex) {
444-
LastError = ex.Message;
444+
LastError = ex.Message + "\r\n" + ex.StackTrace;
445445
}
446446
return def;
447447
}
@@ -465,7 +465,7 @@ public short TryEvaluate(string exp, short def)
465465
return (short)obj.IntValue;
466466
}
467467
} catch (Exception ex) {
468-
LastError = ex.Message;
468+
LastError = ex.Message + "\r\n" + ex.StackTrace;
469469
}
470470
return def;
471471
}
@@ -489,7 +489,7 @@ public int TryEvaluate(string exp, int def)
489489
return obj.IntValue;
490490
}
491491
} catch (Exception ex) {
492-
LastError = ex.Message;
492+
LastError = ex.Message + "\r\n" + ex.StackTrace;
493493
}
494494
return def;
495495
}
@@ -513,7 +513,7 @@ public long TryEvaluate(string exp, long def)
513513
return obj.IntValue;
514514
}
515515
} catch (Exception ex) {
516-
LastError = ex.Message;
516+
LastError = ex.Message + "\r\n" + ex.StackTrace;
517517
}
518518
return def;
519519
}
@@ -537,7 +537,7 @@ public float TryEvaluate(string exp, float def)
537537
return (float)obj.NumberValue;
538538
}
539539
} catch (Exception ex) {
540-
LastError = ex.Message;
540+
LastError = ex.Message + "\r\n" + ex.StackTrace;
541541
}
542542
return def;
543543
}
@@ -561,7 +561,7 @@ public double TryEvaluate(string exp, double def)
561561
return obj.NumberValue;
562562
}
563563
} catch (Exception ex) {
564-
LastError = ex.Message;
564+
LastError = ex.Message + "\r\n" + ex.StackTrace;
565565
}
566566
return def;
567567
}
@@ -585,7 +585,7 @@ public decimal TryEvaluate(string exp, decimal def)
585585
return (decimal)obj.NumberValue;
586586
}
587587
} catch (Exception ex) {
588-
LastError = ex.Message;
588+
LastError = ex.Message + "\r\n" + ex.StackTrace;
589589
}
590590
return def;
591591
}
@@ -611,7 +611,7 @@ public string TryEvaluate(string exp, string def)
611611
return obj.TextValue;
612612
}
613613
} catch (Exception ex) {
614-
LastError = ex.Message;
614+
LastError = ex.Message + "\r\n" + ex.StackTrace;
615615
}
616616
return def;
617617
}
@@ -634,7 +634,7 @@ public bool TryEvaluate(string exp, bool def)
634634
return obj.BooleanValue;
635635
}
636636
} catch (Exception ex) {
637-
LastError = ex.Message;
637+
LastError = ex.Message + "\r\n" + ex.StackTrace;
638638
}
639639
return def;
640640
}
@@ -657,7 +657,7 @@ public DateTime TryEvaluate(string exp, DateTime def)
657657
return (DateTime)obj.DateValue;
658658
}
659659
} catch (Exception ex) {
660-
LastError = ex.Message;
660+
LastError = ex.Message + "\r\n" + ex.StackTrace;
661661
}
662662
return def;
663663
}
@@ -680,7 +680,7 @@ public TimeSpan TryEvaluate(string exp, TimeSpan def)
680680
return (TimeSpan)obj.DateValue;
681681
}
682682
} catch (Exception ex) {
683-
LastError = ex.Message;
683+
LastError = ex.Message + "\r\n" + ex.StackTrace;
684684
}
685685
return def;
686686
}
@@ -704,7 +704,7 @@ public MyDate TryEvaluate_MyDate(string exp, MyDate def)
704704
return obj.DateValue;
705705
}
706706
} catch (Exception ex) {
707-
LastError = ex.Message;
707+
LastError = ex.Message + "\r\n" + ex.StackTrace;
708708
}
709709
return def;
710710
}

0 commit comments

Comments
 (0)