Skip to content
This repository was archived by the owner on Jun 14, 2019. It is now read-only.

Commit bad0a61

Browse files
authored
Merge pull request #15 from go-xorm/lunny/add_test_in
add some tests for in and notin
2 parents 30f3c81 + e5f8736 commit bad0a61

File tree

1 file changed

+117
-54
lines changed

1 file changed

+117
-54
lines changed

builder_test.go

Lines changed: 117 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package builder
66

77
import (
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

329415
func 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

352430
func 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

361436
func 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

384450
func 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

Comments
 (0)