Skip to content

Commit d2bacfe

Browse files
committed
NULL values tests
Test for Issues #20 and #26
1 parent d43e080 commit d2bacfe

File tree

1 file changed

+84
-3
lines changed

1 file changed

+84
-3
lines changed

driver_test.go

Lines changed: 84 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,20 +314,101 @@ func TestNULL(t *testing.T) {
314314

315315
defer db.Close()
316316

317-
stmt, err := db.Prepare("SELECT NULL")
317+
nullStmt, err := db.Prepare("SELECT NULL")
318318
if err != nil {
319319
t.Fatal(err)
320320
}
321-
defer stmt.Close()
321+
defer nullStmt.Close()
322322

323+
nonNullStmt, err := db.Prepare("SELECT 1")
324+
if err != nil {
325+
t.Fatal(err)
326+
}
327+
defer nonNullStmt.Close()
328+
329+
// NullBool
330+
var nb sql.NullBool
331+
// Invalid
332+
err = nullStmt.QueryRow().Scan(&nb)
333+
if err != nil {
334+
t.Fatal(err)
335+
}
336+
if nb.Valid {
337+
t.Error("Valid NullBool which should be invalid")
338+
}
339+
// Valid
340+
err = nonNullStmt.QueryRow().Scan(&nb)
341+
if err != nil {
342+
t.Fatal(err)
343+
}
344+
if !nb.Valid {
345+
t.Error("Invalid NullBool which should be valid")
346+
} else if nb.Bool != true {
347+
t.Errorf("Unexpected NullBool value: %t (should be true)", nb.Bool)
348+
}
349+
350+
// NullFloat64
351+
var nf sql.NullFloat64
352+
// Invalid
353+
err = nullStmt.QueryRow().Scan(&nf)
354+
if err != nil {
355+
t.Fatal(err)
356+
}
357+
if nf.Valid {
358+
t.Error("Valid NullFloat64 which should be invalid")
359+
}
360+
// Valid
361+
err = nonNullStmt.QueryRow().Scan(&nf)
362+
if err != nil {
363+
t.Fatal(err)
364+
}
365+
if !nf.Valid {
366+
t.Error("Invalid NullFloat64 which should be valid")
367+
} else if nf.Float64 != float64(1) {
368+
t.Errorf("Unexpected NullFloat64 value: %f (should be 1.0)", nf.Float64)
369+
}
370+
371+
// NullInt64
372+
var ni sql.NullInt64
373+
// Invalid
374+
err = nullStmt.QueryRow().Scan(&ni)
375+
if err != nil {
376+
t.Fatal(err)
377+
}
378+
if ni.Valid {
379+
t.Error("Valid NullInt64 which should be invalid")
380+
}
381+
// Valid
382+
err = nonNullStmt.QueryRow().Scan(&ni)
383+
if err != nil {
384+
t.Fatal(err)
385+
}
386+
if !ni.Valid {
387+
t.Error("Invalid NullInt64 which should be valid")
388+
} else if ni.Int64 != int64(1) {
389+
t.Errorf("Unexpected NullInt64 value: %d (should be 1)", ni.Int64)
390+
}
391+
392+
// NullString
323393
var ns sql.NullString
324-
err = stmt.QueryRow().Scan(&ns)
394+
// Invalid
395+
err = nullStmt.QueryRow().Scan(&ns)
325396
if err != nil {
326397
t.Fatal(err)
327398
}
328399
if ns.Valid {
329400
t.Error("Valid NullString which should be invalid")
330401
}
402+
// Valid
403+
err = nonNullStmt.QueryRow().Scan(&ns)
404+
if err != nil {
405+
t.Fatal(err)
406+
}
407+
if !ns.Valid {
408+
t.Error("Invalid NullString which should be valid")
409+
} else if ns.String != `1` {
410+
t.Error("Unexpected NullString value:" + ns.String + " (should be `1`)")
411+
}
331412
}
332413

333414
// Special cases

0 commit comments

Comments
 (0)