@@ -134,5 +134,101 @@ public async Task VerifyQueryfilterBoolOnly()
134
134
await storageContext . DropTableAsync < DemoEntityQuery > ( ) ;
135
135
}
136
136
}
137
+
138
+ [ Fact ]
139
+ public async Task VerifyQueryfilterLongOnly ( )
140
+ {
141
+ // Import from Blob
142
+ using ( var storageContext = new StorageContext ( env . ConnectionString ) )
143
+ {
144
+ // set the tablename context
145
+ storageContext . SetTableContext ( ) ;
146
+
147
+ var l = 2910892817298 ;
148
+
149
+ // create the model
150
+ var models = new List < DemoEntityQuery > ( )
151
+ {
152
+ new DemoEntityQuery ( ) { R = "E6" , StringField = "Demo03" } ,
153
+ new DemoEntityQuery ( ) { R = "E7" , StringField = "Demo03" , LongField = l - 1 } ,
154
+ new DemoEntityQuery ( ) { R = "E8" , StringField = "Demo03" , LongField = l + 1 }
155
+ } ;
156
+
157
+ // ensure we are using the attributes
158
+ storageContext . AddAttributeMapper ( typeof ( DemoEntityQuery ) ) ;
159
+
160
+ // inser the model
161
+ await storageContext . EnableAutoCreateTable ( ) . MergeOrInsertAsync < DemoEntityQuery > ( models ) ;
162
+
163
+ // build the basic filter
164
+ var filterItem = new QueryFilter ( )
165
+ {
166
+ FilterType = QueryFilterType . And ,
167
+ Property = nameof ( DemoEntityQuery . LongField ) ,
168
+ Value = l ,
169
+ Operator = QueryFilterOperator . GreaterEqual
170
+ } ;
171
+
172
+ // query all elements with empty filter list
173
+ var result = ( await storageContext . QueryAsync < DemoEntityQuery > ( null , new List < QueryFilter > ( ) ) ) . ToList ( ) ;
174
+ Assert . Equal ( 3 , result . Count ( ) ) ;
175
+
176
+ result = ( await storageContext . QueryAsync < DemoEntityQuery > ( "P1" , new List < QueryFilter > ( ) { filterItem } ) ) . ToList ( ) ;
177
+ Assert . Single ( result , i => i ? . LongField == l + 1 ) ;
178
+
179
+ // Clean up
180
+ var all = await storageContext . QueryAsync < DemoEntityQuery > ( ) ;
181
+ await storageContext . DeleteAsync < DemoEntityQuery > ( all ) ;
182
+ await storageContext . DropTableAsync < DemoEntityQuery > ( ) ;
183
+ }
184
+ }
185
+
186
+ [ Fact ]
187
+ public async Task VerifyQueryfilterDateTimeOnly ( )
188
+ {
189
+ // Import from Blob
190
+ using ( var storageContext = new StorageContext ( env . ConnectionString ) )
191
+ {
192
+ // set the tablename context
193
+ storageContext . SetTableContext ( ) ;
194
+
195
+ var now = DateTime . UtcNow ;
196
+
197
+ // create the model
198
+ var models = new List < DemoEntityQuery > ( )
199
+ {
200
+ new DemoEntityQuery ( ) { R = "E6" , StringField = "Demo03" } ,
201
+ new DemoEntityQuery ( ) { R = "E7" , StringField = "Demo03" , DateTimeField = now . AddDays ( - 1 ) } ,
202
+ new DemoEntityQuery ( ) { R = "E8" , StringField = "Demo03" , DateTimeField = now . AddDays ( 1 ) }
203
+ } ;
204
+
205
+ // ensure we are using the attributes
206
+ storageContext . AddAttributeMapper ( typeof ( DemoEntityQuery ) ) ;
207
+
208
+ // inser the model
209
+ await storageContext . EnableAutoCreateTable ( ) . MergeOrInsertAsync < DemoEntityQuery > ( models ) ;
210
+
211
+ // build the basic filter
212
+ var filterItem = new QueryFilter ( )
213
+ {
214
+ FilterType = QueryFilterType . And ,
215
+ Property = nameof ( DemoEntityQuery . DateTimeField ) ,
216
+ Value = now ,
217
+ Operator = QueryFilterOperator . GreaterEqual
218
+ } ;
219
+
220
+ // query all elements with empty filter list
221
+ var result = ( await storageContext . QueryAsync < DemoEntityQuery > ( null , new List < QueryFilter > ( ) ) ) . ToList ( ) ;
222
+ Assert . Equal ( 3 , result . Count ( ) ) ;
223
+
224
+ result = ( await storageContext . QueryAsync < DemoEntityQuery > ( "P1" , new List < QueryFilter > ( ) { filterItem } ) ) . ToList ( ) ;
225
+ Assert . Single ( result , i => i ? . DateTimeField == now . AddDays ( 1 ) ) ;
226
+
227
+ // Clean up
228
+ var all = await storageContext . QueryAsync < DemoEntityQuery > ( ) ;
229
+ await storageContext . DeleteAsync < DemoEntityQuery > ( all ) ;
230
+ await storageContext . DropTableAsync < DemoEntityQuery > ( ) ;
231
+ }
232
+ }
137
233
}
138
234
}
0 commit comments