goProject/trunk/goutil/configUtil/xmlConfig_test.go
皮蛋13361098506 1b77f62820 初始化项目
2025-01-06 16:01:02 +08:00

322 lines
6.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package configUtil
import (
"fmt"
"testing"
"goutil/xmlUtil"
)
// bool值读取测试
func TestBool(t *testing.T) {
xmlConfigData, errMsg := getxmlConfigData()
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
var ispost bool
ispost, errMsg = xmlConfigData.Bool("html/body", "IsPost")
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
fmt.Println("读取到的值:", ispost)
if ispost == false {
t.Error("html/body的isPost读取错误")
t.Fail()
return
}
ispost = xmlConfigData.DefaultBool("html/body", "IsPost", false)
if ispost == false {
t.Error("html/body的isPost读取错误")
t.Fail()
}
}
// int值读取测试
func TestInt(t *testing.T) {
xmlConfigData, errMsg := getxmlConfigData()
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
var id int
id, errMsg = xmlConfigData.Int("html/body/ul/li/a[@id=1]", "id")
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
if id != 1 {
t.Errorf("html/body的isPost读取错误读取到的值:%v", id)
t.Fail()
return
}
id = xmlConfigData.DefaultInt("html/body", "id", 2)
if id != 2 {
t.Error("TestInt html/body的id读取错误")
t.Fail()
}
}
// int64值读取测试
func TestInt64(t *testing.T) {
xmlConfigData, errMsg := getxmlConfigData()
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
var id int64
id, errMsg = xmlConfigData.Int64("html/body/ul/li/a[@id=1]", "id")
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
if id != 1 {
t.Errorf("TestInt64 html/body/ul/li/a[@id=1]的id读取错误读取到的值:%v", id)
t.Fail()
return
}
id = xmlConfigData.DefaultInt64("html/body", "id", 2)
if id != 2 {
t.Error("TestInt64 html/body的id读取错误")
t.Fail()
}
}
// Float值读取测试
func TestFloat(t *testing.T) {
xmlConfigData, errMsg := getxmlConfigData()
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
var id float64
id, errMsg = xmlConfigData.Float("html/body/ul/li/a[@id=1]", "dd")
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
if id != 1.1 {
t.Errorf("TestFloat html/body/ul/li/a[@id=1]的id读取错误读取到的值:%v", id)
t.Fail()
return
}
id = xmlConfigData.DefaultFloat("html/body", "id", 2)
if id != 2 {
t.Error("TestFloat html/body的id读取错误")
t.Fail()
}
}
// 字符串读取测试
func TestString(t *testing.T) {
xmlConfigData, errMsg := getxmlConfigData()
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
var id string
id, errMsg = xmlConfigData.String("html/body/ul/li/a[@id=1]", "dd")
if errMsg != nil {
t.Error(errMsg)
t.Fail()
return
}
if id != "1.1" {
t.Errorf("TestString html/body/ul/li/a[@id=1]的id读取错误读取到的值:%v", id)
t.Fail()
return
}
id = xmlConfigData.DefaultString("html/body", "id", "2")
if id != "2" {
t.Error("TestString html/body的id读取错误")
t.Fail()
}
}
type HelloStruct struct {
// 连接字符串
ConnectionString string
// 最大开启连接数量
MaxOpenConns int `xml:",attr"`
// 最大空闲连接数量
MaxIdleConns int `xml:",attr"`
}
func (this *HelloStruct) Equal(other *HelloStruct) bool {
return this.MaxOpenConns == other.MaxOpenConns && this.MaxIdleConns == other.MaxIdleConns
}
func TestUnmarshal(t *testing.T) {
data, _ := getxmlConfigData2(`
<DBConnection>
<GameServerCenterDB MaxOpenConns="10" MaxIdleConns="5">
<![CDATA[
root:moqikaka3312@tcp(10.1.0.10:3312)/2_gsc_develop?charset=utf8&parseTime=true&loc=Local&timeout=60s
]]>
</GameServerCenterDB>
</DBConnection>
`)
val := &HelloStruct{}
err := data.Unmarshal("/DBConnection/GameServerCenterDB", val)
if err != nil {
t.Error(err)
return
}
want := &HelloStruct{
ConnectionString: "root:moqikaka3312@tcp(10.1.0.10:3312)/2_gsc_develop?charset=utf8&parseTime=true&loc=Local&timeout=60s",
MaxOpenConns: 10,
MaxIdleConns: 5,
}
if want.Equal(val) == false {
t.Errorf("Expected %v, but now got %v", want, val)
}
}
type ConnsNum int
type Hello2Struct struct {
// 连接字符串
ConnectionString string
// 最大开启连接数量
MaxOpenConns ConnsNum
// 最大空闲连接数量
MaxIdleConns ConnsNum
}
func (this *Hello2Struct) Equal(other *Hello2Struct) bool {
return this.MaxOpenConns == other.MaxOpenConns && this.MaxIdleConns == other.MaxIdleConns
}
func TestUnmarshal2(t *testing.T) {
data, _ := getxmlConfigData2(`
<DBConnection>
<GameServerCenterDB MaxOpenConns="10" MaxIdleConns="5">
<![CDATA[
root:moqikaka3312@tcp(10.1.0.10:3312)/2_gsc_develop?charset=utf8&parseTime=true&loc=Local&timeout=60s
]]>
</GameServerCenterDB>
</DBConnection>
`)
val := &Hello2Struct{}
err := data.Unmarshal("/DBConnection/GameServerCenterDB", val)
if err != nil {
t.Error(err)
return
}
want := &Hello2Struct{
ConnectionString: "root:moqikaka3312@tcp(10.1.0.10:3312)/2_gsc_develop?charset=utf8&parseTime=true&loc=Local&timeout=60s",
MaxOpenConns: 10,
MaxIdleConns: 5,
}
if want.Equal(val) == false {
t.Errorf("Expected %v, but now got %v", want, val)
}
}
func TestUnmarshal3(t *testing.T) {
data, _ := getxmlConfigData2(`
<DBConnection>
<GameServerCenterDB MaxOpenConns="10">
<![CDATA[
root:moqikaka3312@tcp(10.1.0.10:3312)/2_gsc_develop?charset=utf8&parseTime=true&loc=Local&timeout=60s
]]>
</GameServerCenterDB>
</DBConnection>
`)
val := &HelloStruct{}
err := data.Unmarshal("/DBConnection/GameServerCenterDB", val)
if err != nil {
t.Error(err)
return
}
want := &HelloStruct{
ConnectionString: "root:moqikaka3312@tcp(10.1.0.10:3312)/2_gsc_develop?charset=utf8&parseTime=true&loc=Local&timeout=60s",
MaxOpenConns: 10,
MaxIdleConns: 0,
}
if want.Equal(val) == false {
t.Errorf("Expected %v, but now got %v", want, val)
}
}
func getxmlConfigData() (xmlConfigData *XmlConfig, errMsg error) {
content := `
<html lang="en">
<head>
<title>Hello</title>
<meta name="language" content="en"/>
</head>
<body IsPost='true'>
<h1> This is a H1 </h1>
<ul>
<li><a id="1" dd='1.1' href="/">Home</a></li>
<li><a id="2" href="/about">about</a></li>
<li><a id="3" href="/account">login</a></li>
<li></li>
</ul>
<p>
Hello,This is an example for gxpath.
</p>
<footer>footer script</footer>
</body>
</html>
`
var root *xmlUtil.Node
root, errMsg = xmlUtil.LoadFromString(content)
if errMsg == nil {
xmlConfigData = NewXmlConfig()
xmlConfigData.LoadFromXmlNode(root)
}
return
}
func getxmlConfigData2(xml string) (xmlConfigData *XmlConfig, errMsg error) {
var root *xmlUtil.Node
root, errMsg = xmlUtil.LoadFromString(xml)
if errMsg == nil {
xmlConfigData = NewXmlConfig()
xmlConfigData.LoadFromXmlNode(root)
}
return
}