瀏覽代碼

add failing tests for nil non-empty interfaces

Jason Toffaletti 8 年之前
父節點
當前提交
2f7e5c8dd7
共有 1 個文件被更改,包括 38 次插入0 次删除
  1. 38 0
      jsoniter_interface_test.go

+ 38 - 0
jsoniter_interface_test.go

@@ -370,3 +370,41 @@ func Test_omitempty_nil_interface(t *testing.T) {
 	should.Equal(nil, err)
 	should.Equal(string(js), str)
 }
+
+func Test_marshal_nil_marshaler_interface(t *testing.T) {
+	type TestData struct {
+		Field json.Marshaler `json:"field"`
+	}
+	should := require.New(t)
+
+	obj := TestData{
+		Field: nil,
+	}
+
+	js, err := json.Marshal(obj)
+	should.Equal(nil, err)
+	should.Equal(`{"field":null}`, string(js))
+
+	str, err := MarshalToString(obj)
+	should.Equal(nil, err)
+	should.Equal(string(js), str)
+}
+
+func Test_marshal_nil_nonempty_interface(t *testing.T) {
+	type TestData struct {
+		Field MyInterface `json:"field"`
+	}
+	should := require.New(t)
+
+	obj := TestData{
+		Field: nil,
+	}
+
+	js, err := json.Marshal(obj)
+	should.Equal(nil, err)
+	should.Equal(`{"field":null}`, string(js))
+
+	str, err := MarshalToString(obj)
+	should.Equal(nil, err)
+	should.Equal(string(js), str)
+}