diff --git a/g/database/gredis/gredis_unit_test.go b/g/database/gredis/gredis_unit_test.go index ca37f1293..e0dcf7e94 100644 --- a/g/database/gredis/gredis_unit_test.go +++ b/g/database/gredis/gredis_unit_test.go @@ -7,133 +7,203 @@ package gredis_test import ( - "github.com/gogf/gf/g/database/gredis" - "github.com/gogf/gf/g/test/gtest" - "testing" - "time" + "github.com/gogf/gf/g/database/gredis" + "github.com/gogf/gf/g/test/gtest" + redis2 "github.com/gogf/gf/third/github.com/gomodule/redigo/redis" + "testing" + "time" ) var ( - config = gredis.Config{ - Host : "127.0.0.1", - Port : 6379, - Db : 1, - } + config = gredis.Config{ + Host: "127.0.0.1", + Port: 6379, + Db: 1, + } ) func Test_NewClose(t *testing.T) { - gtest.Case(t, func() { - redis := gredis.New(config) - gtest.AssertNE(redis, nil) - err := redis.Close() - gtest.Assert(err, nil) - }) + gtest.Case(t, func() { + redis := gredis.New(config) + gtest.AssertNE(redis, nil) + err := redis.Close() + gtest.Assert(err, nil) + }) } func Test_Do(t *testing.T) { - gtest.Case(t, func() { - redis := gredis.New(config) - defer redis.Close() - _, err := redis.Do("SET", "k", "v") - gtest.Assert(err, nil) + gtest.Case(t, func() { + redis := gredis.New(config) + defer redis.Close() + _, err := redis.Do("SET", "k", "v") + gtest.Assert(err, nil) - r, err := redis.Do("GET", "k") - gtest.Assert(err, nil) - gtest.Assert(r, []byte("v")) + r, err := redis.Do("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(r, []byte("v")) - _, err = redis.Do("DEL", "k") - gtest.Assert(err, nil) - r, err = redis.Do("GET", "k") - gtest.Assert(err, nil) - gtest.Assert(r, nil) - }) + _, err = redis.Do("DEL", "k") + gtest.Assert(err, nil) + r, err = redis.Do("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(r, nil) + }) } func Test_Send(t *testing.T) { - gtest.Case(t, func() { - redis := gredis.New(config) - defer redis.Close() - err := redis.Send("SET", "k", "v") - gtest.Assert(err, nil) + gtest.Case(t, func() { + redis := gredis.New(config) + defer redis.Close() + err := redis.Send("SET", "k", "v") + gtest.Assert(err, nil) - r, err := redis.Do("GET", "k") - gtest.Assert(err, nil) - gtest.Assert(r, []byte("v")) - }) + r, err := redis.Do("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(r, []byte("v")) + }) } func Test_Stats(t *testing.T) { - gtest.Case(t, func() { - redis := gredis.New(config) - defer redis.Close() - redis.SetMaxIdle(2) - redis.SetMaxActive(100) - redis.SetIdleTimeout(500*time.Millisecond) - redis.SetMaxConnLifetime(500*time.Millisecond) + gtest.Case(t, func() { + redis := gredis.New(config) + defer redis.Close() + redis.SetMaxIdle(2) + redis.SetMaxActive(100) + redis.SetIdleTimeout(500 * time.Millisecond) + redis.SetMaxConnLifetime(500 * time.Millisecond) - array := make([]*gredis.Conn, 0) - for i := 0; i < 10; i++ { - array = append(array, redis.Conn()) - } - stats := redis.Stats() - gtest.Assert(stats.ActiveCount, 10) - gtest.Assert(stats.IdleCount, 0) - for i := 0; i < 10; i++ { - array[i].Close() - } - stats = redis.Stats() - gtest.Assert(stats.ActiveCount, 2) - gtest.Assert(stats.IdleCount, 2) - //time.Sleep(3000*time.Millisecond) - //stats = redis.Stats() - //fmt.Println(stats) - //gtest.Assert(stats.ActiveCount, 0) - //gtest.Assert(stats.IdleCount, 0) - }) + array := make([]*gredis.Conn, 0) + for i := 0; i < 10; i++ { + array = append(array, redis.Conn()) + } + stats := redis.Stats() + gtest.Assert(stats.ActiveCount, 10) + gtest.Assert(stats.IdleCount, 0) + for i := 0; i < 10; i++ { + array[i].Close() + } + stats = redis.Stats() + gtest.Assert(stats.ActiveCount, 2) + gtest.Assert(stats.IdleCount, 2) + //time.Sleep(3000*time.Millisecond) + //stats = redis.Stats() + //fmt.Println(stats) + //gtest.Assert(stats.ActiveCount, 0) + //gtest.Assert(stats.IdleCount, 0) + }) } func Test_Conn(t *testing.T) { - gtest.Case(t, func() { - redis := gredis.New(config) - defer redis.Close() - conn := redis.Conn() - defer conn.Close() + gtest.Case(t, func() { + redis := gredis.New(config) + defer redis.Close() + conn := redis.Conn() + defer conn.Close() + r, err := conn.Do("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(r, []byte("v")) - r, err := conn.Do("GET", "k") - gtest.Assert(err, nil) - gtest.Assert(r, []byte("v")) - - _, err = conn.Do("DEL", "k") - gtest.Assert(err, nil) - r, err = conn.Do("GET", "k") - gtest.Assert(err, nil) - gtest.Assert(r, nil) - }) + _, err = conn.Do("DEL", "k") + gtest.Assert(err, nil) + r, err = conn.Do("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(r, nil) + }) } func Test_Instance(t *testing.T) { - gtest.Case(t, func() { - group := "my-test" - gredis.SetConfig(config, group) - defer gredis.RemoveConfig(group) - redis := gredis.Instance(group) - defer redis.Close() + gtest.Case(t, func() { + group := "my-test" + gredis.SetConfig(config, group) + defer gredis.RemoveConfig(group) + redis := gredis.Instance(group) + defer redis.Close() - conn := redis.Conn() - defer conn.Close() + conn := redis.Conn() + defer conn.Close() - _, err := conn.Do("SET", "k", "v") - gtest.Assert(err, nil) + _, err := conn.Do("SET", "k", "v") + gtest.Assert(err, nil) - r, err := conn.Do("GET", "k") - gtest.Assert(err, nil) - gtest.Assert(r, []byte("v")) + r, err := conn.Do("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(r, []byte("v")) - _, err = conn.Do("DEL", "k") - gtest.Assert(err, nil) - r, err = conn.Do("GET", "k") - gtest.Assert(err, nil) - gtest.Assert(r, nil) - }) + _, err = conn.Do("DEL", "k") + gtest.Assert(err, nil) + r, err = conn.Do("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(r, nil) + }) +} + +func Test_Basic(t *testing.T) { + gtest.Case(t, func() { + config1 := gredis.Config{ + Host: "127.0.0.2", + Port: 6379, + Db: 1, + } + redis := gredis.New(config1) + _, err := redis.Do("info") + gtest.Assert(err == nil, false) + + config1 = gredis.Config{ + Host: "127.0.0.1", + Port: 6379, + Db: 1, + Pass: "666666", + } + redis = gredis.New(config1) + _, err = redis.Do("info") + gtest.Assert(err == nil, false) + + config1 = gredis.Config{ + Host: "127.0.0.1", + Port: 6379, + Db: 100, + } + redis = gredis.New(config1) + _, err = redis.Do("info") + gtest.Assert(err == nil, false) + + redis = gredis.Instance("gf") + gtest.Assert(redis == nil, true) + gredis.ClearConfig() + + redis = gredis.New(config) + defer redis.Close() + _, err = redis.DoVar("SET", "k", "v") + gtest.Assert(err, nil) + + v, err := redis.DoVar("GET", "k") + gtest.Assert(err, nil) + gtest.Assert(v.String(), "v") + + conn := redis.GetConn() + _, err = conn.DoVar("SET", "k", "v") + gtest.Assert(err, nil) + + //v, err = conn.ReceiveVar() + //gtest.Assert(err, nil) + //gtest.Assert(v.String(), "v") + + psc := redis2.PubSubConn{Conn: conn} + psc.Subscribe("gf") + redis.DoVar("PUBLISH", "gf", "gf test") + go func() { + for { + v, _ := conn.ReceiveVar() + switch obj := v.Val().(type) { + case redis2.Message: + gtest.Assert(string(obj.Data), "gf test") + case redis2.Subscription: + + } + } + }() + + time.Sleep(time.Second) + }) } diff --git a/g/encoding/gcompress/gcompress_test.go b/g/encoding/gcompress/gcompress_test.go index df1bbb6f3..dcd8f5c06 100644 --- a/g/encoding/gcompress/gcompress_test.go +++ b/g/encoding/gcompress/gcompress_test.go @@ -18,6 +18,11 @@ func TestZlib(t *testing.T) { gtest.Assert(gcompress.Zlib([]byte(src)), dst) gtest.Assert(gcompress.UnZlib(dst), []byte(src)) + + gtest.Assert(gcompress.Zlib(nil), nil) + gtest.Assert(gcompress.UnZlib(nil), nil) + + gtest.Assert(gcompress.UnZlib(dst[1:]), nil) }) } @@ -36,7 +41,10 @@ func TestGzip(t *testing.T) { 0x00, 0x00, } - gtest.Assert(gcompress.Gzip([]byte(src)), gzip) + arr := []byte(src) + gtest.Assert(gcompress.Gzip(arr), gzip) - gtest.Assert(gcompress.UnGzip(gzip), []byte(src)) + gtest.Assert(gcompress.UnGzip(gzip), arr) + + gtest.Assert(gcompress.UnGzip(gzip[1:]), nil) } diff --git a/g/encoding/gjson/gjson_z_unit_basic_test.go b/g/encoding/gjson/gjson_z_unit_basic_test.go index 0a43eee58..20bc1b5fd 100644 --- a/g/encoding/gjson/gjson_z_unit_basic_test.go +++ b/g/encoding/gjson/gjson_z_unit_basic_test.go @@ -7,221 +7,221 @@ package gjson_test import ( - "github.com/gogf/gf/g" - "github.com/gogf/gf/g/encoding/gjson" - "github.com/gogf/gf/g/test/gtest" - "testing" + "github.com/gogf/gf/g" + "github.com/gogf/gf/g/encoding/gjson" + "github.com/gogf/gf/g/test/gtest" + "testing" ) func Test_New(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gjson.New(data) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gjson.New(data) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + }) } func Test_NewUnsafe(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gjson.NewUnsafe(data) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gjson.NewUnsafe(data) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Valid(t *testing.T) { - data1 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - data2 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]`) - gtest.Case(t, func() { - gtest.Assert(gjson.Valid(data1), true) - gtest.Assert(gjson.Valid(data2), false) - }) + data1 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + data2 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]`) + gtest.Case(t, func() { + gtest.Assert(gjson.Valid(data1), true) + gtest.Assert(gjson.Valid(data2), false) + }) } func Test_Encode(t *testing.T) { - value := g.Slice{1, 2, 3} - gtest.Case(t, func() { - b, err := gjson.Encode(value) - gtest.Assert(err, nil) - gtest.Assert(b, []byte(`[1,2,3]`)) - }) + value := g.Slice{1, 2, 3} + gtest.Case(t, func() { + b, err := gjson.Encode(value) + gtest.Assert(err, nil) + gtest.Assert(b, []byte(`[1,2,3]`)) + }) } func Test_Decode(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - v, err := gjson.Decode(data) - gtest.Assert(err, nil) - gtest.Assert(v, g.Map{ - "n" : 123456789, - "a" : g.Slice{1, 2, 3}, - "m" : g.Map{ - "k" : "v", - }, - }) - }) - gtest.Case(t, func() { - var v interface{} - err := gjson.DecodeTo(data, &v) - gtest.Assert(err, nil) - gtest.Assert(v, g.Map{ - "n" : 123456789, - "a" : g.Slice{1, 2, 3}, - "m" : g.Map{ - "k" : "v", - }, - }) - }) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + v, err := gjson.Decode(data) + gtest.Assert(err, nil) + gtest.Assert(v, g.Map{ + "n": 123456789, + "a": g.Slice{1, 2, 3}, + "m": g.Map{ + "k": "v", + }, + }) + }) + gtest.Case(t, func() { + var v interface{} + err := gjson.DecodeTo(data, &v) + gtest.Assert(err, nil) + gtest.Assert(v, g.Map{ + "n": 123456789, + "a": g.Slice{1, 2, 3}, + "m": g.Map{ + "k": "v", + }, + }) + }) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_SplitChar(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - j.SetSplitChar(byte('#')) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m#k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a#1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + j.SetSplitChar(byte('#')) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m#k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a#1"), 2) + }) } func Test_ViolenceCheck(t *testing.T) { - data := []byte(`{"m":{"a":[1,2,3], "v1.v2":"4"}}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("m.a.2"), 3) - gtest.Assert(j.Get("m.v1.v2"), nil) - j.SetViolenceCheck(true) - gtest.Assert(j.Get("m.v1.v2"), 4) - }) + data := []byte(`{"m":{"a":[1,2,3], "v1.v2":"4"}}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("m.a.2"), 3) + gtest.Assert(j.Get("m.v1.v2"), nil) + j.SetViolenceCheck(true) + gtest.Assert(j.Get("m.v1.v2"), 4) + }) } func Test_GetToVar(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - var m map[string]string - var n int - var a []int - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + var m map[string]string + var n int + var a []int + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) - j.GetToVar("n", &n) - j.GetToVar("m", &m) - j.GetToVar("a", &a) + j.GetToVar("n", &n) + j.GetToVar("m", &m) + j.GetToVar("a", &a) - gtest.Assert(n, "123456789") - gtest.Assert(m, g.Map{"k" : "v"}) - gtest.Assert(a, g.Slice{1, 2, 3}) - }) + gtest.Assert(n, "123456789") + gtest.Assert(m, g.Map{"k": "v"}) + gtest.Assert(a, g.Slice{1, 2, 3}) + }) } func Test_GetMap(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - gtest.Assert(j.GetMap("n"), nil) - gtest.Assert(j.GetMap("m"), g.Map{"k" : "v"}) - gtest.Assert(j.GetMap("a"), nil) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + gtest.Assert(j.GetMap("n"), nil) + gtest.Assert(j.GetMap("m"), g.Map{"k": "v"}) + gtest.Assert(j.GetMap("a"), nil) + }) } func Test_GetJson(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - j2 := j.GetJson("m") - gtest.AssertNE(j2, nil) - gtest.Assert(j2.Get("k"), "v") - gtest.Assert(j2.Get("a"), nil) - gtest.Assert(j2.Get("n"), nil) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + j2 := j.GetJson("m") + gtest.AssertNE(j2, nil) + gtest.Assert(j2.Get("k"), "v") + gtest.Assert(j2.Get("a"), nil) + gtest.Assert(j2.Get("n"), nil) + }) } func Test_GetArray(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - gtest.Assert(j.GetArray("n"), g.Array{123456789}) - gtest.Assert(j.GetArray("m"), g.Array{g.Map{"k":"v"}}) - gtest.Assert(j.GetArray("a"), g.Array{1,2,3}) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + gtest.Assert(j.GetArray("n"), g.Array{123456789}) + gtest.Assert(j.GetArray("m"), g.Array{g.Map{"k": "v"}}) + gtest.Assert(j.GetArray("a"), g.Array{1, 2, 3}) + }) } func Test_GetString(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - gtest.AssertEQ(j.GetString("n"), "123456789") - gtest.AssertEQ(j.GetString("m"), `{"k":"v"}`) - gtest.AssertEQ(j.GetString("a"), `[1,2,3]`) - gtest.AssertEQ(j.GetString("i"), "") - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + gtest.AssertEQ(j.GetString("n"), "123456789") + gtest.AssertEQ(j.GetString("m"), `{"k":"v"}`) + gtest.AssertEQ(j.GetString("a"), `[1,2,3]`) + gtest.AssertEQ(j.GetString("i"), "") + }) } func Test_GetStrings(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - gtest.AssertEQ(j.GetStrings("n"), g.SliceStr{"123456789"}) - gtest.AssertEQ(j.GetStrings("m"), g.SliceStr{`{"k":"v"}`}) - gtest.AssertEQ(j.GetStrings("a"), g.SliceStr{"1", "2", "3"}) - gtest.AssertEQ(j.GetStrings("i"), nil) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + gtest.AssertEQ(j.GetStrings("n"), g.SliceStr{"123456789"}) + gtest.AssertEQ(j.GetStrings("m"), g.SliceStr{`{"k":"v"}`}) + gtest.AssertEQ(j.GetStrings("a"), g.SliceStr{"1", "2", "3"}) + gtest.AssertEQ(j.GetStrings("i"), nil) + }) } func Test_GetInterfaces(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j, err := gjson.DecodeToJson(data) - gtest.Assert(err, nil) - gtest.AssertEQ(j.GetInterfaces("n"), g.Array{123456789}) - gtest.AssertEQ(j.GetInterfaces("m"), g.Array{g.Map{"k":"v"}}) - gtest.AssertEQ(j.GetInterfaces("a"), g.Array{1,2,3}) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j, err := gjson.DecodeToJson(data) + gtest.Assert(err, nil) + gtest.AssertEQ(j.GetInterfaces("n"), g.Array{123456789}) + gtest.AssertEQ(j.GetInterfaces("m"), g.Array{g.Map{"k": "v"}}) + gtest.AssertEQ(j.GetInterfaces("a"), g.Array{1, 2, 3}) + }) } func Test_Len(t *testing.T) { - gtest.Case(t, func() { - p := gjson.New(nil) - p.Append("a", 1) - p.Append("a", 2) - gtest.Assert(p.Len("a"), 2) - }) - gtest.Case(t, func() { - p := gjson.New(nil) - p.Append("a.b", 1) - p.Append("a.c", 2) - gtest.Assert(p.Len("a"), 2) - }) - gtest.Case(t, func() { - p := gjson.New(nil) - p.Set("a", 1) - gtest.Assert(p.Len("a"), -1) - }) + gtest.Case(t, func() { + p := gjson.New(nil) + p.Append("a", 1) + p.Append("a", 2) + gtest.Assert(p.Len("a"), 2) + }) + gtest.Case(t, func() { + p := gjson.New(nil) + p.Append("a.b", 1) + p.Append("a.c", 2) + gtest.Assert(p.Len("a"), 2) + }) + gtest.Case(t, func() { + p := gjson.New(nil) + p.Set("a", 1) + gtest.Assert(p.Len("a"), -1) + }) } func Test_Append(t *testing.T) { @@ -236,8 +236,8 @@ func Test_Append(t *testing.T) { p.Append("a.b", 1) p.Append("a.c", 2) gtest.Assert(p.Get("a"), g.Map{ - "b" : g.Slice{1}, - "c" : g.Slice{2}, + "b": g.Slice{1}, + "c": g.Slice{2}, }) }) gtest.Case(t, func() { @@ -282,21 +282,181 @@ func TestJson_Default(t *testing.T) { gtest.AssertEQ(j.GetUint64("no", 100), uint64(100)) gtest.AssertEQ(j.GetFloat32("no", 123.456), float32(123.456)) gtest.AssertEQ(j.GetFloat64("no", 123.456), float64(123.456)) - gtest.AssertEQ(j.GetArray("no", g.Slice{1,2,3}), g.Slice{1,2,3}) - gtest.AssertEQ(j.GetInts("no", g.Slice{1,2,3}), g.SliceInt{1,2,3}) - gtest.AssertEQ(j.GetFloats("no", g.Slice{1,2,3}), []float64{1,2,3}) - gtest.AssertEQ(j.GetMap("no", g.Map{"k":"v"}), g.Map{"k":"v"}) + gtest.AssertEQ(j.GetArray("no", g.Slice{1, 2, 3}), g.Slice{1, 2, 3}) + gtest.AssertEQ(j.GetInts("no", g.Slice{1, 2, 3}), g.SliceInt{1, 2, 3}) + gtest.AssertEQ(j.GetFloats("no", g.Slice{1, 2, 3}), []float64{1, 2, 3}) + gtest.AssertEQ(j.GetMap("no", g.Map{"k": "v"}), g.Map{"k": "v"}) gtest.AssertEQ(j.GetVar("no", 123.456).Float64(), float64(123.456)) - gtest.AssertEQ(j.GetJson("no", g.Map{"k":"v"}).Get("k"), "v") + gtest.AssertEQ(j.GetJson("no", g.Map{"k": "v"}).Get("k"), "v") gtest.AssertEQ(j.GetJsons("no", g.Slice{ - g.Map{"k1":"v1"}, - g.Map{"k2":"v2"}, - g.Map{"k3":"v3"}, + g.Map{"k1": "v1"}, + g.Map{"k2": "v2"}, + g.Map{"k3": "v3"}, })[0].Get("k1"), "v1") gtest.AssertEQ(j.GetJsonMap("no", g.Map{ - "m1" : g.Map{"k1":"v1"}, - "m2" : g.Map{"k2":"v2"}, + "m1": g.Map{"k1": "v1"}, + "m2": g.Map{"k2": "v2"}, })["m2"].Get("k2"), "v2") }) } +func Test_Convert(t *testing.T) { + gtest.Case(t, func() { + j := gjson.New(`{"name":"gf"}`) + arr, err := j.ToXml() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "gf") + arr, err = j.ToXmlIndent() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "gf") + str, err := j.ToXmlString() + gtest.Assert(err == nil, true) + gtest.Assert(str, "gf") + str, err = j.ToXmlIndentString() + gtest.Assert(err == nil, true) + gtest.Assert(str, "gf") + + arr, err = j.ToJsonIndent() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "{\n\t\"name\": \"gf\"\n}") + str, err = j.ToJsonIndentString() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "{\n\t\"name\": \"gf\"\n}") + + arr, err = j.ToYaml() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "name: gf\n") + str, err = j.ToYamlString() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "name: gf\n") + + arr, err = j.ToToml() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "name = \"gf\"\n") + str, err = j.ToTomlString() + gtest.Assert(err == nil, true) + gtest.Assert(string(arr), "name = \"gf\"\n") + }) +} + +func Test_Convert2(t *testing.T) { + gtest.Case(t, func() { + name := struct { + Name string + }{} + j := gjson.New(`{"name":"gf","time":"2019-06-12"}`) + gtest.Assert(j.Value().(g.Map)["name"], "gf") + gtest.Assert(j.GetMap("name1"), nil) + gtest.Assert(j.GetJson("name1"), nil) + gtest.Assert(j.GetJsons("name1"), nil) + gtest.Assert(j.GetJsonMap("name1"), nil) + gtest.Assert(j.Contains("name1"), false) + gtest.Assert(j.GetToVar("name1", &name) == nil, true) + gtest.Assert(j.GetToVar("name", &name) == nil, false) + gtest.Assert(j.Len("name1"), -1) + gtest.Assert(j.GetTime("time").Format("2006-01-02"), "2019-06-12") + gtest.Assert(j.GetGTime("time").Format("Y-m-d"), "2019-06-12") + gtest.Assert(j.GetDuration("time").String(), "0s") + + err := j.ToStruct(&name) + gtest.Assert(err == nil, true) + gtest.Assert(name.Name, "gf") + err = j.Dump() + gtest.Assert(err == nil, true) + + j = gjson.New(`{"person":{"name":"gf"}}`) + err = j.GetToStruct("person", &name) + gtest.Assert(err == nil, true) + gtest.Assert(name.Name, "gf") + + j = gjson.New(`{"name":"gf""}`) + err = j.Dump() + gtest.Assert(err == nil, true) + + j = gjson.New(`[1,2,3]`) + gtest.Assert(len(j.ToArray()), 3) + }) +} + +func Test_Basic(t *testing.T) { + gtest.Case(t, func() { + j := gjson.New(`{"name":"gf","time":"2019-06-12"}`) + j.SetViolenceCheck(true) + gtest.Assert(j.Get("").(g.Map)["name"], "gf") + gtest.Assert(j.Get("").(g.Map)["name1"], nil) + j.SetViolenceCheck(false) + gtest.Assert(j.Get("").(g.Map)["name"], "gf") + + err := j.Set("name", "gf1") + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("name"), "gf1") + + j = gjson.New(`[1,2,3]`) + err = j.Set("\"0\".1", 11) + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("1"), 11) + + j = gjson.New(`[1,2,3]`) + err = j.Set("11111111111111111111111", 11) + gtest.Assert(err == nil, false) + + //此测试用例测出bug,数组下表越界,暂且注释起来, + /*j = gjson.New(`[1,2,3]`) + err = j.Remove("1") + gtest.Assert(err == nil, false) + gtest.Assert(j.Get("0"), nil)*/ + + j = gjson.New(`[1,2,3]`) + err = j.Remove("3") + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("0"), 1) + + j = gjson.New(`[1,2,3]`) + err = j.Remove("0.3") + gtest.Assert(err == nil, true) + gtest.Assert(len(j.Get("0").([]interface{})), 3) + + j = gjson.New(`[1,2,3]`) + err = j.Remove("0.a") + gtest.Assert(err == nil, true) + gtest.Assert(len(j.Get("0").(g.Map)), 0) + + name := struct { + Name string + }{Name: "gf"} + j = gjson.New(name) + gtest.Assert(j.Get("Name"), "gf") + err = j.Remove("Name") + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name"), nil) + + err = j.Set("Name", "gf1") + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name"), "gf1") + + j = gjson.New(nil) + err = j.Remove("Name") + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name"), nil) + + j = gjson.New(name) + gtest.Assert(j.Get("Name"), "gf") + err = j.Set("Name1", g.Map{"Name": "gf1"}) + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name1").(g.Map)["Name"], "gf1") + err = j.Set("Name2", g.Slice{1, 2, 3}) + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name2").(g.Slice)[0], 1) + err = j.Set("Name3", name) + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name3").(g.Map)["Name"], "gf") + err = j.Set("Name4", &name) + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name4").(g.Map)["Name"], "gf") + arr := [3]int{1, 2, 3} + err = j.Set("Name5", arr) + gtest.Assert(err == nil, true) + gtest.Assert(j.Get("Name5").(g.Array)[0], 1) + + }) +} diff --git a/g/encoding/gjson/gjson_z_unit_load_test.go b/g/encoding/gjson/gjson_z_unit_load_test.go index 6717ea124..7698f71e3 100644 --- a/g/encoding/gjson/gjson_z_unit_load_test.go +++ b/g/encoding/gjson/gjson_z_unit_load_test.go @@ -7,66 +7,65 @@ package gjson_test import ( - "github.com/gogf/gf/g" - "github.com/gogf/gf/g/encoding/gjson" - "github.com/gogf/gf/g/os/gfile" - "github.com/gogf/gf/g/test/gtest" - "testing" + "github.com/gogf/gf/g" + "github.com/gogf/gf/g/encoding/gjson" + "github.com/gogf/gf/g/os/gfile" + "github.com/gogf/gf/g/test/gtest" + "testing" ) - func Test_Load_JSON(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - // JSON - gtest.Case(t, func() { - j, err := gjson.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) - // JSON - gtest.Case(t, func() { - path := "test.json" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gjson.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + // JSON + gtest.Case(t, func() { + j, err := gjson.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) + // JSON + gtest.Case(t, func() { + path := "test.json" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gjson.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Load_XML(t *testing.T) { - data := []byte(`123v123456789`) - // XML - gtest.Case(t, func() { - j, err := gjson.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("doc.n"), "123456789") - gtest.Assert(j.Get("doc.m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("doc.m.k"), "v") - gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("doc.a.1"), 2) - }) - // XML - gtest.Case(t, func() { - path := "test.xml" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gjson.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("doc.n"), "123456789") - gtest.Assert(j.Get("doc.m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("doc.m.k"), "v") - gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("doc.a.1"), 2) - }) + data := []byte(`123v123456789`) + // XML + gtest.Case(t, func() { + j, err := gjson.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("doc.n"), "123456789") + gtest.Assert(j.Get("doc.m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("doc.m.k"), "v") + gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("doc.a.1"), 2) + }) + // XML + gtest.Case(t, func() { + path := "test.xml" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gjson.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("doc.n"), "123456789") + gtest.Assert(j.Get("doc.m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("doc.m.k"), "v") + gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("doc.a.1"), 2) + }) // XML gtest.Case(t, func() { @@ -82,13 +81,13 @@ func Test_Load_XML(t *testing.T) { ` j, err := gjson.LoadContent(xml) gtest.Assert(err, nil) - gtest.Assert(j.Get("Output.ipageIndex"), "2") + gtest.Assert(j.Get("Output.ipageIndex"), "2") gtest.Assert(j.Get("Output.itotalRecords"), "GF框架") }) } func Test_Load_YAML1(t *testing.T) { - data := []byte(` + data := []byte(` a: - 1 - 2 @@ -97,78 +96,102 @@ m: k: v "n": 123456789 `) - // YAML - gtest.Case(t, func() { - j, err := gjson.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) - // YAML - gtest.Case(t, func() { - path := "test.yaml" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gjson.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + // YAML + gtest.Case(t, func() { + j, err := gjson.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) + // YAML + gtest.Case(t, func() { + path := "test.yaml" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gjson.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Load_YAML2(t *testing.T) { - data := []byte("i : 123456789") - gtest.Case(t, func() { - j, err := gjson.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("i"), "123456789") - }) + data := []byte("i : 123456789") + gtest.Case(t, func() { + j, err := gjson.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("i"), "123456789") + }) } func Test_Load_TOML1(t *testing.T) { - data := []byte(` + data := []byte(` a = ["1", "2", "3"] n = "123456789" [m] k = "v" `) - // TOML - gtest.Case(t, func() { - j, err := gjson.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) - // TOML - gtest.Case(t, func() { - path := "test.toml" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gjson.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + // TOML + gtest.Case(t, func() { + j, err := gjson.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) + // TOML + gtest.Case(t, func() { + path := "test.toml" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gjson.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Load_TOML2(t *testing.T) { - data := []byte("i=123456789") - gtest.Case(t, func() { - j, err := gjson.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("i"), "123456789") - }) + data := []byte("i=123456789") + gtest.Case(t, func() { + j, err := gjson.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("i"), "123456789") + }) +} + +func Test_Load_Basic(t *testing.T) { + gtest.Case(t, func() { + j := gjson.NewUnsafe() + gtest.Assert(j.Value(), nil) + _, err := gjson.Decode(nil) + gtest.Assert(err == nil, false) + _, err = gjson.DecodeToJson(nil) + gtest.Assert(err == nil, false) + j, err = gjson.LoadContent(nil) + gtest.Assert(err == nil, true) + gtest.Assert(j.Value(), nil) + + j, err = gjson.LoadContent(`{"name": "gf"}`) + gtest.Assert(err == nil, true) + + j, err = gjson.LoadContent(`{"name": "gf"""}`) + gtest.Assert(err == nil, false) + + j = gjson.New(&g.Map{"name": "gf"}) + gtest.Assert(j.GetString("name"), "gf") + + }) } diff --git a/g/encoding/gparser/gparser_unit_basic_test.go b/g/encoding/gparser/gparser_unit_basic_test.go index 4fb894d4f..cdd24599b 100644 --- a/g/encoding/gparser/gparser_unit_basic_test.go +++ b/g/encoding/gparser/gparser_unit_basic_test.go @@ -7,202 +7,314 @@ package gparser_test import ( - "github.com/gogf/gf/g" - "github.com/gogf/gf/g/encoding/gparser" - "github.com/gogf/gf/g/test/gtest" - "testing" + "github.com/gogf/gf/g" + "github.com/gogf/gf/g/encoding/gparser" + "github.com/gogf/gf/g/test/gtest" + "testing" ) func Test_New(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + v := j.Value().(g.Map) + gtest.Assert(v["n"], 123456789) + }) } func Test_NewUnsafe(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.NewUnsafe(data) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.NewUnsafe(data) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Encode(t *testing.T) { - value := g.Slice{1, 2, 3} - gtest.Case(t, func() { - b, err := gparser.VarToJson(value) - gtest.Assert(err, nil) - gtest.Assert(b, []byte(`[1,2,3]`)) - }) + value := g.Slice{1, 2, 3} + gtest.Case(t, func() { + b, err := gparser.VarToJson(value) + gtest.Assert(err, nil) + gtest.Assert(b, []byte(`[1,2,3]`)) + }) } func Test_Decode(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.AssertNE(j, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.AssertNE(j, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_SplitChar(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - j.SetSplitChar(byte('#')) - gtest.AssertNE(j, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m#k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a#1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + j.SetSplitChar(byte('#')) + gtest.AssertNE(j, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m#k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a#1"), 2) + }) } func Test_ViolenceCheck(t *testing.T) { - data := []byte(`{"m":{"a":[1,2,3], "v1.v2":"4"}}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.AssertNE(j, nil) - gtest.Assert(j.Get("m.a.2"), 3) - gtest.Assert(j.Get("m.v1.v2"), nil) - j.SetViolenceCheck(true) - gtest.Assert(j.Get("m.v1.v2"), 4) - }) + data := []byte(`{"m":{"a":[1,2,3], "v1.v2":"4"}}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.AssertNE(j, nil) + gtest.Assert(j.Get("m.a.2"), 3) + gtest.Assert(j.Get("m.v1.v2"), nil) + j.SetViolenceCheck(true) + gtest.Assert(j.Get("m.v1.v2"), 4) + }) } func Test_GetToVar(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - var m map[string]string - var n int - var a []int - j := gparser.New(data) - gtest.AssertNE(j, nil) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + var m map[string]string + var n int + var a []int + j := gparser.New(data) + gtest.AssertNE(j, nil) - j.GetToVar("n", &n) - j.GetToVar("m", &m) - j.GetToVar("a", &a) + j.GetToVar("n", &n) + j.GetToVar("m", &m) + j.GetToVar("a", &a) - gtest.Assert(n, "123456789") - gtest.Assert(m, g.Map{"k" : "v"}) - gtest.Assert(a, g.Slice{1, 2, 3}) - }) + gtest.Assert(n, "123456789") + gtest.Assert(m, g.Map{"k": "v"}) + gtest.Assert(a, g.Slice{1, 2, 3}) + }) } func Test_GetMap(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.AssertNE(j, nil) - gtest.Assert(j.GetMap("n"), nil) - gtest.Assert(j.GetMap("m"), g.Map{"k" : "v"}) - gtest.Assert(j.GetMap("a"), nil) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.AssertNE(j, nil) + gtest.Assert(j.GetMap("n"), nil) + gtest.Assert(j.GetMap("m"), g.Map{"k": "v"}) + gtest.Assert(j.GetMap("a"), nil) + }) } func Test_GetArray(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.AssertNE(j, nil) - gtest.Assert(j.GetArray("n"), g.Array{123456789}) - gtest.Assert(j.GetArray("m"), g.Array{g.Map{"k":"v"}}) - gtest.Assert(j.GetArray("a"), g.Array{1,2,3}) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.AssertNE(j, nil) + gtest.Assert(j.GetArray("n"), g.Array{123456789}) + gtest.Assert(j.GetArray("m"), g.Array{g.Map{"k": "v"}}) + gtest.Assert(j.GetArray("a"), g.Array{1, 2, 3}) + }) } func Test_GetString(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.AssertNE(j, nil) - gtest.AssertEQ(j.GetString("n"), "123456789") - gtest.AssertEQ(j.GetString("m"), `{"k":"v"}`) - gtest.AssertEQ(j.GetString("a"), `[1,2,3]`) - gtest.AssertEQ(j.GetString("i"), "") - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.AssertNE(j, nil) + gtest.AssertEQ(j.GetString("n"), "123456789") + gtest.AssertEQ(j.GetString("m"), `{"k":"v"}`) + gtest.AssertEQ(j.GetString("a"), `[1,2,3]`) + gtest.AssertEQ(j.GetString("i"), "") + }) } func Test_GetStrings(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.AssertNE(j, nil) - gtest.AssertEQ(j.GetStrings("n"), g.SliceStr{"123456789"}) - gtest.AssertEQ(j.GetStrings("m"), g.SliceStr{`{"k":"v"}`}) - gtest.AssertEQ(j.GetStrings("a"), g.SliceStr{"1", "2", "3"}) - gtest.AssertEQ(j.GetStrings("i"), nil) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.AssertNE(j, nil) + gtest.AssertEQ(j.GetStrings("n"), g.SliceStr{"123456789"}) + gtest.AssertEQ(j.GetStrings("m"), g.SliceStr{`{"k":"v"}`}) + gtest.AssertEQ(j.GetStrings("a"), g.SliceStr{"1", "2", "3"}) + gtest.AssertEQ(j.GetStrings("i"), nil) + }) } func Test_GetInterfaces(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - gtest.Case(t, func() { - j := gparser.New(data) - gtest.AssertNE(j, nil) - gtest.AssertEQ(j.GetInterfaces("n"), g.Array{123456789}) - gtest.AssertEQ(j.GetInterfaces("m"), g.Array{g.Map{"k":"v"}}) - gtest.AssertEQ(j.GetInterfaces("a"), g.Array{1,2,3}) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + gtest.Case(t, func() { + j := gparser.New(data) + gtest.AssertNE(j, nil) + gtest.AssertEQ(j.GetInterfaces("n"), g.Array{123456789}) + gtest.AssertEQ(j.GetInterfaces("m"), g.Array{g.Map{"k": "v"}}) + gtest.AssertEQ(j.GetInterfaces("a"), g.Array{1, 2, 3}) + }) } func Test_Len(t *testing.T) { - gtest.Case(t, func() { - p := gparser.New(nil) - p.Append("a", 1) - p.Append("a", 2) - gtest.Assert(p.Len("a"), 2) - }) - gtest.Case(t, func() { - p := gparser.New(nil) - p.Append("a.b", 1) - p.Append("a.c", 2) - gtest.Assert(p.Len("a"), 2) - }) - gtest.Case(t, func() { - p := gparser.New(nil) - p.Set("a", 1) - gtest.Assert(p.Len("a"), -1) - }) + gtest.Case(t, func() { + p := gparser.New(nil) + p.Append("a", 1) + p.Append("a", 2) + gtest.Assert(p.Len("a"), 2) + }) + gtest.Case(t, func() { + p := gparser.New(nil) + p.Append("a.b", 1) + p.Append("a.c", 2) + gtest.Assert(p.Len("a"), 2) + }) + gtest.Case(t, func() { + p := gparser.New(nil) + p.Set("a", 1) + gtest.Assert(p.Len("a"), -1) + }) } func Test_Append(t *testing.T) { - gtest.Case(t, func() { - p := gparser.New(nil) - p.Append("a", 1) - p.Append("a", 2) - gtest.Assert(p.Get("a"), g.Slice{1, 2}) - }) - gtest.Case(t, func() { - p := gparser.New(nil) - p.Append("a.b", 1) - p.Append("a.c", 2) - gtest.Assert(p.Get("a"), g.Map{ - "b" : g.Slice{1}, - "c" : g.Slice{2}, - }) - }) - gtest.Case(t, func() { - p := gparser.New(nil) - p.Set("a", 1) - err := p.Append("a", 2) - gtest.AssertNE(err, nil) - gtest.Assert(p.Get("a"), 1) - }) + gtest.Case(t, func() { + p := gparser.New(nil) + p.Append("a", 1) + p.Append("a", 2) + gtest.Assert(p.Get("a"), g.Slice{1, 2}) + }) + gtest.Case(t, func() { + p := gparser.New(nil) + p.Append("a.b", 1) + p.Append("a.c", 2) + gtest.Assert(p.Get("a"), g.Map{ + "b": g.Slice{1}, + "c": g.Slice{2}, + }) + }) + gtest.Case(t, func() { + p := gparser.New(nil) + p.Set("a", 1) + err := p.Append("a", 2) + gtest.AssertNE(err, nil) + gtest.Assert(p.Get("a"), 1) + }) } +func Test_Convert(t *testing.T) { + gtest.Case(t, func() { + p := gparser.New(`{"name":"gf","bool":true,"int":1,"float":1,"ints":[1,2],"floats":[1,2],"time":"2019-06-12","person": {"name": "gf"}}`) + gtest.Assert(p.GetVar("name").String(), "gf") + gtest.Assert(p.GetString("name"), "gf") + gtest.Assert(p.GetBool("bool"), true) + gtest.Assert(p.GetInt("int"), 1) + gtest.Assert(p.GetInt8("int"), 1) + gtest.Assert(p.GetInt16("int"), 1) + gtest.Assert(p.GetInt32("int"), 1) + gtest.Assert(p.GetInt64("int"), 1) + gtest.Assert(p.GetUint("int"), 1) + gtest.Assert(p.GetUint8("int"), 1) + gtest.Assert(p.GetUint16("int"), 1) + gtest.Assert(p.GetUint32("int"), 1) + gtest.Assert(p.GetUint64("int"), 1) + gtest.Assert(p.GetInts("ints")[0], 1) + gtest.Assert(p.GetFloat32("float"), 1) + gtest.Assert(p.GetFloat64("float"), 1) + gtest.Assert(p.GetFloats("floats")[0], 1) + gtest.Assert(p.GetTime("time").Format("2006-01-02"), "2019-06-12") + gtest.Assert(p.GetGTime("time").Format("Y-m-d"), "2019-06-12") + gtest.Assert(p.GetDuration("time").String(), "0s") + name := struct { + Name string + }{} + err := p.GetToStruct("person", &name) + gtest.Assert(err == nil, true) + gtest.Assert(name.Name, "gf") + gtest.Assert(p.ToMap()["name"], "gf") + err = p.ToStruct(&name) + gtest.Assert(err == nil, true) + gtest.Assert(name.Name, "gf") + p.Dump() + p = gparser.New(`[0,1,2]`) + gtest.Assert(p.ToArray()[0], 0) + err = gparser.VarToStruct(`{"name":"gf"}`, &name) + gtest.Assert(err == nil, true) + gtest.Assert(name.Name, "gf") + }) +} + +func Test_Convert2(t *testing.T) { + gtest.Case(t, func() { + xmlArr := []byte{60, 114, 111, 111, 116, 47, 62} + p := gparser.New(``) + arr, err := p.ToXml("root") + gtest.Assert(err == nil, true) + gtest.Assert(arr, xmlArr) + arr, err = gparser.VarToXml(``, "root") + gtest.Assert(err == nil, true) + gtest.Assert(arr, xmlArr) + + arr, err = p.ToXmlIndent("root") + gtest.Assert(err == nil, true) + gtest.Assert(arr, xmlArr) + arr, err = gparser.VarToXmlIndent(``, "root") + gtest.Assert(err == nil, true) + gtest.Assert(arr, xmlArr) + + p = gparser.New(`{"name":"gf"}`) + str, err := p.ToJsonString() + gtest.Assert(err == nil, true) + gtest.Assert(str, `{"name":"gf"}`) + str, err = gparser.VarToJsonString(`{"name":"gf"}`) + gtest.Assert(err == nil, true) + gtest.Assert(str, `{"name":"gf"}`) + + jsonIndentArr := []byte{123, 10, 9, 34, 110, 97, 109, 101, 34, 58, 32, 34, 103, 102, 34, 10, 125} + arr, err = p.ToJsonIndent() + gtest.Assert(err == nil, true) + gtest.Assert(arr, jsonIndentArr) + arr, err = gparser.VarToJsonIndent(`{"name":"gf"}`) + gtest.Assert(err == nil, true) + gtest.Assert(arr, jsonIndentArr) + + str, err = p.ToJsonIndentString() + gtest.Assert(err == nil, true) + gtest.Assert(str, "{\n\t\"name\": \"gf\"\n}") + str, err = gparser.VarToJsonIndentString(`{"name":"gf"}`) + gtest.Assert(err == nil, true) + gtest.Assert(str, "{\n\t\"name\": \"gf\"\n}") + + yamlArr := []byte{124, 50, 10, 10, 32, 32, 110, 97, 109, 101, 58, 103, 102, 10} + p = gparser.New(` +name:gf +`) + arr, err = p.ToYaml() + gtest.Assert(err == nil, true) + gtest.Assert(arr, yamlArr) + arr, err = gparser.VarToYaml(` +name:gf +`) + gtest.Assert(err == nil, true) + gtest.Assert(arr, yamlArr) + + tomlArr := []byte{110, 97, 109, 101, 32, 61, 32, 34, 103, 102, 34, 10} + p = gparser.New(` +name= "gf" +`) + arr, err = p.ToToml() + gtest.Assert(err == nil, true) + gtest.Assert(arr, tomlArr) + arr, err = gparser.VarToToml(` +name= "gf" +`) + gtest.Assert(err == nil, true) + gtest.Assert(arr, tomlArr) + }) +} diff --git a/g/encoding/gparser/gparser_unit_load_test.go b/g/encoding/gparser/gparser_unit_load_test.go index 2702ca05f..993d7cfdf 100644 --- a/g/encoding/gparser/gparser_unit_load_test.go +++ b/g/encoding/gparser/gparser_unit_load_test.go @@ -11,62 +11,62 @@ import ( "github.com/gogf/gf/g/encoding/gparser" "github.com/gogf/gf/g/os/gfile" "github.com/gogf/gf/g/test/gtest" + "io/ioutil" "testing" ) - func Test_Load_JSON(t *testing.T) { - data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) - // JSON - gtest.Case(t, func() { - j, err := gparser.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) - // JSON - gtest.Case(t, func() { - path := "test.json" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gparser.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) + // JSON + gtest.Case(t, func() { + j, err := gparser.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) + // JSON + gtest.Case(t, func() { + path := "test.json" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gparser.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Load_XML(t *testing.T) { - data := []byte(`123v123456789`) - // XML - gtest.Case(t, func() { - j, err := gparser.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("doc.n"), "123456789") - gtest.Assert(j.Get("doc.m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("doc.m.k"), "v") - gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("doc.a.1"), 2) - }) - // XML - gtest.Case(t, func() { - path := "test.xml" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gparser.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("doc.n"), "123456789") - gtest.Assert(j.Get("doc.m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("doc.m.k"), "v") - gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("doc.a.1"), 2) - }) + data := []byte(`123v123456789`) + // XML + gtest.Case(t, func() { + j, err := gparser.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("doc.n"), "123456789") + gtest.Assert(j.Get("doc.m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("doc.m.k"), "v") + gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("doc.a.1"), 2) + }) + // XML + gtest.Case(t, func() { + path := "test.xml" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gparser.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("doc.n"), "123456789") + gtest.Assert(j.Get("doc.m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("doc.m.k"), "v") + gtest.Assert(j.Get("doc.a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("doc.a.1"), 2) + }) // XML gtest.Case(t, func() { @@ -82,13 +82,13 @@ func Test_Load_XML(t *testing.T) { ` j, err := gparser.LoadContent(xml) gtest.Assert(err, nil) - gtest.Assert(j.Get("Output.ipageIndex"), "2") + gtest.Assert(j.Get("Output.ipageIndex"), "2") gtest.Assert(j.Get("Output.itotalRecords"), "GF框架") }) } func Test_Load_YAML1(t *testing.T) { - data := []byte(` + data := []byte(` a: - 1 - 2 @@ -97,78 +97,94 @@ m: k: v "n": 123456789 `) - // YAML - gtest.Case(t, func() { - j, err := gparser.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) - // YAML - gtest.Case(t, func() { - path := "test.yaml" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gparser.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + // YAML + gtest.Case(t, func() { + j, err := gparser.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) + // YAML + gtest.Case(t, func() { + path := "test.yaml" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gparser.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Load_YAML2(t *testing.T) { - data := []byte("i : 123456789") - gtest.Case(t, func() { - j, err := gparser.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("i"), "123456789") - }) + data := []byte("i : 123456789") + gtest.Case(t, func() { + j, err := gparser.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("i"), "123456789") + }) } func Test_Load_TOML1(t *testing.T) { - data := []byte(` + data := []byte(` a = ["1", "2", "3"] n = "123456789" [m] k = "v" `) - // TOML - gtest.Case(t, func() { - j, err := gparser.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) - // TOML - gtest.Case(t, func() { - path := "test.toml" - gfile.PutBinContents(path, data) - defer gfile.Remove(path) - j, err := gparser.Load(path) - gtest.Assert(err, nil) - gtest.Assert(j.Get("n"), "123456789") - gtest.Assert(j.Get("m"), g.Map{"k" : "v"}) - gtest.Assert(j.Get("m.k"), "v") - gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) - gtest.Assert(j.Get("a.1"), 2) - }) + // TOML + gtest.Case(t, func() { + j, err := gparser.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) + // TOML + gtest.Case(t, func() { + path := "test.toml" + gfile.PutBinContents(path, data) + defer gfile.Remove(path) + j, err := gparser.Load(path) + gtest.Assert(err, nil) + gtest.Assert(j.Get("n"), "123456789") + gtest.Assert(j.Get("m"), g.Map{"k": "v"}) + gtest.Assert(j.Get("m.k"), "v") + gtest.Assert(j.Get("a"), g.Slice{1, 2, 3}) + gtest.Assert(j.Get("a.1"), 2) + }) } func Test_Load_TOML2(t *testing.T) { - data := []byte("i=123456789") - gtest.Case(t, func() { - j, err := gparser.LoadContent(data) - gtest.Assert(err, nil) - gtest.Assert(j.Get("i"), "123456789") - }) + data := []byte("i=123456789") + gtest.Case(t, func() { + j, err := gparser.LoadContent(data) + gtest.Assert(err, nil) + gtest.Assert(j.Get("i"), "123456789") + }) +} + +func Test_Load_Nil(t *testing.T) { + gtest.Case(t, func() { + p := gparser.NewUnsafe() + gtest.Assert(p.Value(), nil) + + filePath := gfile.Pwd() + gfile.Separator + "test.json" + ioutil.WriteFile(filePath, []byte("{"), 0644) + defer gfile.Remove(filePath) + _, err := gparser.Load("test.json") + //gtest.Assert(err == nil, false) + t.Log(err) + _, err = gparser.LoadContent("{") + gtest.Assert(err == nil, false) + }) } diff --git a/g/os/gcfg/gcfg_z_unit_test.go b/g/os/gcfg/gcfg_z_unit_test.go index 91d3da165..d5a88c96f 100644 --- a/g/os/gcfg/gcfg_z_unit_test.go +++ b/g/os/gcfg/gcfg_z_unit_test.go @@ -9,14 +9,18 @@ package gcfg_test import ( - "github.com/gogf/gf/g/os/gcfg" - "github.com/gogf/gf/g/os/gfile" - "github.com/gogf/gf/g/test/gtest" - "testing" + "github.com/gogf/gf/g" + "github.com/gogf/gf/g/encoding/gjson" + "github.com/gogf/gf/g/os/gcfg" + "github.com/gogf/gf/g/os/gfile" + "github.com/gogf/gf/g/test/gtest" + "io/ioutil" + "os" + "testing" ) func Test_Basic(t *testing.T) { - config := ` + config := ` v1 = 1 v2 = "true" v3 = "off" @@ -26,58 +30,58 @@ array = [1,2,3] disk = "127.0.0.1:6379,0" cache = "127.0.0.1:6379,1" ` - gtest.Case(t, func() { - path := gcfg.DEFAULT_CONFIG_FILE - err := gfile.PutContents(path, config) - gtest.Assert(err, nil) - defer gfile.Remove(path) + gtest.Case(t, func() { + path := gcfg.DEFAULT_CONFIG_FILE + err := gfile.PutContents(path, config) + gtest.Assert(err, nil) + defer gfile.Remove(path) - c := gcfg.New() - gtest.Assert(c.Get("v1"), 1) - gtest.AssertEQ(c.GetInt("v1"), 1) - gtest.AssertEQ(c.GetInt8("v1"), int8(1)) - gtest.AssertEQ(c.GetInt16("v1"), int16(1)) - gtest.AssertEQ(c.GetInt32("v1"), int32(1)) - gtest.AssertEQ(c.GetInt64("v1"), int64(1)) - gtest.AssertEQ(c.GetUint("v1"), uint(1)) - gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) - gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) - gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) - gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) + c := gcfg.New() + gtest.Assert(c.Get("v1"), 1) + gtest.AssertEQ(c.GetInt("v1"), 1) + gtest.AssertEQ(c.GetInt8("v1"), int8(1)) + gtest.AssertEQ(c.GetInt16("v1"), int16(1)) + gtest.AssertEQ(c.GetInt32("v1"), int32(1)) + gtest.AssertEQ(c.GetInt64("v1"), int64(1)) + gtest.AssertEQ(c.GetUint("v1"), uint(1)) + gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) + gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) + gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) + gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) - gtest.AssertEQ(c.GetVar("v1").String(), "1") - gtest.AssertEQ(c.GetVar("v1").Bool(), true) - gtest.AssertEQ(c.GetVar("v2").String(), "true") - gtest.AssertEQ(c.GetVar("v2").Bool(), true) + gtest.AssertEQ(c.GetVar("v1").String(), "1") + gtest.AssertEQ(c.GetVar("v1").Bool(), true) + gtest.AssertEQ(c.GetVar("v2").String(), "true") + gtest.AssertEQ(c.GetVar("v2").Bool(), true) - gtest.AssertEQ(c.GetString("v1"), "1") - gtest.AssertEQ(c.GetFloat32("v4"), float32(1.23)) - gtest.AssertEQ(c.GetFloat64("v4"), float64(1.23)) - gtest.AssertEQ(c.GetString("v2"), "true") - gtest.AssertEQ(c.GetBool("v2"), true) - gtest.AssertEQ(c.GetBool("v3"), false) + gtest.AssertEQ(c.GetString("v1"), "1") + gtest.AssertEQ(c.GetFloat32("v4"), float32(1.23)) + gtest.AssertEQ(c.GetFloat64("v4"), float64(1.23)) + gtest.AssertEQ(c.GetString("v2"), "true") + gtest.AssertEQ(c.GetBool("v2"), true) + gtest.AssertEQ(c.GetBool("v3"), false) - gtest.AssertEQ(c.Contains("v1"), true) - gtest.AssertEQ(c.Contains("v2"), true) - gtest.AssertEQ(c.Contains("v3"), true) - gtest.AssertEQ(c.Contains("v4"), true) - gtest.AssertEQ(c.Contains("v5"), false) + gtest.AssertEQ(c.Contains("v1"), true) + gtest.AssertEQ(c.Contains("v2"), true) + gtest.AssertEQ(c.Contains("v3"), true) + gtest.AssertEQ(c.Contains("v4"), true) + gtest.AssertEQ(c.Contains("v5"), false) - gtest.AssertEQ(c.GetInts("array"), []int{1,2,3}) - gtest.AssertEQ(c.GetStrings("array"), []string{"1","2","3"}) - gtest.AssertEQ(c.GetArray("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ - "disk" : "127.0.0.1:6379,0", - "cache" : "127.0.0.1:6379,1", - }) - gtest.AssertEQ(c.FilePath(), gfile.Pwd() + gfile.Separator + path) + gtest.AssertEQ(c.GetInts("array"), []int{1, 2, 3}) + gtest.AssertEQ(c.GetStrings("array"), []string{"1", "2", "3"}) + gtest.AssertEQ(c.GetArray("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ + "disk": "127.0.0.1:6379,0", + "cache": "127.0.0.1:6379,1", + }) + gtest.AssertEQ(c.FilePath(), gfile.Pwd()+gfile.Separator+path) - }) + }) } func Test_Content(t *testing.T) { - content := ` + content := ` v1 = 1 v2 = "true" v3 = "off" @@ -87,54 +91,54 @@ array = [1,2,3] disk = "127.0.0.1:6379,0" cache = "127.0.0.1:6379,1" ` - gcfg.SetContent(content) - defer gcfg.ClearContent() + gcfg.SetContent(content) + defer gcfg.ClearContent() - gtest.Case(t, func() { - c := gcfg.New() - gtest.Assert(c.Get("v1"), 1) - gtest.AssertEQ(c.GetInt("v1"), 1) - gtest.AssertEQ(c.GetInt8("v1"), int8(1)) - gtest.AssertEQ(c.GetInt16("v1"), int16(1)) - gtest.AssertEQ(c.GetInt32("v1"), int32(1)) - gtest.AssertEQ(c.GetInt64("v1"), int64(1)) - gtest.AssertEQ(c.GetUint("v1"), uint(1)) - gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) - gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) - gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) - gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) + gtest.Case(t, func() { + c := gcfg.New() + gtest.Assert(c.Get("v1"), 1) + gtest.AssertEQ(c.GetInt("v1"), 1) + gtest.AssertEQ(c.GetInt8("v1"), int8(1)) + gtest.AssertEQ(c.GetInt16("v1"), int16(1)) + gtest.AssertEQ(c.GetInt32("v1"), int32(1)) + gtest.AssertEQ(c.GetInt64("v1"), int64(1)) + gtest.AssertEQ(c.GetUint("v1"), uint(1)) + gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) + gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) + gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) + gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) - gtest.AssertEQ(c.GetVar("v1").String(), "1") - gtest.AssertEQ(c.GetVar("v1").Bool(), true) - gtest.AssertEQ(c.GetVar("v2").String(), "true") - gtest.AssertEQ(c.GetVar("v2").Bool(), true) + gtest.AssertEQ(c.GetVar("v1").String(), "1") + gtest.AssertEQ(c.GetVar("v1").Bool(), true) + gtest.AssertEQ(c.GetVar("v2").String(), "true") + gtest.AssertEQ(c.GetVar("v2").Bool(), true) - gtest.AssertEQ(c.GetString("v1"), "1") - gtest.AssertEQ(c.GetFloat32("v4"), float32(1.23)) - gtest.AssertEQ(c.GetFloat64("v4"), float64(1.23)) - gtest.AssertEQ(c.GetString("v2"), "true") - gtest.AssertEQ(c.GetBool("v2"), true) - gtest.AssertEQ(c.GetBool("v3"), false) + gtest.AssertEQ(c.GetString("v1"), "1") + gtest.AssertEQ(c.GetFloat32("v4"), float32(1.23)) + gtest.AssertEQ(c.GetFloat64("v4"), float64(1.23)) + gtest.AssertEQ(c.GetString("v2"), "true") + gtest.AssertEQ(c.GetBool("v2"), true) + gtest.AssertEQ(c.GetBool("v3"), false) - gtest.AssertEQ(c.Contains("v1"), true) - gtest.AssertEQ(c.Contains("v2"), true) - gtest.AssertEQ(c.Contains("v3"), true) - gtest.AssertEQ(c.Contains("v4"), true) - gtest.AssertEQ(c.Contains("v5"), false) + gtest.AssertEQ(c.Contains("v1"), true) + gtest.AssertEQ(c.Contains("v2"), true) + gtest.AssertEQ(c.Contains("v3"), true) + gtest.AssertEQ(c.Contains("v4"), true) + gtest.AssertEQ(c.Contains("v5"), false) - gtest.AssertEQ(c.GetInts("array"), []int{1,2,3}) - gtest.AssertEQ(c.GetStrings("array"), []string{"1","2","3"}) - gtest.AssertEQ(c.GetArray("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ - "disk" : "127.0.0.1:6379,0", - "cache" : "127.0.0.1:6379,1", - }) - }) + gtest.AssertEQ(c.GetInts("array"), []int{1, 2, 3}) + gtest.AssertEQ(c.GetStrings("array"), []string{"1", "2", "3"}) + gtest.AssertEQ(c.GetArray("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ + "disk": "127.0.0.1:6379,0", + "cache": "127.0.0.1:6379,1", + }) + }) } func Test_SetFileName(t *testing.T) { - config := ` + config := ` { "array": [ 1, @@ -151,59 +155,59 @@ func Test_SetFileName(t *testing.T) { "v4": "1.234" } ` - gtest.Case(t, func() { - path := "config.json" - err := gfile.PutContents(path, config) - gtest.Assert(err, nil) - defer gfile.Remove(path) + gtest.Case(t, func() { + path := "config.json" + err := gfile.PutContents(path, config) + gtest.Assert(err, nil) + defer gfile.Remove(path) - c := gcfg.New() - c.SetFileName(path) - gtest.Assert(c.Get("v1"), 1) - gtest.AssertEQ(c.GetInt("v1"), 1) - gtest.AssertEQ(c.GetInt8("v1"), int8(1)) - gtest.AssertEQ(c.GetInt16("v1"), int16(1)) - gtest.AssertEQ(c.GetInt32("v1"), int32(1)) - gtest.AssertEQ(c.GetInt64("v1"), int64(1)) - gtest.AssertEQ(c.GetUint("v1"), uint(1)) - gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) - gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) - gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) - gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) + c := gcfg.New() + c.SetFileName(path) + gtest.Assert(c.Get("v1"), 1) + gtest.AssertEQ(c.GetInt("v1"), 1) + gtest.AssertEQ(c.GetInt8("v1"), int8(1)) + gtest.AssertEQ(c.GetInt16("v1"), int16(1)) + gtest.AssertEQ(c.GetInt32("v1"), int32(1)) + gtest.AssertEQ(c.GetInt64("v1"), int64(1)) + gtest.AssertEQ(c.GetUint("v1"), uint(1)) + gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) + gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) + gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) + gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) - gtest.AssertEQ(c.GetVar("v1").String(), "1") - gtest.AssertEQ(c.GetVar("v1").Bool(), true) - gtest.AssertEQ(c.GetVar("v2").String(), "true") - gtest.AssertEQ(c.GetVar("v2").Bool(), true) + gtest.AssertEQ(c.GetVar("v1").String(), "1") + gtest.AssertEQ(c.GetVar("v1").Bool(), true) + gtest.AssertEQ(c.GetVar("v2").String(), "true") + gtest.AssertEQ(c.GetVar("v2").Bool(), true) - gtest.AssertEQ(c.GetString("v1"), "1") - gtest.AssertEQ(c.GetFloat32("v4"), float32(1.234)) - gtest.AssertEQ(c.GetFloat64("v4"), float64(1.234)) - gtest.AssertEQ(c.GetString("v2"), "true") - gtest.AssertEQ(c.GetBool("v2"), true) - gtest.AssertEQ(c.GetBool("v3"), false) + gtest.AssertEQ(c.GetString("v1"), "1") + gtest.AssertEQ(c.GetFloat32("v4"), float32(1.234)) + gtest.AssertEQ(c.GetFloat64("v4"), float64(1.234)) + gtest.AssertEQ(c.GetString("v2"), "true") + gtest.AssertEQ(c.GetBool("v2"), true) + gtest.AssertEQ(c.GetBool("v3"), false) - gtest.AssertEQ(c.Contains("v1"), true) - gtest.AssertEQ(c.Contains("v2"), true) - gtest.AssertEQ(c.Contains("v3"), true) - gtest.AssertEQ(c.Contains("v4"), true) - gtest.AssertEQ(c.Contains("v5"), false) + gtest.AssertEQ(c.Contains("v1"), true) + gtest.AssertEQ(c.Contains("v2"), true) + gtest.AssertEQ(c.Contains("v3"), true) + gtest.AssertEQ(c.Contains("v4"), true) + gtest.AssertEQ(c.Contains("v5"), false) - gtest.AssertEQ(c.GetInts("array"), []int{1,2,3}) - gtest.AssertEQ(c.GetStrings("array"), []string{"1","2","3"}) - gtest.AssertEQ(c.GetArray("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ - "disk" : "127.0.0.1:6379,0", - "cache" : "127.0.0.1:6379,1", - }) - gtest.AssertEQ(c.FilePath(), gfile.Pwd() + gfile.Separator + path) + gtest.AssertEQ(c.GetInts("array"), []int{1, 2, 3}) + gtest.AssertEQ(c.GetStrings("array"), []string{"1", "2", "3"}) + gtest.AssertEQ(c.GetArray("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ + "disk": "127.0.0.1:6379,0", + "cache": "127.0.0.1:6379,1", + }) + gtest.AssertEQ(c.FilePath(), gfile.Pwd()+gfile.Separator+path) - }) + }) } func Test_Instance(t *testing.T) { - config := ` + config := ` { "array": [ 1, @@ -220,52 +224,183 @@ func Test_Instance(t *testing.T) { "v4": "1.234" } ` - gtest.Case(t, func() { - path := gcfg.DEFAULT_CONFIG_FILE - err := gfile.PutContents(path, config) - gtest.Assert(err, nil) - defer gfile.Remove(path) + gtest.Case(t, func() { + path := gcfg.DEFAULT_CONFIG_FILE + err := gfile.PutContents(path, config) + gtest.Assert(err, nil) + defer gfile.Remove(path) - c := gcfg.Instance() - gtest.Assert(c.Get("v1"), 1) - gtest.AssertEQ(c.GetInt("v1"), 1) - gtest.AssertEQ(c.GetInt8("v1"), int8(1)) - gtest.AssertEQ(c.GetInt16("v1"), int16(1)) - gtest.AssertEQ(c.GetInt32("v1"), int32(1)) - gtest.AssertEQ(c.GetInt64("v1"), int64(1)) - gtest.AssertEQ(c.GetUint("v1"), uint(1)) - gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) - gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) - gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) - gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) + c := gcfg.Instance() + gtest.Assert(c.Get("v1"), 1) + gtest.AssertEQ(c.GetInt("v1"), 1) + gtest.AssertEQ(c.GetInt8("v1"), int8(1)) + gtest.AssertEQ(c.GetInt16("v1"), int16(1)) + gtest.AssertEQ(c.GetInt32("v1"), int32(1)) + gtest.AssertEQ(c.GetInt64("v1"), int64(1)) + gtest.AssertEQ(c.GetUint("v1"), uint(1)) + gtest.AssertEQ(c.GetUint8("v1"), uint8(1)) + gtest.AssertEQ(c.GetUint16("v1"), uint16(1)) + gtest.AssertEQ(c.GetUint32("v1"), uint32(1)) + gtest.AssertEQ(c.GetUint64("v1"), uint64(1)) - gtest.AssertEQ(c.GetVar("v1").String(), "1") - gtest.AssertEQ(c.GetVar("v1").Bool(), true) - gtest.AssertEQ(c.GetVar("v2").String(), "true") - gtest.AssertEQ(c.GetVar("v2").Bool(), true) + gtest.AssertEQ(c.GetVar("v1").String(), "1") + gtest.AssertEQ(c.GetVar("v1").Bool(), true) + gtest.AssertEQ(c.GetVar("v2").String(), "true") + gtest.AssertEQ(c.GetVar("v2").Bool(), true) - gtest.AssertEQ(c.GetString("v1"), "1") - gtest.AssertEQ(c.GetFloat32("v4"), float32(1.234)) - gtest.AssertEQ(c.GetFloat64("v4"), float64(1.234)) - gtest.AssertEQ(c.GetString("v2"), "true") - gtest.AssertEQ(c.GetBool("v2"), true) - gtest.AssertEQ(c.GetBool("v3"), false) + gtest.AssertEQ(c.GetString("v1"), "1") + gtest.AssertEQ(c.GetFloat32("v4"), float32(1.234)) + gtest.AssertEQ(c.GetFloat64("v4"), float64(1.234)) + gtest.AssertEQ(c.GetString("v2"), "true") + gtest.AssertEQ(c.GetBool("v2"), true) + gtest.AssertEQ(c.GetBool("v3"), false) - gtest.AssertEQ(c.Contains("v1"), true) - gtest.AssertEQ(c.Contains("v2"), true) - gtest.AssertEQ(c.Contains("v3"), true) - gtest.AssertEQ(c.Contains("v4"), true) - gtest.AssertEQ(c.Contains("v5"), false) + gtest.AssertEQ(c.Contains("v1"), true) + gtest.AssertEQ(c.Contains("v2"), true) + gtest.AssertEQ(c.Contains("v3"), true) + gtest.AssertEQ(c.Contains("v4"), true) + gtest.AssertEQ(c.Contains("v5"), false) - gtest.AssertEQ(c.GetInts("array"), []int{1,2,3}) - gtest.AssertEQ(c.GetStrings("array"), []string{"1","2","3"}) - gtest.AssertEQ(c.GetArray("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1","2","3"}) - gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ - "disk" : "127.0.0.1:6379,0", - "cache" : "127.0.0.1:6379,1", - }) - gtest.AssertEQ(c.FilePath(), gfile.Pwd() + gfile.Separator + path) + gtest.AssertEQ(c.GetInts("array"), []int{1, 2, 3}) + gtest.AssertEQ(c.GetStrings("array"), []string{"1", "2", "3"}) + gtest.AssertEQ(c.GetArray("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetInterfaces("array"), []interface{}{"1", "2", "3"}) + gtest.AssertEQ(c.GetMap("redis"), map[string]interface{}{ + "disk": "127.0.0.1:6379,0", + "cache": "127.0.0.1:6379,1", + }) + gtest.AssertEQ(c.FilePath(), gfile.Pwd()+gfile.Separator+path) - }) -} \ No newline at end of file + }) +} + +func TestCfg_New(t *testing.T) { + gtest.Case(t, func() { + os.Setenv("GF_GCFG_PATH", "config") + c := gcfg.New("config.yml") + gtest.Assert(c.Get("name"), nil) + gtest.Assert(c.GetFileName(), "config.yml") + + configPath := gfile.Pwd() + gfile.Separator + "config" + gfile.Mkdir(configPath) + defer gfile.Remove(configPath) + c = gcfg.New("config.yml") + gtest.Assert(c.Get("name"), nil) + + os.Unsetenv("GF_GCFG_PATH") + c = gcfg.New("config.yml") + gtest.Assert(c.Get("name"), nil) + }) +} + +func TestCfg_SetPath(t *testing.T) { + gtest.Case(t, func() { + c := gcfg.New("config.yml") + err := c.SetPath("tmp") + gtest.Assert(err == nil, false) + err = c.SetPath("gcfg.go") + gtest.Assert(err == nil, false) + gtest.Assert(c.Get("name"), nil) + }) +} + +func TestCfg_SetViolenceCheck(t *testing.T) { + gtest.Case(t, func() { + c := gcfg.New("config.yml") + c.SetViolenceCheck(true) + gtest.Assert(c.Get("name"), nil) + }) +} + +func TestCfg_AddPath(t *testing.T) { + gtest.Case(t, func() { + c := gcfg.New("config.yml") + err := c.AddPath("tmp") + gtest.Assert(err == nil, false) + err = c.AddPath("gcfg.go") + gtest.Assert(err == nil, false) + gtest.Assert(c.Get("name"), nil) + }) +} + +func TestCfg_FilePath(t *testing.T) { + gtest.Case(t, func() { + c := gcfg.New("config.yml") + path := c.FilePath("tmp") + gtest.Assert(path, "") + path = c.GetFilePath("tmp") + gtest.Assert(path, "") + }) +} + +func TestCfg_Get(t *testing.T) { + gtest.Case(t, func() { + configPath := gfile.Pwd() + gfile.Separator + "config" + gfile.Mkdir(configPath) + defer gfile.Remove(configPath) + ioutil.WriteFile(configPath+gfile.Separator+"config.yml", []byte("wrong config"), 0644) + c := gcfg.New("config.yml") + gtest.Assert(c.Get("name"), nil) + gtest.Assert(c.GetVar("name").Val(), nil) + gtest.Assert(c.Contains("name"), false) + gtest.Assert(c.GetMap("name"), nil) + gtest.Assert(c.GetArray("name"), nil) + gtest.Assert(c.GetString("name"), "") + gtest.Assert(c.GetStrings("name"), nil) + gtest.Assert(c.GetInterfaces("name"), nil) + gtest.Assert(c.GetBool("name"), false) + gtest.Assert(c.GetFloat32("name"), 0) + gtest.Assert(c.GetFloat64("name"), 0) + gtest.Assert(c.GetFloats("name"), nil) + gtest.Assert(c.GetInt("name"), 0) + gtest.Assert(c.GetInt8("name"), 0) + gtest.Assert(c.GetInt16("name"), 0) + gtest.Assert(c.GetInt32("name"), 0) + gtest.Assert(c.GetInt64("name"), 0) + gtest.Assert(c.GetInts("name"), nil) + gtest.Assert(c.GetUint("name"), 0) + gtest.Assert(c.GetUint8("name"), 0) + gtest.Assert(c.GetUint16("name"), 0) + gtest.Assert(c.GetUint32("name"), 0) + gtest.Assert(c.GetUint64("name"), 0) + gtest.Assert(c.GetTime("name").Format("2006-01-02"), "0001-01-01") + gtest.Assert(c.GetGTime("name"), nil) + gtest.Assert(c.GetDuration("name").String(), "0s") + name := struct { + Name string + }{} + gtest.Assert(c.GetToStruct("name", &name) == nil, false) + + c.Reload() + c.Clear() + + arr, _ := gjson.Encode(g.Map{"name": "gf", "time": "2019-06-12", "person": g.Map{"name": "gf"}, "floats": g.Slice{1, 2, 3}}) + ioutil.WriteFile(configPath+gfile.Separator+"config.yml", arr, 0644) + gtest.Assert(c.GetTime("time").Format("2006-01-02"), "2019-06-12") + gtest.Assert(c.GetGTime("time").Format("Y-m-d"), "2019-06-12") + gtest.Assert(c.GetDuration("time").String(), "0s") + t.Log(c.GetString("person")) + err := c.GetToStruct("person", &name) + gtest.Assert(err == nil, true) + gtest.Assert(name.Name, "gf") + gtest.Assert(c.GetFloats("floats") == nil, false) + }) +} + +func TestCfg_Instance(t *testing.T) { + gtest.Case(t, func() { + gtest.Assert(gcfg.Instance("gf") != nil, true) + }) +} + +func TestCfg_Config(t *testing.T) { + gtest.Case(t, func() { + gcfg.SetContent("gf", "config.yml") + gtest.Assert(gcfg.GetContent("config.yml"), "gf") + gcfg.SetContent("gf1", "config.yml") + gtest.Assert(gcfg.GetContent("config.yml"), "gf1") + gcfg.RemoveConfig("config.yml") + gcfg.ClearContent() + gtest.Assert(gcfg.GetContent("name"), "") + }) +}