diff options
Diffstat (limited to 'src/pkg/json/encode_test.go')
| -rw-r--r-- | src/pkg/json/encode_test.go | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/src/pkg/json/encode_test.go b/src/pkg/json/encode_test.go index 0e4b63770..012e9f143 100644 --- a/src/pkg/json/encode_test.go +++ b/src/pkg/json/encode_test.go @@ -5,6 +5,8 @@  package json  import ( +	"bytes" +	"reflect"  	"testing"  ) @@ -42,3 +44,39 @@ func TestOmitEmpty(t *testing.T) {  		t.Errorf(" got: %s\nwant: %s\n", got, optionalsExpected)  	}  } + +type StringTag struct { +	BoolStr bool   `json:",string"` +	IntStr  int64  `json:",string"` +	StrStr  string `json:",string"` +} + +var stringTagExpected = `{ + "BoolStr": "true", + "IntStr": "42", + "StrStr": "\"xzbit\"" +}` + +func TestStringTag(t *testing.T) { +	var s StringTag +	s.BoolStr = true +	s.IntStr = 42 +	s.StrStr = "xzbit" +	got, err := MarshalIndent(&s, "", " ") +	if err != nil { +		t.Fatal(err) +	} +	if got := string(got); got != stringTagExpected { +		t.Fatalf(" got: %s\nwant: %s\n", got, stringTagExpected) +	} + +	// Verify that it round-trips. +	var s2 StringTag +	err = NewDecoder(bytes.NewBuffer(got)).Decode(&s2) +	if err != nil { +		t.Fatalf("Decode: %v", err) +	} +	if !reflect.DeepEqual(s, s2) { +		t.Fatalf("decode didn't match.\nsource: %#v\nEncoded as:\n%s\ndecode: %#v", s, string(got), s2) +	} +} | 
