mirror of
https://github.com/gin-gonic/gin.git
synced 2025-12-11 19:47:00 +08:00
modify code
This commit is contained in:
parent
84566648cc
commit
6341a255c1
@ -1416,30 +1416,3 @@ func requestWithBody(method, path, body string) (req *http.Request) {
|
|||||||
req, _ = http.NewRequest(method, path, bytes.NewBufferString(body))
|
req, _ = http.NewRequest(method, path, bytes.NewBufferString(body))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
type bindTestData struct {
|
|
||||||
need interface{}
|
|
||||||
got interface{}
|
|
||||||
in map[string][]string
|
|
||||||
}
|
|
||||||
|
|
||||||
func Test_Binding_BaseType(t *testing.T) {
|
|
||||||
type needFixDurationEmpty struct {
|
|
||||||
Duration time.Duration `form:"duration"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type needFixUnixNanoEmpty struct {
|
|
||||||
CreateTime time.Time `form:"createTime" time_format:"unixNano"`
|
|
||||||
}
|
|
||||||
|
|
||||||
tests := []bindTestData{
|
|
||||||
{need: &needFixDurationEmpty{}, got: &needFixDurationEmpty{}, in: http.Header{"duration": []string{}}},
|
|
||||||
{need: &needFixUnixNanoEmpty{}, got: &needFixUnixNanoEmpty{}, in: http.Header{"createTime": []string{}}},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, v := range tests {
|
|
||||||
err := mapForm(v.got, v.in)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, v.need, v.got)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@ -300,6 +300,10 @@ func setByForm(value reflect.Value, field reflect.StructField, form map[string][
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setWithProperType(val string, value reflect.Value, field reflect.StructField) error {
|
func setWithProperType(val string, value reflect.Value, field reflect.StructField) error {
|
||||||
|
if value.Kind() != reflect.String {
|
||||||
|
val = strings.TrimSpace(val)
|
||||||
|
}
|
||||||
|
|
||||||
switch value.Kind() {
|
switch value.Kind() {
|
||||||
case reflect.Int:
|
case reflect.Int:
|
||||||
return setIntField(val, 0, value)
|
return setIntField(val, 0, value)
|
||||||
|
|||||||
@ -226,7 +226,35 @@ func TestMappingTime(t *testing.T) {
|
|||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type bindTestData struct {
|
||||||
|
need interface{}
|
||||||
|
got interface{}
|
||||||
|
in map[string][]string
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMappingTimeUnixNano(t *testing.T) {
|
||||||
|
type needFixUnixNanoEmpty struct {
|
||||||
|
CreateTime time.Time `form:"createTime" time_format:"unixNano"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ok
|
||||||
|
tests := []bindTestData{
|
||||||
|
{need: &needFixUnixNanoEmpty{}, got: &needFixUnixNanoEmpty{}, in: formSource{"createTime": []string{" "}}},
|
||||||
|
{need: &needFixUnixNanoEmpty{}, got: &needFixUnixNanoEmpty{}, in: formSource{"createTime": []string{}}},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range tests {
|
||||||
|
err := mapForm(v.got, v.in)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, v.need, v.got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestMappingTimeDuration(t *testing.T) {
|
func TestMappingTimeDuration(t *testing.T) {
|
||||||
|
type needFixDurationEmpty struct {
|
||||||
|
Duration time.Duration `form:"duration"`
|
||||||
|
}
|
||||||
|
|
||||||
var s struct {
|
var s struct {
|
||||||
D time.Duration
|
D time.Duration
|
||||||
}
|
}
|
||||||
@ -236,6 +264,17 @@ func TestMappingTimeDuration(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, 5*time.Second, s.D)
|
assert.Equal(t, 5*time.Second, s.D)
|
||||||
|
|
||||||
|
// ok
|
||||||
|
tests := []bindTestData{
|
||||||
|
{need: &needFixDurationEmpty{}, got: &needFixDurationEmpty{}, in: formSource{"duration": []string{" "}}},
|
||||||
|
{need: &needFixDurationEmpty{}, got: &needFixDurationEmpty{}, in: formSource{"duration": []string{}}},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range tests {
|
||||||
|
err := mapForm(v.got, v.in)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, v.need, v.got)
|
||||||
|
}
|
||||||
// error
|
// error
|
||||||
err = mappingByPtr(&s, formSource{"D": {"wrong"}}, "form")
|
err = mappingByPtr(&s, formSource{"D": {"wrong"}}, "form")
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user