Skip to content

Commit 9b0453d

Browse files
committed
+ unit tests
1 parent 148d2ee commit 9b0453d

10 files changed

+3382
-2
lines changed
Lines changed: 341 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,341 @@
1+
VERSION 1.0 CLASS
2+
BEGIN
3+
MultiUse = -1 'True
4+
END
5+
Attribute VB_Name = "FilterStringBuilderTests"
6+
Attribute VB_GlobalNameSpace = False
7+
Attribute VB_Creatable = False
8+
Attribute VB_PredeclaredId = False
9+
Attribute VB_Exposed = False
10+
'---------------------------------------------------------------------------------------
11+
' AccUnit:TestClass
12+
' FilterStringBuilderTests
13+
'---------------------------------------------------------------------------------------
14+
'/**
15+
' <summary>
16+
' AccUnit-Testklasse für FilterStringBuilder
17+
' </summary>
18+
' <remarks></remarks>
19+
'**/
20+
'---------------------------------------------------------------------------------------
21+
'<codelib>
22+
' <file>_test/data/FilterStringBuilderTests.cls</file>
23+
' <license>_codelib/license.bas</license>
24+
' <use>data/FilterStringBuilder.cls</use>
25+
'</codelib>
26+
'---------------------------------------------------------------------------------------
27+
'
28+
Option Compare Text
29+
Option Explicit
30+
31+
'--------------------------------------------------------------------
32+
' Tests
33+
'--------------------------------------------------------------------
34+
35+
Public Sub Add_StringNumericDateBooleanFilter_CheckDoaSyntax()
36+
37+
Const Expected As String = "(S Like 'a*') And (N >= 5.1) And (D < #2015-02-01#) And (B = True)"
38+
39+
Dim Actual As Variant
40+
41+
With New FilterStringBuilder
42+
43+
Set .SqlTool = SqlTools.Clone("\#yyyy-mm-dd\#", "True", "*")
44+
45+
.Add "S", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "a"
46+
.Add "N", SQL_Numeric, SQL_GreaterThan + SQL_Equal, 5.1
47+
.Add "D", SQL_Date, SQL_LessThan, #2/1/2015#
48+
.Add "B", SQL_Boolean, SQL_Equal, True
49+
50+
Actual = .ToString(SQL_And)
51+
52+
End With
53+
54+
Assert.That Actual, Iz.EqualTo(Expected)
55+
56+
End Sub
57+
58+
Public Sub Add_StringNumericDateBooleanFilterWithoutBrackets_CheckDoaSyntax()
59+
60+
Const Expected As String = "(S Like 'a*') And (N >= 5.1) And (D < #2015-02-01#) And (B = True)"
61+
62+
Dim Actual As Variant
63+
64+
With New FilterStringBuilder
65+
66+
Set .SqlTool = SqlTools.Clone("\#yyyy-mm-dd\#", "True", "*")
67+
68+
.Add "S", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "a"
69+
.Add "N", SQL_Numeric, SQL_GreaterThan + SQL_Equal, 5.1
70+
.Add "D", SQL_Date, SQL_LessThan, #2/1/2015#
71+
.Add "B", SQL_Boolean, SQL_Equal, True
72+
73+
Actual = .ToString(SQL_And)
74+
75+
End With
76+
77+
Assert.That Actual, Iz.EqualTo(Expected)
78+
79+
End Sub
80+
81+
Public Sub AddCriteria_AddConString_CheckSqlText()
82+
83+
Const Expected As String = "(a > b)"
84+
85+
Dim Actual As Variant
86+
87+
With New FilterStringBuilder
88+
89+
.AddCriteria ("a > b")
90+
91+
Actual = .ToString(SQL_And)
92+
93+
End With
94+
95+
Assert.That Actual, Iz.EqualTo(Expected)
96+
97+
End Sub
98+
99+
Public Sub ConfigSqlFormat_DAO_CheckFormats()
100+
101+
Const TestDateFormat As String = "\#YYYY-mm-DD\#"
102+
Const TestBooleanString As String = "T"
103+
Const TestWildCardString As String = "?"
104+
105+
With New FilterStringBuilder
106+
107+
.ConfigSqlFormat TestDateFormat, TestBooleanString, TestWildCardString
108+
109+
Assert.That .SqlTool.SqlDateFormat, Iz.EqualTo(TestDateFormat)
110+
Assert.That .SqlTool.SqlBooleanTrueString, Iz.EqualTo(TestBooleanString)
111+
Assert.That .SqlTool.SqlWildCardString, Iz.EqualTo(TestWildCardString)
112+
113+
End With
114+
115+
End Sub
116+
117+
Public Sub ConditionGroups_AddOrGroups_CheckSqlText()
118+
119+
Const Expected = "((F1 = 1)) And ((F2a Like 'a*') Or (F2b Like 'a*') Or (F2c Like 'a*')) And ((F3a = True) Or (F3b = True) Or (F3c = True))"
120+
121+
Dim Actual As String
122+
123+
With New FilterStringBuilder
124+
125+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
126+
127+
.Add "F1", SQL_Numeric, SQL_Equal, 1
128+
129+
With .NewConditionGroup(SQL_Or)
130+
.Add "F2a", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "a"
131+
.Add "F2b", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "a"
132+
.Add "F2c", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "a"
133+
End With
134+
With .NewConditionGroup(SQL_Or)
135+
.Add "F3a", SQL_Boolean, SQL_Equal, True
136+
.Add "F3b", SQL_Boolean, SQL_Equal, True
137+
.Add "F3c", SQL_Boolean, SQL_Equal, True
138+
End With
139+
140+
Actual = .ToString()
141+
142+
End With
143+
144+
Assert.That Actual, Iz.EqualTo(Expected)
145+
146+
End Sub
147+
148+
149+
Public Sub AddSubSelectCriteria_WithSubSelectCond_CheckSqlText()
150+
151+
Const Expected As String = "((F1 = 1)) And (fiXyz In (Select idXyz From TabXyz Where (F2a Like 'a*') Or (F2b Like 'b*')))"
152+
153+
Dim Actual As String
154+
155+
With New FilterStringBuilder
156+
157+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
158+
159+
.Add "F1", SQL_Numeric, SQL_Equal, 1
160+
161+
With .AddSubSelectCriteria("fiXyz", SQL_In, "Select idXyz From TabXyz", , , SQL_Or)
162+
.Add "F2a", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "a"
163+
.Add "F2b", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "b"
164+
End With
165+
166+
Actual = .ToString()
167+
168+
End With
169+
170+
Assert.That Actual, Iz.EqualTo(Expected)
171+
172+
End Sub
173+
174+
Public Sub AddSubSelectCriteria_UseWhereReplacementText_CheckSqlText()
175+
176+
Const Expected As String = "((F1 = 1)) And (idXyz In (Select fiXyz From TabXyzItems Where (fiTyp In (1,2,3)) Group By fiXyz Having Count(*) = 3))"
177+
178+
Dim Actual As String
179+
180+
With New FilterStringBuilder
181+
182+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
183+
184+
.Add "F1", SQL_Numeric, SQL_Equal, 1
185+
186+
With .AddSubSelectCriteria("idXyz", SQL_In, "Select fiXyz From TabXyzItems [WhereStatement] Group By fiXyz Having Count(*) = 3", , True)
187+
.Add "fiTyp", SQL_Numeric, SQL_In, Array(1, 2, 3)
188+
End With
189+
190+
Actual = .ToString()
191+
192+
End With
193+
194+
Assert.That Actual, Iz.EqualTo(Expected)
195+
196+
End Sub
197+
198+
Public Sub AddSubSelectCriteria_IgnoreEmptySubFilter_CheckSqlText()
199+
200+
Const Expected As String = "((F1 = 1))"
201+
202+
Dim Actual As String
203+
204+
With New FilterStringBuilder
205+
206+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
207+
208+
.Add "F1", SQL_Numeric, SQL_Equal, 1
209+
210+
With .AddSubSelectCriteria("fiXyz", SQL_In, "Select idXyz From TabXyz", True, , SQL_Or)
211+
.Add "F2a", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, Null
212+
.Add "F2b", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, Null
213+
End With
214+
215+
Actual = .ToString()
216+
217+
End With
218+
219+
Assert.That Actual, Iz.EqualTo(Expected)
220+
221+
End Sub
222+
223+
Public Sub AddSubSelectCriteria_WithSubFilterAndUseWhereReplacementText_CheckSqlText()
224+
225+
Const Expected As String = "((F1 = 1)) And (idXyz In (Select fiXyz From TabXyzItems Where (fiTyp = 2) Group By fiXyz Having Count(*) = 3))"
226+
227+
Dim Actual As String
228+
229+
With New FilterStringBuilder
230+
231+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
232+
233+
.Add "F1", SQL_Numeric, SQL_Equal, 1
234+
235+
With .AddSubSelectCriteria("idXyz", SQL_In, "Select fiXyz From TabXyzItems [WhereStatement] Group By fiXyz Having Count(*) = 3", False, True)
236+
.Add "fiTyp", SQL_Numeric, SQL_Equal, 2
237+
End With
238+
239+
Actual = .ToString()
240+
241+
End With
242+
243+
Assert.That Actual, Iz.EqualTo(Expected)
244+
245+
End Sub
246+
247+
Public Sub AddSubSelectCriteria_IgnoreEmptySubFilterAndUseWhereReplacementText_CheckSqlText()
248+
249+
Const Expected As String = "((F1 = 1))"
250+
251+
Dim Actual As String
252+
253+
With New FilterStringBuilder
254+
255+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
256+
257+
.Add "F1", SQL_Numeric, SQL_Equal, 1
258+
259+
With .AddSubSelectCriteria("idXyz", SQL_In, "Select fiXyz From TabXyzItems [WhereStatement] Group By fiXyz Having Count(*) = 3", True, True)
260+
.Add "fiTyp", SQL_Numeric, SQL_In, Null
261+
End With
262+
263+
Actual = .ToString()
264+
265+
End With
266+
267+
Assert.That Actual, Iz.EqualTo(Expected)
268+
269+
End Sub
270+
271+
Public Sub AddSubSelectCriteria_WithEmptySubFilterAndUseWhereReplacementText_CheckSqlText()
272+
273+
Const Expected As String = "((F1 = 1)) And (idXyz In (Select fiXyz From TabXyzItems Group By fiXyz Having Count(*) = 3))"
274+
275+
Dim Actual As String
276+
277+
With New FilterStringBuilder
278+
279+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
280+
281+
.Add "F1", SQL_Numeric, SQL_Equal, 1
282+
283+
With .AddSubSelectCriteria("idXyz", SQL_In, "Select fiXyz From TabXyzItems [WhereStatement] Group By fiXyz Having Count(*) = 3", False, True)
284+
.Add "fiTyp", SQL_Numeric, SQL_In, Null
285+
End With
286+
287+
Actual = .ToString()
288+
289+
End With
290+
291+
Assert.That Actual, Iz.EqualTo(Expected)
292+
293+
End Sub
294+
295+
Public Sub AddExistsCriteria_WithSubSelectCond_CheckSqlText()
296+
297+
Const Expected As String = "((F1 = 1)) And (Exists (Select * From TabXyz Where (idXyz = T.fiXyz) And (F2a Like 'a*') And (F2b Like 'b*')))"
298+
299+
Dim Actual As String
300+
301+
With New FilterStringBuilder
302+
303+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
304+
305+
.Add "F1", SQL_Numeric, SQL_Equal, 1
306+
307+
With .AddExistsCriteria("Select * From TabXyz")
308+
.AddCriteria "idXyz = T.fiXyz"
309+
.Add "F2a", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "a"
310+
.Add "F2b", SQL_Text, SQL_Like + SQL_Add_WildCardSuffix, "b"
311+
End With
312+
313+
Actual = .ToString()
314+
315+
End With
316+
317+
Assert.That Actual, Iz.EqualTo(Expected)
318+
319+
End Sub
320+
321+
Public Sub AddCriteria_WithCommaSeparator_CheckSqlText()
322+
323+
Const Expected As String = "@F1 = 1, @F2 = 2, @F3 = 3"
324+
325+
Dim Actual As String
326+
327+
With New FilterStringBuilder
328+
329+
Set .SqlTool = SqlTools.NewInstance("\#yyyy-mm-dd\#", "True", "*")
330+
331+
.Add "@F1", SQL_Numeric, SQL_Equal, 1
332+
.Add "@F2", SQL_Numeric, SQL_Equal, 2
333+
.Add "@F3", SQL_Numeric, SQL_Equal, 3
334+
335+
Actual = .ToString(SQL_CommaSeparator)
336+
337+
End With
338+
339+
Assert.That Actual, Iz.EqualTo(Expected)
340+
341+
End Sub

0 commit comments

Comments
 (0)