1+ using System . Diagnostics ;
2+ using Quicksilver . ObjectValidator ;
3+
4+ namespace ObjectValidatorTest ;
5+ [ TestClass ]
6+ public class UnitTest1
7+ {
8+ private readonly Validator validator ;
9+ private readonly ValidationResult result , ffResult ;
10+ private readonly HashSet < int ? > failures ;
11+
12+ public UnitTest1 ( )
13+ {
14+ validator = new ( File . ReadAllText ( "rules.json" ) ) ;
15+ TestObject testObject = new ( ) {
16+ testString = "test測試" ,
17+ testInt = 1 ,
18+ testBool = true ,
19+ testArray = [
20+ null ,
21+ new ( ) {
22+ testDateTime = new DateTime ( 2023 , 1 , 1 )
23+ } ,
24+ new ( ) {
25+ testDateTime = new DateTime ( 2024 , 1 , 1 )
26+ }
27+ ]
28+ } ;
29+ Stopwatch stopwatch = Stopwatch . StartNew ( ) ;
30+ result = validator . Validate ( testObject ) ;
31+ stopwatch . Stop ( ) ;
32+ Console . WriteLine ( stopwatch . ElapsedMilliseconds + " ms" ) ;
33+ failures = result . failures . Select ( f => f . id ) . ToHashSet ( ) ;
34+ validator . fastFail = true ;
35+ ffResult = validator . Validate ( testObject ) ;
36+ }
37+
38+ [ TestMethod ]
39+ public void TestNull ( )
40+ {
41+ Assert . IsTrue ( failures . Contains ( 1 ) ) ;
42+ }
43+
44+ [ TestMethod ]
45+ public void TestIn ( )
46+ {
47+ Assert . IsFalse ( failures . Contains ( 2 ) ) ;
48+ }
49+
50+ [ TestMethod ]
51+ public void TestBlank ( )
52+ {
53+ Assert . IsFalse ( failures . Contains ( 3 ) ) ;
54+ }
55+
56+ [ TestMethod ]
57+ public void TestRegex ( )
58+ {
59+ Assert . IsFalse ( failures . Contains ( 4 ) ) ;
60+ }
61+
62+ [ TestMethod ]
63+ public void TestBytes ( )
64+ {
65+ Assert . IsTrue ( failures . Contains ( 5 ) ) ;
66+ }
67+
68+ [ TestMethod ]
69+ public void TestStringLength ( )
70+ {
71+ Assert . IsFalse ( failures . Contains ( 6 ) ) ;
72+ }
73+
74+ [ TestMethod ]
75+ public void TestArrayLength ( )
76+ {
77+ Assert . IsFalse ( failures . Contains ( 7 ) ) ;
78+ }
79+
80+ [ TestMethod ]
81+ public void TestStringContains ( )
82+ {
83+ Assert . IsFalse ( failures . Contains ( 8 ) ) ;
84+ }
85+
86+ [ TestMethod ]
87+ public void TestArrayContains ( )
88+ {
89+ Assert . IsFalse ( failures . Contains ( 9 ) ) ;
90+ }
91+
92+ [ TestMethod ]
93+ public void TestRange ( )
94+ {
95+ Assert . IsFalse ( failures . Contains ( 10 ) ) ;
96+ }
97+
98+ [ TestMethod ]
99+ public void TestTrue ( )
100+ {
101+ Assert . IsFalse ( failures . Contains ( 11 ) ) ;
102+ }
103+
104+ [ TestMethod ]
105+ public void TestAnd1 ( )
106+ {
107+ Assert . IsTrue ( failures . Contains ( 101 ) ) ;
108+ }
109+
110+ [ TestMethod ]
111+ public void TestOr1 ( )
112+ {
113+ Assert . IsFalse ( failures . Contains ( 102 ) ) ;
114+ }
115+
116+ [ TestMethod ]
117+ public void TestAnd2 ( )
118+ {
119+ Assert . IsTrue ( failures . Contains ( 103 ) ) ;
120+ }
121+
122+ [ TestMethod ]
123+ public void TestOr2 ( )
124+ {
125+ Assert . IsFalse ( failures . Contains ( 104 ) ) ;
126+ }
127+
128+ [ TestMethod ]
129+ public void TestFailedFields ( )
130+ {
131+ Assert . AreEqual ( 2 , result . failedFields . Count ) ;
132+ Assert . IsTrue ( result . failedFields . Contains ( "testString" ) ) ;
133+ Assert . IsTrue ( result . failedFields . Contains ( "testArray.*" ) ) ;
134+ }
135+
136+ [ TestMethod ]
137+ public void TestFastFail ( )
138+ {
139+ Assert . AreEqual ( 1 , ffResult . failures . Count ) ;
140+ }
141+ }
0 commit comments