Ai
3 Star 9 Fork 3

Gitee 极速下载/grpc-gateway

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/grpc-ecosystem/grpc-gateway
克隆/下载
fieldmask_test.go 2.29 KB
一键复制 编辑 原始数据 按行查看 历史
Roman Azami 提交于 2018-11-20 02:46 +08:00 . Feature/patch2 rebased (#812)
package runtime
import (
"bytes"
"fmt"
"testing"
"google.golang.org/genproto/protobuf/field_mask"
)
func fieldMasksEqual(fm1, fm2 *field_mask.FieldMask) bool {
if fm1 == nil && fm2 == nil {
return true
}
if fm1 == nil || fm2 == nil {
return false
}
if len(fm1.GetPaths()) != len(fm2.GetPaths()) {
return false
}
paths := make(map[string]bool)
for _, path := range fm1.GetPaths() {
paths[path] = true
}
for _, path := range fm2.GetPaths() {
if _, ok := paths[path]; !ok {
return false
}
}
return true
}
func newFieldMask(paths ...string) *field_mask.FieldMask {
return &field_mask.FieldMask{Paths: paths}
}
func fieldMaskString(fm *field_mask.FieldMask) string {
if fm == nil {
return ""
}
return fmt.Sprintf("%v", fm.GetPaths())
}
func TestFieldMaskFromRequestBody(t *testing.T) {
for _, tc := range []struct {
name string
input string
expected *field_mask.FieldMask
expectedErr error
}{
{name: "empty", expected: newFieldMask()},
{name: "simple", input: `{"foo":1, "bar":"baz"}`, expected: newFieldMask("Foo", "Bar")},
{name: "nested", input: `{"foo": {"bar":1, "baz": 2}, "qux": 3}`, expected: newFieldMask("Foo.Bar", "Foo.Baz", "Qux")},
{name: "canonical", input: `{"f": {"b": {"d": 1, "x": 2}, "c": 1}}`, expected: newFieldMask("F.B.D", "F.B.X", "F.C")},
} {
t.Run(tc.name, func(t *testing.T) {
actual, err := FieldMaskFromRequestBody(bytes.NewReader([]byte(tc.input)))
if !fieldMasksEqual(actual, tc.expected) {
t.Errorf("want %v; got %v", fieldMaskString(tc.expected), fieldMaskString(actual))
}
if err != tc.expectedErr {
t.Errorf("want %v; got %v", tc.expectedErr, err)
}
})
}
}
func TestCamelCaseFieldMask(t *testing.T) {
for _, tc := range []struct {
name string
input *field_mask.FieldMask
expected *field_mask.FieldMask
}{
{"nil", nil, nil},
{"empty", &field_mask.FieldMask{Paths: nil}, &field_mask.FieldMask{Paths: nil}},
{"main usage", newFieldMask("a", "a.b", "some_field.some_sub_field"), newFieldMask("A", "A.B", "SomeField.SomeSubField")},
} {
t.Run(tc.name, func(t *testing.T) {
CamelCaseFieldMask(tc.input)
if expected, actual := tc.expected, tc.input; !fieldMasksEqual(expected, actual) {
t.Errorf("want %v; got %v", fieldMaskString(expected), fieldMaskString(actual))
}
})
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors/grpc-gateway.git
git@gitee.com:mirrors/grpc-gateway.git
mirrors
grpc-gateway
grpc-gateway
v1.7.0

搜索帮助