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), ) } }