mirror of
https://github.com/gin-gonic/gin.git
synced 2026-06-04 09:48:17 +08:00
32 lines
1.2 KiB
Go
32 lines
1.2 KiB
Go
//go:build !gin_bind_encoding
|
|
|
|
package binding
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// If someone does not specify parser=TextUnmarshaler even when it's defined for the type, gin should ignore the
|
|
// UnmarshalText logic and continue using its default binding logic. (This ensures gin does not break backwards
|
|
// compatibility)
|
|
//
|
|
// Note: TestMappingUsingBindUnmarshalerAndTextUnmarshalerWhenOnlyTextUnmarshalerDefined works differently when:
|
|
// - form_mapping_encoding_test.go (with gin_bind_encoding build tag enabled)
|
|
func TestMappingUsingBindUnmarshalerAndTextUnmarshalerWhenOnlyTextUnmarshalerDefined(t *testing.T) {
|
|
var s struct {
|
|
Hex customUnmarshalTextHex `form:"hex"`
|
|
HexByUnmarshalText customUnmarshalTextHex `form:"hex2,parser=encoding.TextUnmarshaler"`
|
|
}
|
|
err := mappingByPtr(&s, formSource{
|
|
"hex": {`11`},
|
|
"hex2": {`11`},
|
|
}, "form")
|
|
require.NoError(t, err)
|
|
|
|
assert.EqualValues(t, 11, s.Hex) // this is using default int binding, not our custom hex binding. 0x11 should be 17 in decimal
|
|
assert.EqualValues(t, 0x11, s.HexByUnmarshalText) // correct expected value for normal hex binding
|
|
}
|