diff --git a/g/container/gvar/gvar_test.go b/g/container/gvar/gvar_test.go new file mode 100644 index 000000000..8af27577f --- /dev/null +++ b/g/container/gvar/gvar_test.go @@ -0,0 +1,265 @@ +package gvar_test + +import ( + "bytes" + "encoding/binary" + "testing" + + "github.com/gogf/gf/g/container/gvar" + "github.com/gogf/gf/g/test/gtest" +) + +func TestReadOnly(t *testing.T) { + gtest.Case(t, func() { + obj := gvar.New(nil, true) + var result string + + switch obj.ReadOnly().(type) { + case gvar.VarRead: + result = "yes" + default: + result = "no" + } + + gtest.Assert(result, "yes") + }) +} + +func TestSet(t *testing.T) { + gtest.Case(t, func() { + objOne := gvar.New("old", true) + objOneOld, _ := objOne.Set("new").(string) + gtest.Assert(objOneOld, "old") + + objTwo := gvar.New("old", false) + objTwoOld, _ := objTwo.Set("new").(string) + gtest.Assert(objTwoOld, "old") + }) +} + +func TestVal(t *testing.T) { + gtest.Case(t, func() { + objOne := gvar.New(1, true) + objOneOld, _ := objOne.Val().(int) + gtest.Assert(objOneOld, 1) + + objTwo := gvar.New(1, false) + objTwoOld, _ := objTwo.Val().(int) + gtest.Assert(objTwoOld, 1) + }) +} +func TestInterface(t *testing.T) { + gtest.Case(t, func() { + objOne := gvar.New(1, true) + objOneOld, _ := objOne.Interface().(int) + gtest.Assert(objOneOld, 1) + + objTwo := gvar.New(1, false) + objTwoOld, _ := objTwo.Interface().(int) + gtest.Assert(objTwoOld, 1) + }) +} +func TestIsNil(t *testing.T) { + gtest.Case(t, func() { + objOne := gvar.New(nil, true) + gtest.Assert(objOne.IsNil(), true) + + objTwo := gvar.New("noNil", false) + gtest.Assert(objTwo.IsNil(), false) + + }) +} + +func TestBytes(t *testing.T) { + gtest.Case(t, func() { + 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) + + gtest.Assert(x, y) + + }) +} + +func TestString(t *testing.T) { + gtest.Case(t, func() { + var str string = "hello" + objOne := gvar.New(str, true) + gtest.Assert(objOne.String(), str) + + }) +} +func TestBool(t *testing.T) { + gtest.Case(t, func() { + var ok bool = true + objOne := gvar.New(ok, true) + gtest.Assert(objOne.Bool(), ok) + + ok = false + objTwo := gvar.New(ok, true) + gtest.Assert(objTwo.Bool(), ok) + + }) +} + +func TestInt(t *testing.T) { + gtest.Case(t, func() { + var num int = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Int(), num) + + }) +} + +func TestInt8(t *testing.T) { + gtest.Case(t, func() { + var num int8 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Int8(), num) + + }) +} + +func TestInt16(t *testing.T) { + gtest.Case(t, func() { + var num int16 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Int16(), num) + + }) +} + +func TestInt32(t *testing.T) { + gtest.Case(t, func() { + var num int32 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Int32(), num) + + }) +} + +func TestInt64(t *testing.T) { + gtest.Case(t, func() { + var num int64 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Int64(), num) + + }) +} + +func TestUint(t *testing.T) { + gtest.Case(t, func() { + var num uint = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Uint(), num) + + }) +} + +func TestUint8(t *testing.T) { + gtest.Case(t, func() { + var num uint8 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Uint8(), num) + + }) +} + +func TestUint16(t *testing.T) { + gtest.Case(t, func() { + var num uint16 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Uint16(), num) + + }) +} + +func TestUint32(t *testing.T) { + gtest.Case(t, func() { + var num uint32 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Uint32(), num) + + }) +} + +func TestUint64(t *testing.T) { + gtest.Case(t, func() { + var num uint64 = 1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Uint64(), num) + + }) +} +func TestFloat32(t *testing.T) { + gtest.Case(t, func() { + var num float32 = 1.1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Float32(), num) + + }) +} + +func TestFloat64(t *testing.T) { + gtest.Case(t, func() { + var num float64 = 1.1 + objOne := gvar.New(num, true) + gtest.Assert(objOne.Float64(), num) + + }) +} + +func TestInts(t *testing.T) { + gtest.Case(t, func() { + var arr = []int{1, 2, 3, 4, 5} + objOne := gvar.New(arr, true) + gtest.Assert(objOne.Ints()[0], arr[0]) + }) +} +func TestFloats(t *testing.T) { + gtest.Case(t, func() { + var arr = []float64{1, 2, 3, 4, 5} + objOne := gvar.New(arr, true) + gtest.Assert(objOne.Floats()[0], arr[0]) + }) +} +func TestStrings(t *testing.T) { + gtest.Case(t, func() { + var arr = []string{"hello", "world"} + objOne := gvar.New(arr, true) + gtest.Assert(objOne.Strings()[0], arr[0]) + }) +} + +func TestTime(t *testing.T) { + gtest.Case(t, func() { + var timeUnix int64 = 1556242660 + objOne := gvar.New(timeUnix, true) + gtest.Assert(objOne.Time().Unix(), timeUnix) + }) +} + +type StTest struct { + Test int +} + +func TestStruct(t *testing.T) { + gtest.Case(t, func() { + Kv := make(map[string]int, 1) + Kv["Test"] = 100 + + testObj := &StTest{} + + objOne := gvar.New(Kv, true) + + objOne.Struct(testObj) + + gtest.Assert(testObj.Test, Kv["Test"]) + }) +}