work cover bool

This commit is contained in:
Masaaki Goshima 2021-11-25 20:22:04 +09:00
parent f6d91525b2
commit a5bf94c75b
No known key found for this signature in database
GPG Key ID: 6A53785055537153
18 changed files with 295 additions and 233 deletions

View File

@ -369,7 +369,12 @@ func (c *StructCode) ToOpcode(ctx *compileContext) Opcodes {
} else if field.isAnonymous { } else if field.isAnonymous {
fieldCodes.First().End = fieldCodes.Last() fieldCodes.First().End = fieldCodes.Last()
//fieldCodes.First().Next.End = fieldCodes.Last() //fieldCodes.First().Next.End = fieldCodes.Last()
fieldCodes.First().Next.NextField = fieldCodes.Last() fieldCode := fieldCodes.First().Next
for fieldCode.NextField != nil {
fieldCode = fieldCode.NextField
}
// link curLastField => endField
fieldCode.NextField = fieldCodes.Last()
} else { } else {
fieldCodes.First().End = fieldCodes.Last() fieldCodes.First().End = fieldCodes.Last()
} }
@ -377,9 +382,17 @@ func (c *StructCode) ToOpcode(ctx *compileContext) Opcodes {
if field.isAnonymous { if field.isAnonymous {
// fieldCodes.First() is StructHead operation. // fieldCodes.First() is StructHead operation.
// StructHead's next operation is truely head operation. // StructHead's next operation is truely head operation.
prevField = fieldCodes.First().Next fieldCode := fieldCodes.First().Next
for fieldCode.NextField != nil {
fieldCode = fieldCode.NextField
}
prevField = fieldCode
} else { } else {
prevField = fieldCodes.First() fieldCode := fieldCodes.First()
for fieldCode.NextField != nil {
fieldCode = fieldCode.NextField
}
prevField = fieldCode
} }
codes = append(codes, fieldCodes...) codes = append(codes, fieldCodes...)
} }
@ -1002,6 +1015,14 @@ func compileFloat642(ctx *compileContext, isPtr bool) (*FloatCode, error) {
return &FloatCode{typ: ctx.typ, bitSize: 64, isPtr: isPtr}, nil return &FloatCode{typ: ctx.typ, bitSize: 64, isPtr: isPtr}, nil
} }
func compileString2(ctx *compileContext, isPtr bool) (*StringCode, error) {
return &StringCode{typ: ctx.typ, isPtr: isPtr}, nil
}
func compileBool2(ctx *compileContext, isPtr bool) (*BoolCode, error) {
return &BoolCode{typ: ctx.typ, isPtr: isPtr}, nil
}
func compileIntString2(ctx *compileContext) (*IntCode, error) { func compileIntString2(ctx *compileContext) (*IntCode, error) {
return &IntCode{typ: ctx.typ, bitSize: intSize, isString: true}, nil return &IntCode{typ: ctx.typ, bitSize: intSize, isString: true}, nil
} }
@ -1042,14 +1063,6 @@ func compileUint64String2(ctx *compileContext) (*UintCode, error) {
return &UintCode{typ: ctx.typ, bitSize: 64, isString: true}, nil return &UintCode{typ: ctx.typ, bitSize: 64, isString: true}, nil
} }
func compileString2(ctx *compileContext, isString bool) (*StringCode, error) {
return &StringCode{typ: ctx.typ, isString: isString}, nil
}
func compileBool2(ctx *compileContext, isString bool) (*BoolCode, error) {
return &BoolCode{typ: ctx.typ, isString: isString}, nil
}
func compileSlice2(ctx *compileContext) (*SliceCode, error) { func compileSlice2(ctx *compileContext) (*SliceCode, error) {
elem := ctx.typ.Elem() elem := ctx.typ.Elem()
code, err := compileListElem2(ctx.withType(elem)) code, err := compileListElem2(ctx.withType(elem))
@ -1423,7 +1436,6 @@ func (c *StructCode) compileStructField(ctx *compileContext, tag *runtime.Struct
fieldCode.isNextOpPtrType = true fieldCode.isNextOpPtrType = true
} }
fieldCode.value = code fieldCode.value = code
fieldCode.isNilCheck = false
} }
return fieldCode, nil return fieldCode, nil
} }

View File

@ -3,6 +3,7 @@ package json_test
import ( import (
"bytes" "bytes"
stdjson "encoding/json" stdjson "encoding/json"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -2653,19 +2654,21 @@ func TestCoverBool(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1807,19 +1808,21 @@ func TestCoverBytes(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%v,indent:%v): %v: %s", test.name, htmlEscape, indent, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%v,indent:%v): %v: %s", test.name, htmlEscape, indent, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -2334,19 +2335,21 @@ func TestCoverFloat32(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -2334,19 +2335,21 @@ func TestCoverFloat64(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1811,19 +1812,21 @@ func TestCoverInt16(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1788,19 +1789,21 @@ func TestCoverInt32(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1788,19 +1789,21 @@ func TestCoverInt64(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1788,19 +1789,21 @@ func TestCoverInt8(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -3690,19 +3690,21 @@ func TestCoverMarshalJSON(t *testing.T) {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
}
})
} }
} }
}) })

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -3527,19 +3528,21 @@ func TestCoverMarshalText(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -2334,19 +2335,21 @@ func TestCoverNumber(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -2370,19 +2371,21 @@ func TestCoverString(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%v,indent:%v): %v: %s", test.name, htmlEscape, indent, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%v,indent:%v): %v: %s", test.name, htmlEscape, indent, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1788,19 +1789,21 @@ func TestCoverUint16(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1788,19 +1789,21 @@ func TestCoverUint32(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1788,19 +1789,21 @@ func TestCoverUint64(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -1788,19 +1789,21 @@ func TestCoverUint8(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }

View File

@ -2,6 +2,7 @@ package json_test
import ( import (
"bytes" "bytes"
"fmt"
"testing" "testing"
"github.com/goccy/go-json" "github.com/goccy/go-json"
@ -2334,19 +2335,21 @@ func TestCoverUint(t *testing.T) {
for _, test := range tests { for _, test := range tests {
for _, indent := range []bool{true, false} { for _, indent := range []bool{true, false} {
for _, htmlEscape := range []bool{true, false} { for _, htmlEscape := range []bool{true, false} {
var buf bytes.Buffer t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
enc := json.NewEncoder(&buf) var buf bytes.Buffer
enc.SetEscapeHTML(htmlEscape) enc := json.NewEncoder(&buf)
if indent { enc.SetEscapeHTML(htmlEscape)
enc.SetIndent("", " ") if indent {
} enc.SetIndent("", " ")
if err := enc.Encode(test.data); err != nil { }
t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err) if err := enc.Encode(test.data); err != nil {
} t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) }
if buf.String() != stdresult { stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String()) if buf.String() != stdresult {
} t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
}
})
} }
} }
} }