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  }