@@ -6,7 +6,6 @@ package builder
66
77import (
88 "fmt"
9- "reflect"
109 "testing"
1110
1211 "github.com/stretchr/testify/assert"
@@ -160,51 +159,101 @@ func TestBuilderCond(t *testing.T) {
160159 "0=1" ,
161160 []interface {}{},
162161 },
162+ {
163+ In ("a" , []int {1 }),
164+ "a IN (?)" ,
165+ []interface {}{1 },
166+ },
163167 {
164168 In ("a" , []int8 {}),
165169 "0=1" ,
166170 []interface {}{},
167171 },
172+ {
173+ In ("a" , []int8 {1 }),
174+ "a IN (?)" ,
175+ []interface {}{1 },
176+ },
168177 {
169178 In ("a" , []int16 {}),
170179 "0=1" ,
171180 []interface {}{},
172181 },
182+ {
183+ In ("a" , []int16 {1 }),
184+ "a IN (?)" ,
185+ []interface {}{1 },
186+ },
173187 {
174188 In ("a" , []int32 {}),
175189 "0=1" ,
176190 []interface {}{},
177191 },
192+ {
193+ In ("a" , []int32 {1 }),
194+ "a IN (?)" ,
195+ []interface {}{1 },
196+ },
178197 {
179198 In ("a" , []int64 {}),
180199 "0=1" ,
181200 []interface {}{},
182201 },
202+ {
203+ In ("a" , []int64 {1 }),
204+ "a IN (?)" ,
205+ []interface {}{1 },
206+ },
183207 {
184208 In ("a" , []uint {}),
185209 "0=1" ,
186210 []interface {}{},
187211 },
212+ {
213+ In ("a" , []uint {1 }),
214+ "a IN (?)" ,
215+ []interface {}{1 },
216+ },
188217 {
189218 In ("a" , []uint8 {}),
190219 "0=1" ,
191220 []interface {}{},
192221 },
222+ {
223+ In ("a" , []uint8 {1 }),
224+ "a IN (?)" ,
225+ []interface {}{1 },
226+ },
193227 {
194228 In ("a" , []uint16 {}),
195229 "0=1" ,
196230 []interface {}{},
197231 },
232+ {
233+ In ("a" , []uint16 {1 }),
234+ "a IN (?)" ,
235+ []interface {}{1 },
236+ },
198237 {
199238 In ("a" , []uint32 {}),
200239 "0=1" ,
201240 []interface {}{},
202241 },
242+ {
243+ In ("a" , []uint32 {1 }),
244+ "a IN (?)" ,
245+ []interface {}{1 },
246+ },
203247 {
204248 In ("a" , []uint64 {}),
205249 "0=1" ,
206250 []interface {}{},
207251 },
252+ {
253+ In ("a" , []uint64 {1 }),
254+ "a IN (?)" ,
255+ []interface {}{1 },
256+ },
208257 {
209258 In ("a" , []interface {}{1 , 2 , 3 }).And (Eq {"b" : "c" }),
210259 "a IN (?,?,?) AND b=?" ,
@@ -225,51 +274,101 @@ func TestBuilderCond(t *testing.T) {
225274 "0=0" ,
226275 []interface {}{},
227276 },
277+ {
278+ NotIn ("a" , []int {1 }),
279+ "a NOT IN (?)" ,
280+ []interface {}{1 },
281+ },
228282 {
229283 NotIn ("a" , []int8 {}),
230284 "0=0" ,
231285 []interface {}{},
232286 },
287+ {
288+ NotIn ("a" , []int8 {1 }),
289+ "a NOT IN (?)" ,
290+ []interface {}{1 },
291+ },
233292 {
234293 NotIn ("a" , []int16 {}),
235294 "0=0" ,
236295 []interface {}{},
237296 },
297+ {
298+ NotIn ("a" , []int16 {1 }),
299+ "a NOT IN (?)" ,
300+ []interface {}{1 },
301+ },
238302 {
239303 NotIn ("a" , []int32 {}),
240304 "0=0" ,
241305 []interface {}{},
242306 },
307+ {
308+ NotIn ("a" , []int32 {1 }),
309+ "a NOT IN (?)" ,
310+ []interface {}{1 },
311+ },
243312 {
244313 NotIn ("a" , []int64 {}),
245314 "0=0" ,
246315 []interface {}{},
247316 },
317+ {
318+ NotIn ("a" , []int64 {1 }),
319+ "a NOT IN (?)" ,
320+ []interface {}{1 },
321+ },
248322 {
249323 NotIn ("a" , []uint {}),
250324 "0=0" ,
251325 []interface {}{},
252326 },
327+ {
328+ NotIn ("a" , []uint {1 }),
329+ "a NOT IN (?)" ,
330+ []interface {}{1 },
331+ },
253332 {
254333 NotIn ("a" , []uint8 {}),
255334 "0=0" ,
256335 []interface {}{},
257336 },
337+ {
338+ NotIn ("a" , []uint8 {1 }),
339+ "a NOT IN (?)" ,
340+ []interface {}{1 },
341+ },
258342 {
259343 NotIn ("a" , []uint16 {}),
260344 "0=0" ,
261345 []interface {}{},
262346 },
347+ {
348+ NotIn ("a" , []uint16 {1 }),
349+ "a NOT IN (?)" ,
350+ []interface {}{1 },
351+ },
263352 {
264353 NotIn ("a" , []uint32 {}),
265354 "0=0" ,
266355 []interface {}{},
267356 },
357+ {
358+ NotIn ("a" , []uint32 {1 }),
359+ "a NOT IN (?)" ,
360+ []interface {}{1 },
361+ },
268362 {
269363 NotIn ("a" , []uint64 {}),
270364 "0=0" ,
271365 []interface {}{},
272366 },
367+ {
368+ NotIn ("a" , []uint64 {1 }),
369+ "a NOT IN (?)" ,
370+ []interface {}{1 },
371+ },
273372 {
274373 NotIn ("a" , []interface {}{1 , 2 , 3 }).And (Eq {"b" : "c" }),
275374 "a NOT IN (?,?,?) AND b=?" ,
@@ -294,99 +393,63 @@ func TestBuilderCond(t *testing.T) {
294393
295394 for _ , k := range cases {
296395 sql , args , err := ToSQL (k .cond )
297- if err != nil {
298- t .Error (err )
299- return
300- }
301- if sql != k .sql {
302- t .Error ("want" , k .sql , "get" , sql )
303- return
304- }
305- fmt .Println (sql )
396+ assert .NoError (t , err )
397+ assert .EqualValues (t , k .sql , sql )
306398
307399 for i := 0 ; i < 10 ; i ++ {
308400 sql2 , _ , err := ToSQL (k .cond )
309- if err != nil {
310- t .Error (err )
311- return
312- }
313- if sql2 != sql {
314- t .Error ("first ToSQL result" , sql , "other ToSQL result" , sql2 )
315- return
316- }
401+ assert .NoError (t , err )
402+ assert .EqualValues (t , sql , sql2 )
317403 }
318404
319- if ! (len (args ) == 0 && len (k .args ) == 0 ) {
320- if ! reflect .DeepEqual (args , k .args ) {
321- t .Error ("want" , k .args , "get" , args )
322- return
405+ assert .EqualValues (t , len (args ), len (k .args ))
406+
407+ if len (args ) > 0 {
408+ for i := 0 ; i < len (args ); i ++ {
409+ assert .EqualValues (t , k .args [i ], args [i ])
323410 }
324411 }
325- fmt .Println (args )
326412 }
327413}
328414
329415func TestBuilderSelect (t * testing.T ) {
330416 sql , args , err := Select ("c, d" ).From ("table1" ).ToSQL ()
331- if err != nil {
332- t .Fatal (err )
333- }
417+ assert .NoError (t , err )
334418 fmt .Println (sql , args )
335419
336420 sql , args , err = Select ("c, d" ).From ("table1" ).Where (Eq {"a" : 1 }).ToSQL ()
337- if err != nil {
338- t .Error (err )
339- return
340- }
421+ assert .NoError (t , err )
341422 fmt .Println (sql , args )
342423
343424 sql , args , err = Select ("c, d" ).From ("table1" ).LeftJoin ("table2" , Eq {"table1.id" : 1 }.And (Lt {"table2.id" : 3 })).
344425 RightJoin ("table3" , "table2.id = table3.tid" ).Where (Eq {"a" : 1 }).ToSQL ()
345- if err != nil {
346- t .Error (err )
347- return
348- }
426+ assert .NoError (t , err )
349427 fmt .Println (sql , args )
350428}
351429
352430func TestBuilderInsert (t * testing.T ) {
353431 sql , args , err := Insert (Eq {"c" : 1 , "d" : 2 }).Into ("table1" ).ToSQL ()
354- if err != nil {
355- t .Error (err )
356- return
357- }
432+ assert .NoError (t , err )
358433 fmt .Println (sql , args )
359434}
360435
361436func TestBuilderUpdate (t * testing.T ) {
362437 sql , args , err := Update (Eq {"a" : 2 }).From ("table1" ).Where (Eq {"a" : 1 }).ToSQL ()
363- if err != nil {
364- t .Error (err )
365- return
366- }
438+ assert .NoError (t , err )
367439 fmt .Println (sql , args )
368440
369441 sql , args , err = Update (Eq {"a" : 2 , "b" : Incr (1 )}).From ("table2" ).Where (Eq {"a" : 1 }).ToSQL ()
370- if err != nil {
371- t .Error (err )
372- return
373- }
442+ assert .NoError (t , err )
374443 fmt .Println (sql , args )
375444
376445 sql , args , err = Update (Eq {"a" : 2 , "b" : Incr (1 ), "c" : Decr (1 ), "d" : Expr ("select count(*) from table2" )}).From ("table2" ).Where (Eq {"a" : 1 }).ToSQL ()
377- if err != nil {
378- t .Error (err )
379- return
380- }
446+ assert .NoError (t , err )
381447 fmt .Println (sql , args )
382448}
383449
384450func TestBuilderDelete (t * testing.T ) {
385451 sql , args , err := Delete (Eq {"a" : 1 }).From ("table1" ).ToSQL ()
386- if err != nil {
387- t .Error (err )
388- return
389- }
452+ assert .NoError (t , err )
390453 fmt .Println (sql , args )
391454}
392455
0 commit comments