github.com/gogf/gf@v1.16.9/encoding/gparser/gparser_unit_load_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 gparser_test 8 9 import ( 10 "io/ioutil" 11 "testing" 12 13 "github.com/gogf/gf/encoding/gparser" 14 "github.com/gogf/gf/frame/g" 15 "github.com/gogf/gf/os/gfile" 16 "github.com/gogf/gf/test/gtest" 17 ) 18 19 func Test_Load_JSON(t *testing.T) { 20 data := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`) 21 // JSON 22 gtest.C(t, func(t *gtest.T) { 23 j, err := gparser.LoadContent(data) 24 t.Assert(err, nil) 25 t.Assert(j.Get("n"), "123456789") 26 t.Assert(j.Get("m"), g.Map{"k": "v"}) 27 t.Assert(j.Get("m.k"), "v") 28 t.Assert(j.Get("a"), g.Slice{1, 2, 3}) 29 t.Assert(j.Get("a.1"), 2) 30 }) 31 // JSON 32 gtest.C(t, func(t *gtest.T) { 33 path := "test.json" 34 gfile.PutBytes(path, data) 35 defer gfile.Remove(path) 36 j, err := gparser.Load(path) 37 t.Assert(err, nil) 38 t.Assert(j.Get("n"), "123456789") 39 t.Assert(j.Get("m"), g.Map{"k": "v"}) 40 t.Assert(j.Get("m.k"), "v") 41 t.Assert(j.Get("a"), g.Slice{1, 2, 3}) 42 t.Assert(j.Get("a.1"), 2) 43 }) 44 } 45 46 func Test_Load_XML(t *testing.T) { 47 data := []byte(`<doc><a>1</a><a>2</a><a>3</a><m><k>v</k></m><n>123456789</n></doc>`) 48 // XML 49 gtest.C(t, func(t *gtest.T) { 50 j, err := gparser.LoadContent(data) 51 t.Assert(err, nil) 52 t.Assert(j.Get("doc.n"), "123456789") 53 t.Assert(j.Get("doc.m"), g.Map{"k": "v"}) 54 t.Assert(j.Get("doc.m.k"), "v") 55 t.Assert(j.Get("doc.a"), g.Slice{"1", "2", "3"}) 56 t.Assert(j.Get("doc.a.1"), 2) 57 }) 58 // XML 59 gtest.C(t, func(t *gtest.T) { 60 path := "test.xml" 61 gfile.PutBytes(path, data) 62 defer gfile.Remove(path) 63 j, err := gparser.Load(path) 64 t.Assert(err, nil) 65 t.Assert(j.Get("doc.n"), "123456789") 66 t.Assert(j.Get("doc.m"), g.Map{"k": "v"}) 67 t.Assert(j.Get("doc.m.k"), "v") 68 t.Assert(j.Get("doc.a"), g.Slice{"1", "2", "3"}) 69 t.Assert(j.Get("doc.a.1"), 2) 70 }) 71 72 // XML 73 gtest.C(t, func(t *gtest.T) { 74 xml := `<?xml version="1.0"?> 75 76 <Output type="o"> 77 <itotalSize>0</itotalSize> 78 <ipageSize>1</ipageSize> 79 <ipageIndex>2</ipageIndex> 80 <itotalRecords>GF框架</itotalRecords> 81 <nworkOrderDtos/> 82 <nworkOrderFrontXML/> 83 </Output>` 84 j, err := gparser.LoadContent(xml) 85 t.Assert(err, nil) 86 t.Assert(j.Get("Output.ipageIndex"), "2") 87 t.Assert(j.Get("Output.itotalRecords"), "GF框架") 88 }) 89 } 90 91 func Test_Load_YAML1(t *testing.T) { 92 data := []byte(` 93 a: 94 - 1 95 - 2 96 - 3 97 m: 98 k: v 99 "n": 123456789 100 `) 101 // YAML 102 gtest.C(t, func(t *gtest.T) { 103 j, err := gparser.LoadContent(data) 104 t.Assert(err, nil) 105 t.Assert(j.Get("n"), "123456789") 106 t.Assert(j.Get("m"), g.Map{"k": "v"}) 107 t.Assert(j.Get("m.k"), "v") 108 t.Assert(j.Get("a"), g.Slice{1, 2, 3}) 109 t.Assert(j.Get("a.1"), 2) 110 }) 111 // YAML 112 gtest.C(t, func(t *gtest.T) { 113 path := "test.yaml" 114 gfile.PutBytes(path, data) 115 defer gfile.Remove(path) 116 j, err := gparser.Load(path) 117 t.Assert(err, nil) 118 t.Assert(j.Get("n"), "123456789") 119 t.Assert(j.Get("m"), g.Map{"k": "v"}) 120 t.Assert(j.Get("m.k"), "v") 121 t.Assert(j.Get("a"), g.Slice{1, 2, 3}) 122 t.Assert(j.Get("a.1"), 2) 123 }) 124 } 125 126 func Test_Load_YAML2(t *testing.T) { 127 data := []byte("i : 123456789") 128 gtest.C(t, func(t *gtest.T) { 129 j, err := gparser.LoadContent(data) 130 t.Assert(err, nil) 131 t.Assert(j.Get("i"), "123456789") 132 }) 133 } 134 135 func Test_Load_TOML1(t *testing.T) { 136 data := []byte(` 137 a = ["1", "2", "3"] 138 n = "123456789" 139 140 [m] 141 k = "v" 142 `) 143 // TOML 144 gtest.C(t, func(t *gtest.T) { 145 j, err := gparser.LoadContent(data) 146 t.Assert(err, nil) 147 t.Assert(j.Get("n"), "123456789") 148 t.Assert(j.Get("m"), g.Map{"k": "v"}) 149 t.Assert(j.Get("m.k"), "v") 150 t.Assert(j.Get("a"), g.Slice{"1", "2", "3"}) 151 t.Assert(j.Get("a.1"), 2) 152 }) 153 // TOML 154 gtest.C(t, func(t *gtest.T) { 155 path := "test.toml" 156 gfile.PutBytes(path, data) 157 defer gfile.Remove(path) 158 j, err := gparser.Load(path) 159 t.Assert(err, nil) 160 t.Assert(j.Get("n"), "123456789") 161 t.Assert(j.Get("m"), g.Map{"k": "v"}) 162 t.Assert(j.Get("m.k"), "v") 163 t.Assert(j.Get("a"), g.Slice{"1", "2", "3"}) 164 t.Assert(j.Get("a.1"), 2) 165 }) 166 } 167 168 func Test_Load_TOML2(t *testing.T) { 169 data := []byte("i=123456789") 170 gtest.C(t, func(t *gtest.T) { 171 j, err := gparser.LoadContent(data) 172 t.Assert(err, nil) 173 t.Assert(j.Get("i"), "123456789") 174 }) 175 } 176 177 func Test_Load_Nil(t *testing.T) { 178 gtest.C(t, func(t *gtest.T) { 179 p := gparser.New(nil) 180 t.Assert(p.Value(), nil) 181 file := "test22222.json" 182 filePath := gfile.Pwd() + gfile.Separator + file 183 ioutil.WriteFile(filePath, []byte("{"), 0644) 184 defer gfile.Remove(filePath) 185 _, err := gparser.Load(file) 186 t.AssertNE(err, nil) 187 _, err = gparser.LoadContent("{") 188 t.AssertNE(err, nil) 189 }) 190 }