forked from whentp/go-rest
/
mime_json_test.go
37 lines (34 loc) · 991 Bytes
/
mime_json_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package rest
import (
"bytes"
"encoding/json"
"github.com/googollee/go-assert"
"testing"
)
func TestJSONMarshaller(t *testing.T) {
var m Marshaller = NewJSON()
assert.Equal(t, m.Mime(), "application/json")
data := map[string]interface{}{
"key1": 1,
"key2": "str",
}
buf := bytes.NewBuffer(nil)
err := m.Marshal(buf)
assert.Equal(t, err, nil, "error: %s", err)
assert.Equal(t, buf.String(), "")
err = m.Marshal(buf, data, nil)
assert.Equal(t, err, nil, "error: %s", err)
assert.Equal(t, buf.String(), "{\"key1\":1,\"key2\":\"str\"}\n")
data = nil
err = m.Unmarshal(buf)
assert.Equal(t, err, nil, "error: %s", err)
err = m.Unmarshal(buf, &data)
assert.Equal(t, err, nil, "error: %s", err)
assert.Equal(t, data, map[string]interface{}{"key1": json.Number("1"), "key2": "str"})
data["f"] = TestJSONMarshaller
err = m.Marshal(buf, data)
assert.NotEqual(t, err, nil)
buf = bytes.NewBufferString("abc")
err = m.Unmarshal(buf, &data)
assert.NotEqual(t, err, nil)
}