1
0
mirror of https://github.com/golang/go synced 2024-11-23 20:00:04 -07:00

encoding/xml: add more marshalTests tests.

There are no behavior changes in this CL, only specifying the status
quo. A follow-up CL, https://go-review.googlesource.com/#/c/5910/, will
change marshaling behavior.

Change-Id: Ib3f4d62e8c4758da2f11a6d26b285c10d3b0d98a
Reviewed-on: https://go-review.googlesource.com/6040
Reviewed-by: Andrew Gerrand <adg@golang.org>
This commit is contained in:
Nigel Tao 2015-02-26 10:40:15 +11:00
parent 59e546633d
commit b351e1decf

View File

@ -617,6 +617,69 @@ var marshalTests = []struct {
`</service>`,
MarshalOnly: true,
},
{
Value: &struct {
XMLName struct{} `xml:"space top"`
A string `xml:"x>a"`
B string `xml:"x>b"`
C string `xml:"space x>c"`
C1 string `xml:"space1 x>c"`
D1 string `xml:"space1 x>d"`
}{
A: "a",
B: "b",
C: "c",
C1: "c1",
D1: "d1",
},
ExpectXML: `<top xmlns="space">` +
`<x xmlns=""><a>a</a><b>b</b><c xmlns="space">c</c>` +
`<c xmlns="space1">c1</c>` +
`<d xmlns="space1">d1</d>` +
`</x>` +
`</top>`,
},
{
Value: &struct {
XMLName Name
A string `xml:"x>a"`
B string `xml:"x>b"`
C string `xml:"space x>c"`
C1 string `xml:"space1 x>c"`
D1 string `xml:"space1 x>d"`
}{
XMLName: Name{
Space: "space0",
Local: "top",
},
A: "a",
B: "b",
C: "c",
C1: "c1",
D1: "d1",
},
ExpectXML: `<top xmlns="space0">` +
`<x xmlns=""><a>a</a><b>b</b>` +
`<c xmlns="space">c</c>` +
`<c xmlns="space1">c1</c>` +
`<d xmlns="space1">d1</d>` +
`</x>` +
`</top>`,
},
{
Value: &struct {
XMLName struct{} `xml:"top"`
B string `xml:"space x>b"`
B1 string `xml:"space1 x>b"`
}{
B: "b",
B1: "b1",
},
ExpectXML: `<top>` +
`<x><b xmlns="space">b</b>` +
`<b xmlns="space1">b1</b></x>` +
`</top>`,
},
// Test struct embedding
{
@ -933,7 +996,7 @@ func TestMarshal(t *testing.T) {
}
data, err := Marshal(test.Value)
if err != nil {
t.Errorf("#%d: Error: %s", idx, err)
t.Errorf("#%d: marshal(%#v): %s", idx, test.Value, err)
continue
}
if got, want := string(data), test.ExpectXML; got != want {
@ -1037,6 +1100,14 @@ func TestUnmarshal(t *testing.T) {
if _, ok := test.Value.(*Plain); ok {
continue
}
if test.ExpectXML == `<top>`+
`<x><b xmlns="space">b</b>`+
`<b xmlns="space1">b1</b></x>`+
`</top>` {
// TODO(rogpeppe): re-enable this test in
// https://go-review.googlesource.com/#/c/5910/
continue
}
vt := reflect.TypeOf(test.Value)
dest := reflect.New(vt.Elem()).Interface()