From 98acb016cf17ad210f8f2798991d033c6c65a0c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rex=20Lee=28=E6=9D=8E=E4=BF=8A=29?= Date: Wed, 16 May 2018 16:57:59 +0800 Subject: [PATCH] tests --- render/json.go | 8 ++++---- render/render_test.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/render/json.go b/render/json.go index 772adc50..ceb0894f 100755 --- a/render/json.go +++ b/render/json.go @@ -6,9 +6,9 @@ package render import ( "bytes" + "fmt" "html/template" "net/http" - "strconv" "github.com/gin-gonic/gin/json" ) @@ -127,12 +127,12 @@ func (r AsciiJSON) Render(w http.ResponseWriter) (err error) { } result := "" - for _, r := range ret { + for _, r := range string(ret) { cvt := "" if r < 128 { cvt = string(r) } else { - cvt = `\u` + strconv.FormatInt(int64(r), 16) + cvt = fmt.Sprintf("\\u%04x", int64(r)) } result = result + cvt } @@ -142,5 +142,5 @@ func (r AsciiJSON) Render(w http.ResponseWriter) (err error) { } func (r AsciiJSON) WriteContentType(w http.ResponseWriter) { - writeContentType(w, jsonContentType) + writeContentType(w, jsonAsciiContentType) } diff --git a/render/render_test.go b/render/render_test.go index 40ec806e..2f728441 100755 --- a/render/render_test.go +++ b/render/render_test.go @@ -167,6 +167,35 @@ func TestRenderJsonpJSONFail(t *testing.T) { assert.Error(t, err) } +func TestRenderAsciiJSON(t *testing.T) { + w1 := httptest.NewRecorder() + data1 := map[string]interface{}{ + "lang": "GO语言", + "tag": "
", + } + + err := (AsciiJSON{data1}).Render(w1) + + assert.NoError(t, err) + assert.Equal(t, "{\"lang\":\"GO\\u8bed\\u8a00\",\"tag\":\"\\u003cbr\\u003e\"}", w1.Body.String()) + assert.Equal(t, "application/json", w1.Header().Get("Content-Type")) + + w2 := httptest.NewRecorder() + data2 := float64(3.1415926) + + err = (AsciiJSON{data2}).Render(w2) + assert.NoError(t, err) + assert.Equal(t, "3.1415926", w2.Body.String()) +} + +func TestRenderAsciiJSONFail(t *testing.T) { + w := httptest.NewRecorder() + data := make(chan int) + + // json: unsupported type: chan int + assert.Error(t, (AsciiJSON{data}).Render(w)) +} + type xmlmap map[string]interface{} // Allows type H to be used with xml.Marshal