diff options
Diffstat (limited to 'optional/json_test.go')
-rw-r--r-- | optional/json_test.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/optional/json_test.go b/optional/json_test.go new file mode 100644 index 0000000..132dea2 --- /dev/null +++ b/optional/json_test.go @@ -0,0 +1,55 @@ +package optional_test + +import ( + "encoding/json" + "testing" + + "xengineering.eu/optional-go/optional" +) + +func TestUnmarshal(t *testing.T) { + text := `{"something": null}` + + var Buffer struct { + Something optional.Optional[bool] + } + + err := json.Unmarshal([]byte(text), &Buffer) + if err != nil { + t.Fatal(err) + } + + if Buffer.Something.Value != false { + t.Fatal("Value of member set to 'null' is not default value.") + } + + if Buffer.Something.Exists == true { + t.Fatal("Member set to 'null' but Optional claims that it exists.") + } +} + +func TestMarshal(t *testing.T) { + Buffer := struct { + Something optional.Optional[bool] `json:"something"` + }{ + Something: optional.Optional[bool]{ + Value: false, + Exists: false, + }, + } + + result, err := json.Marshal(Buffer) + if err != nil { + t.Fatal(err) + } + + expectation := `{"something":null}` + + if string(result) != expectation { + t.Fatalf( + "Expected '%s' but marshalled '%s'\n", + expectation, + string(result), + ) + } +} |