aboutsummaryrefslogtreecommitdiff
path: root/option/option_test.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2025-01-04 16:13:45 +0100
committerStefan Majewsky <majewsky@gmx.net>2025-01-04 16:13:45 +0100
commit43b1e0c39171e207ff37a1e0d4844483bd6f3775 (patch)
tree074ea03478ac120b1bf64db7f23a4827dad6532a /option/option_test.go
parent807a25b638e38d7c0446bb728412fb16fd035035 (diff)
downloadgo-gg-43b1e0c39171e207ff37a1e0d4844483bd6f3775.tar.gz
add SQL support
Diffstat (limited to 'option/option_test.go')
-rw-r--r--option/option_test.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/option/option_test.go b/option/option_test.go
index 2bac4f5..80e8e84 100644
--- a/option/option_test.go
+++ b/option/option_test.go
@@ -146,6 +146,35 @@ func TestFormat(t *testing.T) {
AssertEqual(t, fmt.Sprintf("value is %#v", listOfOptions), "value is []option.Option[int]{<none>, 42}")
}
+func TestMarshalSQL(t *testing.T) {
+ value, err := None[string]().Value()
+ AssertEqual(t, err, nil)
+ AssertEqual(t, value, nil)
+
+ value, err = Some("hello").Value()
+ AssertEqual(t, err, nil)
+ AssertEqual(t, value, "hello")
+
+ _, err = Some(struct{}{}).Value()
+ AssertEqual(t, err.Error(), "unsupported type struct {}, a struct")
+}
+
+func TestUnmarshalSQL(t *testing.T) {
+ var o1 Option[string]
+ err := o1.Scan(nil)
+ AssertEqual(t, err, nil)
+ AssertEqual(t, o1, None[string]())
+
+ var o2 Option[string]
+ err = o2.Scan("hello")
+ AssertEqual(t, err, nil)
+ AssertEqual(t, o2, Some("hello"))
+
+ var o3 Option[struct{}]
+ err = o3.Scan("hello")
+ AssertEqual(t, err.Error(), "unsupported Scan, storing driver.Value type string into type *struct {}")
+}
+
func TestMarshalAndUnmarshalJSON(t *testing.T) {
type payload struct {
N1 Option[int] `json:"n1"`