-
Notifications
You must be signed in to change notification settings - Fork 0
/
jsonpb_test.go
69 lines (53 loc) · 1.52 KB
/
jsonpb_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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package jsonpb
import (
"bytes"
"strings"
"testing"
"time"
jsonpbtestpb "github.com/quer3q/jsonpb/test_pb"
"github.com/gogo/protobuf/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestJsonPb_EmittedTaggedOnly(t *testing.T) {
msg := &jsonpbtestpb.Test{
StrEmitAlways: "",
StrEmitDefault: "",
TsEmitAlways: nil,
TsEmitDefault: nil,
}
marshaler := GogoMarshaler{
EmitDefaults: false,
EnumsAsInts: false,
}
buf := bytes.NewBuffer(make([]byte, 0, 1024))
err := marshaler.Marshal(buf, msg)
assert.NoError(t, err)
strJson := buf.String()
require.True(t, strings.Contains(strJson, "strEmitAlways"))
require.True(t, strings.Contains(strJson, "tsEmitAlways"))
require.False(t, strings.Contains(strJson, "strEmitDefault"))
require.False(t, strings.Contains(strJson, "tsEmitDefault"))
}
func TestJsonPb_EmittedAll(t *testing.T) {
ts, err := types.TimestampProto(time.Now())
assert.NoError(t, err)
msg := &jsonpbtestpb.Test{
StrEmitAlways: "a",
StrEmitDefault: "b",
TsEmitAlways: ts,
TsEmitDefault: ts,
}
marshaler := GogoMarshaler{
EmitDefaults: false,
EnumsAsInts: false,
}
buf := bytes.NewBuffer(make([]byte, 0, 1024))
err = marshaler.Marshal(buf, msg)
assert.NoError(t, err)
strJson := buf.String()
require.True(t, strings.Contains(strJson, "strEmitAlways"))
require.True(t, strings.Contains(strJson, "tsEmitAlways"))
require.True(t, strings.Contains(strJson, "strEmitDefault"))
require.True(t, strings.Contains(strJson, "tsEmitDefault"))
}