From 0873c59cdb550b85409138bb08ede0fc1f5f52a4 Mon Sep 17 00:00:00 2001 From: GeorgeErickson Date: Mon, 22 Jun 2015 13:23:19 -0400 Subject: [PATCH] dat.Null* helpers. Fixes #12 --- types.go | 25 +++++++++++++++++++++++++ types_test.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 types_test.go diff --git a/types.go b/types.go index 2d7a391..367f2d5 100644 --- a/types.go +++ b/types.go @@ -58,6 +58,31 @@ type NullBool struct { sql.NullBool } +// NullStringFrom creates a valid NullString +func NullStringFrom(v string) NullString { + return NullString{sql.NullString{v, true}} +} + +// NullFloat64From creates a valid NullFloat64 +func NullFloat64From(v float64) NullFloat64 { + return NullFloat64{sql.NullFloat64{v, true}} +} + +// NullInt64From creates a valid NullInt64 +func NullInt64From(v int64) NullInt64 { + return NullInt64{sql.NullInt64{v, true}} +} + +// NullTimeFrom creates a valid NullTime +func NullTimeFrom(v time.Time) NullTime { + return NullTime{pq.NullTime{v, true}} +} + +// NullBoolFrom creates a valid NullBool +func NullBoolFrom(v bool) NullBool { + return NullBool{sql.NullBool{v, true}} +} + var nullString = []byte("null") // MarshalJSON correctly serializes a NullString to JSON diff --git a/types_test.go b/types_test.go new file mode 100644 index 0000000..0ba9b91 --- /dev/null +++ b/types_test.go @@ -0,0 +1,48 @@ +package dat + +import ( + "testing" + "time" + + "gopkg.in/stretchr/testify.v1/assert" +) + +func TestNullStringFrom(t *testing.T) { + v := "foo" + n := NullStringFrom(v) + + assert.True(t, n.Valid) + assert.Equal(t, n.String, v) +} + +func TestNullFloat64From(t *testing.T) { + v := 42.2 + n := NullFloat64From(v) + + assert.True(t, n.Valid) + assert.Equal(t, n.Float64, v) +} + +func TestNullInt64From(t *testing.T) { + v := int64(400) + n := NullInt64From(v) + + assert.True(t, n.Valid) + assert.Equal(t, n.Int64, v) +} + +func TestNullTimeFrom(t *testing.T) { + v := time.Now() + n := NullTimeFrom(v) + + assert.True(t, n.Valid) + assert.Equal(t, n.Time, v) +} + +func TestNullBoolFrom(t *testing.T) { + v := false + n := NullBoolFrom(v) + + assert.True(t, n.Valid) + assert.Equal(t, n.Bool, v) +}