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(` `) 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(` `) 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(` `) 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 := ` Hello

This is a H1

Hello,This is an example for gxpath.

` 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 }