mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-04 12:52:28 +08:00
112 lines
2.3 KiB
Go
112 lines
2.3 KiB
Go
package maputil
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/duke-git/lancet/v2/internal"
|
|
)
|
|
|
|
type (
|
|
Person struct {
|
|
Name string `json:"name"`
|
|
Age int `json:"age"`
|
|
Phone string `json:"phone"`
|
|
Addr Address `json:"address"`
|
|
}
|
|
|
|
Address struct {
|
|
Street string `json:"street"`
|
|
Number int `json:"number"`
|
|
}
|
|
)
|
|
|
|
func TestStructType(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestStructType")
|
|
|
|
src := map[string]interface{}{
|
|
"name": "Nothin",
|
|
"age": 28,
|
|
"phone": "123456789",
|
|
"address": map[string]interface{}{
|
|
"street": "test",
|
|
"number": 1,
|
|
},
|
|
}
|
|
|
|
var p Person
|
|
err := MapTo(src, &p)
|
|
assert.IsNil(err)
|
|
assert.Equal(src["name"], p.Name)
|
|
assert.Equal(src["age"], p.Age)
|
|
assert.Equal(src["phone"], p.Phone)
|
|
assert.Equal("test", p.Addr.Street)
|
|
assert.Equal(1, p.Addr.Number)
|
|
}
|
|
|
|
func TestBaseType(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestBaseType")
|
|
|
|
tc := map[string]interface{}{
|
|
"i32": -32,
|
|
"i8": -8,
|
|
"i16": -16,
|
|
"i64": -64,
|
|
"i": -1,
|
|
"u32": 32,
|
|
"u8": 8,
|
|
"u16": 16,
|
|
"u64": 64,
|
|
"u": 1,
|
|
"tf": true,
|
|
"f32": 1.32,
|
|
"f64": 1.64,
|
|
"str": "hello mapto",
|
|
"complex": 1 + 3i,
|
|
}
|
|
|
|
type BaseType struct {
|
|
I int `json:"i"`
|
|
I8 int8 `json:"i8"`
|
|
I16 int16 `json:"i16"`
|
|
I32 int32 `json:"i32"`
|
|
I64 int64 `json:"i64"`
|
|
U uint `json:"u"`
|
|
U8 uint8 `json:"u8"`
|
|
U16 uint16 `json:"u16"`
|
|
U32 uint32 `json:"u32"`
|
|
U64 uint64 `json:"u64"`
|
|
F32 float32 `json:"f32"`
|
|
F64 float64 `json:"f64"`
|
|
Tf bool `json:"tf"`
|
|
Str string `json:"str"`
|
|
Comp complex128 `json:"complex"`
|
|
}
|
|
|
|
var dist BaseType
|
|
err := MapTo(tc, &dist)
|
|
assert.IsNil(err)
|
|
|
|
var number float64
|
|
|
|
MapTo(tc["i"], &number)
|
|
assert.EqualValues(-1, number)
|
|
MapTo(tc["i8"], &number)
|
|
assert.EqualValues(-8, number)
|
|
MapTo(tc["i16"], &number)
|
|
assert.EqualValues(-16, number)
|
|
MapTo(tc["i32"], &number)
|
|
assert.EqualValues(-32, number)
|
|
MapTo(tc["i64"], &number)
|
|
assert.EqualValues(-64, number)
|
|
MapTo(tc["u"], &number)
|
|
assert.EqualValues(1, number)
|
|
MapTo(tc["u8"], &number)
|
|
assert.EqualValues(8, number)
|
|
MapTo(tc["u16"], &number)
|
|
assert.EqualValues(16, number)
|
|
MapTo(tc["u32"], &number)
|
|
assert.EqualValues(32, number)
|
|
MapTo(tc["u64"], &number)
|
|
assert.EqualValues(64, number)
|
|
}
|