github.com/gogf/gf@v1.16.9/encoding/gtoml/gtoml_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  package gtoml_test
     7  
     8  import (
     9  	"testing"
    10  
    11  	"github.com/gogf/gf/encoding/gparser"
    12  	"github.com/gogf/gf/encoding/gtoml"
    13  	"github.com/gogf/gf/test/gtest"
    14  )
    15  
    16  var tomlStr string = `
    17  # 模板引擎目录
    18  viewpath = "/home/www/templates/"
    19  # MySQL数据库配置
    20  [redis]
    21      disk  = "127.0.0.1:6379,0"
    22      cache = "127.0.0.1:6379,1"
    23  `
    24  
    25  var tomlErr string = `
    26  # 模板引擎目录
    27  viewpath = "/home/www/templates/"
    28  # MySQL数据库配置
    29  [redis]
    30  dd = 11
    31  [redis]
    32      disk  = "127.0.0.1:6379,0"
    33      cache = "127.0.0.1:6379,1"
    34  `
    35  
    36  func TestEncode(t *testing.T) {
    37  	gtest.C(t, func(t *gtest.T) {
    38  		m := make(map[string]string)
    39  		m["toml"] = tomlStr
    40  		res, err := gtoml.Encode(m)
    41  		if err != nil {
    42  			t.Errorf("encode failed. %v", err)
    43  			return
    44  		}
    45  
    46  		p, err := gparser.LoadContent(res)
    47  		if err != nil {
    48  			t.Errorf("parser failed. %v", err)
    49  			return
    50  		}
    51  
    52  		t.Assert(p.GetString("toml"), tomlStr)
    53  	})
    54  
    55  	gtest.C(t, func(t *gtest.T) {
    56  		_, err := gtoml.Encode(tomlErr)
    57  		if err == nil {
    58  			t.Errorf("encode should be failed. %v", err)
    59  			return
    60  		}
    61  	})
    62  }
    63  
    64  func TestDecode(t *testing.T) {
    65  	gtest.C(t, func(t *gtest.T) {
    66  		m := make(map[string]string)
    67  		m["toml"] = tomlStr
    68  		res, err := gtoml.Encode(m)
    69  		if err != nil {
    70  			t.Errorf("encode failed. %v", err)
    71  			return
    72  		}
    73  
    74  		decodeStr, err := gtoml.Decode(res)
    75  		if err != nil {
    76  			t.Errorf("decode failed. %v", err)
    77  			return
    78  		}
    79  
    80  		t.Assert(decodeStr.(map[string]interface{})["toml"], tomlStr)
    81  
    82  		decodeStr1 := make(map[string]interface{})
    83  		err = gtoml.DecodeTo(res, &decodeStr1)
    84  		if err != nil {
    85  			t.Errorf("decodeTo failed. %v", err)
    86  			return
    87  		}
    88  		t.Assert(decodeStr1["toml"], tomlStr)
    89  	})
    90  
    91  	gtest.C(t, func(t *gtest.T) {
    92  		_, err := gtoml.Decode([]byte(tomlErr))
    93  		if err == nil {
    94  			t.Errorf("decode failed. %v", err)
    95  			return
    96  		}
    97  
    98  		decodeStr1 := make(map[string]interface{})
    99  		err = gtoml.DecodeTo([]byte(tomlErr), &decodeStr1)
   100  		if err == nil {
   101  			t.Errorf("decodeTo failed. %v", err)
   102  			return
   103  		}
   104  	})
   105  }
   106  
   107  func TestToJson(t *testing.T) {
   108  	gtest.C(t, func(t *gtest.T) {
   109  		m := make(map[string]string)
   110  		m["toml"] = tomlStr
   111  		res, err := gtoml.Encode(m)
   112  		if err != nil {
   113  			t.Errorf("encode failed. %v", err)
   114  			return
   115  		}
   116  
   117  		jsonToml, err := gtoml.ToJson(res)
   118  		if err != nil {
   119  			t.Errorf("ToJson failed. %v", err)
   120  			return
   121  		}
   122  
   123  		p, err := gparser.LoadContent(res)
   124  		if err != nil {
   125  			t.Errorf("parser failed. %v", err)
   126  			return
   127  		}
   128  		expectJson, err := p.ToJson()
   129  		if err != nil {
   130  			t.Errorf("parser ToJson failed. %v", err)
   131  			return
   132  		}
   133  		t.Assert(jsonToml, expectJson)
   134  	})
   135  
   136  	gtest.C(t, func(t *gtest.T) {
   137  		_, err := gtoml.ToJson([]byte(tomlErr))
   138  		if err == nil {
   139  			t.Errorf("ToJson failed. %v", err)
   140  			return
   141  		}
   142  	})
   143  }