package service
import (
"encoding/json"
"testing"
"github.com/alibabacloud-go/tea/tea"
"github.com/alibabacloud-go/tea/utils"
)
type validatorTest struct {
Num *int `json:"num" require:"true"`
Str *string `json:"str" pattern:"^[a-d]*$" maxLength:"4"`
Test *errLength `json:"test"`
List []*string `json:"list" pattern:"^[a-d]*$" maxLength:"4"`
}
type GetBucketLocationResponse struct {
RequestId *string `json:"x-oss-request-id" xml:"x-oss-request-id" require:"true"`
LocationConstraint *string `json:"LocationConstraint" xml:"LocationConstraint" require:"true"`
}
type errLength struct {
Num *int `json:"num" maxLength:"a"`
}
func Test_ParseXml(t *testing.T) {
str := `
10`
result := ParseXml(tea.String(str), new(validatorTest))
utils.AssertEqual(t, 1, len(result))
str = `
`
result = ParseXml(tea.String(str), new(validatorTest))
utils.AssertEqual(t, 1, len(result))
xmlVal := `
zhangSan
23
male
`
res := ParseXml(tea.String(xmlVal), nil)
utils.AssertEqual(t, 1, len(res))
}
func Test_ToXML(t *testing.T) {
val := map[string]interface{}{
"oss": map[string]interface{}{
"key": "value",
},
}
str := ToXML(val)
utils.AssertEqual(t, "value", tea.StringValue(str))
}
func Test_getStartElement(t *testing.T) {
xmlVal := `
zhangSan
23
male
`
str := getStartElement([]byte(xmlVal))
utils.AssertEqual(t, "students", str)
xmlVal = `
zhangSan
23
male
`
str = getStartElement([]byte(xmlVal))
utils.AssertEqual(t, "", str)
}
func Test_mapToXML(t *testing.T) {
obj := map[string]interface{}{
"struct": map[string]interface{}{
"param1": "value1",
"list": []string{"value2", "value3"},
"listMap": []map[string]interface{}{
map[string]interface{}{
"param2": "value2",
},
map[string]interface{}{
"param3": "value3",
},
},
"listMapString": []map[string]string{
map[string]string{
"param4": "value4",
},
map[string]string{
"param5": "value5",
},
},
"mapString": map[string]string{
"param6": "value6",
},
"listInterface": []interface{}{"10", 20},
},
}
byt, _ := json.Marshal(obj)
obj1 := make(map[string]interface{})
json.Unmarshal(byt, &obj1)
xml := mapToXML(obj1)
utils.AssertContains(t, xml, `10`)
}
func Test_XmlUnmarshal(t *testing.T) {
result := new(GetBucketLocationResponse)
xmlVal := `
oss-cn-hangzhou`
out, err := xmlUnmarshal([]byte(xmlVal), result)
utils.AssertNil(t, err)
byt, _ := json.Marshal(out)
utils.AssertEqual(t, `"oss-cn-hangzhou"`, string(byt))
}