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