Files
gf/container/gvar/gvar_z_unit_basic_test.go

306 lines
5.9 KiB
Go
Raw Normal View History

2021-01-17 21:46:25 +08:00
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
2019-05-10 13:38:06 +08:00
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
2019-04-26 10:38:27 +08:00
package gvar_test
import (
"bytes"
"encoding/binary"
"testing"
"time"
2021-10-11 21:41:56 +08:00
"github.com/gogf/gf/v2/container/gvar"
"github.com/gogf/gf/v2/test/gtest"
2021-11-13 23:23:55 +08:00
"github.com/gogf/gf/v2/util/gconv"
2019-04-26 10:38:27 +08:00
)
func Test_Set(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
var v gvar.Var
v.Set(123.456)
2020-03-19 22:56:12 +08:00
t.Assert(v.Val(), 123.456)
})
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
var v gvar.Var
v.Set(123.456)
2020-03-19 22:56:12 +08:00
t.Assert(v.Val(), 123.456)
})
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
objOne := gvar.New("old", true)
objOneOld, _ := objOne.Set("new").(string)
2020-03-19 22:56:12 +08:00
t.Assert(objOneOld, "old")
2019-04-26 10:38:27 +08:00
objTwo := gvar.New("old", false)
objTwoOld, _ := objTwo.Set("new").(string)
2020-03-19 22:56:12 +08:00
t.Assert(objTwoOld, "old")
2019-04-26 10:38:27 +08:00
})
}
func Test_Val(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
objOne := gvar.New(1, true)
objOneOld, _ := objOne.Val().(int)
2020-03-19 22:56:12 +08:00
t.Assert(objOneOld, 1)
2019-04-26 10:38:27 +08:00
objTwo := gvar.New(1, false)
objTwoOld, _ := objTwo.Val().(int)
2020-03-19 22:56:12 +08:00
t.Assert(objTwoOld, 1)
2019-04-26 10:38:27 +08:00
})
}
func Test_Interface(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
objOne := gvar.New(1, true)
objOneOld, _ := objOne.Interface().(int)
2020-03-19 22:56:12 +08:00
t.Assert(objOneOld, 1)
2019-04-26 10:38:27 +08:00
objTwo := gvar.New(1, false)
objTwoOld, _ := objTwo.Interface().(int)
2020-03-19 22:56:12 +08:00
t.Assert(objTwoOld, 1)
2019-04-26 10:38:27 +08:00
})
}
func Test_IsNil(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
objOne := gvar.New(nil, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.IsNil(), true)
2019-04-26 10:38:27 +08:00
objTwo := gvar.New("noNil", false)
2020-03-19 22:56:12 +08:00
t.Assert(objTwo.IsNil(), false)
2019-04-26 10:38:27 +08:00
})
}
func Test_Bytes(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
x := int32(1)
bytesBuffer := bytes.NewBuffer([]byte{})
binary.Write(bytesBuffer, binary.BigEndian, x)
objOne := gvar.New(bytesBuffer.Bytes(), true)
bBuf := bytes.NewBuffer(objOne.Bytes())
var y int32
binary.Read(bBuf, binary.BigEndian, &y)
2020-03-19 22:56:12 +08:00
t.Assert(x, y)
2019-04-26 10:38:27 +08:00
})
}
func Test_String(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var str string = "hello"
objOne := gvar.New(str, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.String(), str)
2019-04-26 10:38:27 +08:00
})
}
func Test_Bool(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var ok bool = true
objOne := gvar.New(ok, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Bool(), ok)
2019-04-26 10:38:27 +08:00
ok = false
objTwo := gvar.New(ok, true)
2020-03-19 22:56:12 +08:00
t.Assert(objTwo.Bool(), ok)
2019-04-26 10:38:27 +08:00
})
}
func Test_Int(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num int = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Int(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Int8(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num int8 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Int8(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Int16(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num int16 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Int16(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Int32(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num int32 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Int32(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Int64(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num int64 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Int64(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Uint(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num uint = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Uint(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Uint8(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num uint8 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Uint8(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Uint16(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num uint16 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Uint16(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Uint32(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num uint32 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Uint32(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Uint64(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num uint64 = 1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Uint64(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Float32(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num float32 = 1.1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Float32(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Float64(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var num float64 = 1.1
objOne := gvar.New(num, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Float64(), num)
2019-04-26 10:38:27 +08:00
})
}
func Test_Time(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-04-26 10:38:27 +08:00
var timeUnix int64 = 1556242660
objOne := gvar.New(timeUnix, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Time().Unix(), timeUnix)
2019-04-26 10:38:27 +08:00
})
}
func Test_GTime(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
var timeUnix int64 = 1556242660
objOne := gvar.New(timeUnix, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.GTime().Unix(), timeUnix)
})
}
func Test_Duration(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
var timeUnix int64 = 1556242660
objOne := gvar.New(timeUnix, true)
2020-03-19 22:56:12 +08:00
t.Assert(objOne.Duration(), time.Duration(timeUnix))
})
}
2021-02-23 22:00:11 +08:00
func Test_UnmarshalJson(t *testing.T) {
gtest.C(t, func(t *gtest.T) {
type V struct {
Name string
Var *gvar.Var
}
var v *V
err := gconv.Struct(map[string]interface{}{
"name": "john",
"var": "v",
}, &v)
2022-03-10 11:36:40 +08:00
t.AssertNil(err)
2021-02-23 22:00:11 +08:00
t.Assert(v.Name, "john")
t.Assert(v.Var.String(), "v")
})
gtest.C(t, func(t *gtest.T) {
type V struct {
Name string
Var gvar.Var
}
var v *V
err := gconv.Struct(map[string]interface{}{
"name": "john",
"var": "v",
}, &v)
2022-03-10 11:36:40 +08:00
t.AssertNil(err)
2021-02-23 22:00:11 +08:00
t.Assert(v.Name, "john")
t.Assert(v.Var.String(), "v")
})
}
func Test_UnmarshalValue(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2021-02-23 22:00:11 +08:00
type V struct {
Name string
Var *gvar.Var
}
var v *V
err := gconv.Struct(map[string]interface{}{
"name": "john",
"var": "v",
}, &v)
2022-03-10 11:36:40 +08:00
t.AssertNil(err)
2021-02-23 22:00:11 +08:00
t.Assert(v.Name, "john")
t.Assert(v.Var.String(), "v")
})
gtest.C(t, func(t *gtest.T) {
type V struct {
Name string
Var gvar.Var
}
2020-03-20 08:49:40 +08:00
var v *V
err := gconv.Struct(map[string]interface{}{
"name": "john",
"var": "v",
2020-03-20 08:49:40 +08:00
}, &v)
2022-03-10 11:36:40 +08:00
t.AssertNil(err)
2020-03-20 08:49:40 +08:00
t.Assert(v.Name, "john")
t.Assert(v.Var.String(), "v")
})
}