go-blocks/binding/binding_test.go

65 lines
2.1 KiB
Go

package binding
import (
"github.com/stretchr/testify/require"
"testing"
)
func Test_mapForm(t *testing.T) {
var someStruct struct {
StringType string `form:"stringtype"`
IntType int `form:"inttype"`
Int8Type int8 `form:"int8type"`
Int16Type int16 `form:"int16type"`
Int32Type int32 `form:"int32type"`
Int64Type int64 `form:"int64type"`
UintType uint `form:"uinttype"`
Uint8Type uint8 `form:"uint8type"`
Uint16Type uint16 `form:"uint16type"`
Uint32Type uint32 `form:"uint32type"`
Uint64Type uint64 `form:"uint64type"`
Float32Type float32 `form:"float32type"`
Float64Type float64 `form:"float64type"`
BoolType bool `form:"booltype"`
}
formData := map[string][]string{
"stringtype": {"stringType"},
"inttype": {"-2147483647"},
"int8type": {"-127"},
"int16type": {"-32767"},
"int32type": {"-2147483647"},
"int64type": {"-9223372036854775807"},
"uinttype": {"4294967295"},
"uint8type": {"255"},
"uint16type": {"65535"},
"uint32type": {"4294967295"},
"uint64type": {"18446744073709551615"},
"float32type": {
"3.1415927",
},
"float64type": {
"3.141592653589793",
},
"booltype": {"true"},
}
err := mapForm(&someStruct, formData)
require.NoError(t, err)
require.Equal(t, "stringType", someStruct.StringType)
require.Equal(t, int(-2147483647), someStruct.IntType)
require.Equal(t, int8(-127), someStruct.Int8Type)
require.Equal(t, int16(-32767), someStruct.Int16Type)
require.Equal(t, int32(-2147483647), someStruct.Int32Type)
require.Equal(t, int64(-9223372036854775807), someStruct.Int64Type)
require.Equal(t, uint(4294967295), someStruct.UintType)
require.Equal(t, uint8(255), someStruct.Uint8Type)
require.Equal(t, uint16(65535), someStruct.Uint16Type)
require.Equal(t, uint32(4294967295), someStruct.Uint32Type)
require.Equal(t, uint64(18446744073709551615), someStruct.Uint64Type)
require.Equal(t, float32(3.1415927), someStruct.Float32Type)
require.Equal(t, float64(3.141592653589793), someStruct.Float64Type)
require.Equal(t, true, someStruct.BoolType)
t.Log(someStruct)
}