From: Brad Fitzpatrick Date: Thu, 9 Feb 2012 04:01:29 +0000 (+1100) Subject: database/sql: more tests X-Git-Tag: weekly.2012-02-14~189 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=29df93735c85a5eaf1388df7ffa7f8c410dfce0b;p=gostls13.git database/sql: more tests Higher level tests for the pointer parameters and scanning, complementing the existing ones included in the previous CL. R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/5646050 --- diff --git a/src/pkg/database/sql/sql_test.go b/src/pkg/database/sql/sql_test.go index c5cadad849..c985a10bee 100644 --- a/src/pkg/database/sql/sql_test.go +++ b/src/pkg/database/sql/sql_test.go @@ -386,6 +386,38 @@ func TestNullByteSlice(t *testing.T) { } } +func TestPointerParamsAndScans(t *testing.T) { + db := newTestDB(t, "") + defer closeDB(t, db) + exec(t, db, "CREATE|t|id=int32,name=nullstring") + + bob := "bob" + var name *string + + name = &bob + exec(t, db, "INSERT|t|id=10,name=?", name) + name = nil + exec(t, db, "INSERT|t|id=20,name=?", name) + + err := db.QueryRow("SELECT|t|name|id=?", 10).Scan(&name) + if err != nil { + t.Fatalf("querying id 10: %v", err) + } + if name == nil { + t.Errorf("id 10's name = nil; want bob") + } else if *name != "bob" { + t.Errorf("id 10's name = %q; want bob", *name) + } + + err = db.QueryRow("SELECT|t|name|id=?", 20).Scan(&name) + if err != nil { + t.Fatalf("querying id 20: %v", err) + } + if name != nil { + t.Errorf("id 20 = %q; want nil", *name) + } +} + func TestQueryRowClosingStmt(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db)