github.com/gogf/gf@v1.16.9/encoding/gini/gini_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package gini_test 8 9 import ( 10 "github.com/gogf/gf/encoding/gini" 11 "github.com/gogf/gf/encoding/gjson" 12 "github.com/gogf/gf/test/gtest" 13 "testing" 14 ) 15 16 var iniContent = ` 17 18 ;注释 19 aa=bb 20 [addr] 21 #注释 22 ip = 127.0.0.1 23 port=9001 24 enable=true 25 26 [DBINFO] 27 type=mysql 28 user=root 29 password=password 30 [键] 31 呵呵=值 32 33 ` 34 35 func TestDecode(t *testing.T) { 36 gtest.C(t, func(t *gtest.T) { 37 res, err := gini.Decode([]byte(iniContent)) 38 if err != nil { 39 gtest.Fatal(err) 40 } 41 t.Assert(res["addr"].(map[string]interface{})["ip"], "127.0.0.1") 42 t.Assert(res["addr"].(map[string]interface{})["port"], "9001") 43 t.Assert(res["DBINFO"].(map[string]interface{})["user"], "root") 44 t.Assert(res["DBINFO"].(map[string]interface{})["type"], "mysql") 45 t.Assert(res["键"].(map[string]interface{})["呵呵"], "值") 46 }) 47 48 gtest.C(t, func(t *gtest.T) { 49 errContent := ` 50 a = b 51 ` 52 _, err := gini.Decode([]byte(errContent)) 53 if err == nil { 54 gtest.Fatal(err) 55 } 56 }) 57 } 58 59 func TestEncode(t *testing.T) { 60 gtest.C(t, func(t *gtest.T) { 61 iniMap, err := gini.Decode([]byte(iniContent)) 62 if err != nil { 63 gtest.Fatal(err) 64 } 65 66 iniStr, err := gini.Encode(iniMap) 67 if err != nil { 68 gtest.Fatal(err) 69 } 70 71 res, err := gini.Decode(iniStr) 72 if err != nil { 73 gtest.Fatal(err) 74 } 75 76 t.Assert(res["addr"].(map[string]interface{})["ip"], "127.0.0.1") 77 t.Assert(res["addr"].(map[string]interface{})["port"], "9001") 78 t.Assert(res["DBINFO"].(map[string]interface{})["user"], "root") 79 t.Assert(res["DBINFO"].(map[string]interface{})["type"], "mysql") 80 81 }) 82 } 83 84 func TestToJson(t *testing.T) { 85 gtest.C(t, func(t *gtest.T) { 86 jsonStr, err := gini.ToJson([]byte(iniContent)) 87 if err != nil { 88 gtest.Fatal(err) 89 } 90 91 json, err := gjson.LoadContent(jsonStr) 92 if err != nil { 93 gtest.Fatal(err) 94 } 95 96 iniMap, err := gini.Decode([]byte(iniContent)) 97 t.Assert(err, nil) 98 99 t.Assert(iniMap["addr"].(map[string]interface{})["ip"], json.GetString("addr.ip")) 100 t.Assert(iniMap["addr"].(map[string]interface{})["port"], json.GetString("addr.port")) 101 t.Assert(iniMap["DBINFO"].(map[string]interface{})["user"], json.GetString("DBINFO.user")) 102 t.Assert(iniMap["DBINFO"].(map[string]interface{})["type"], json.GetString("DBINFO.type")) 103 }) 104 }