1
0
mirror of https://github.com/golang/go synced 2024-11-19 20:54:39 -07:00

encoding/xml: add docs and tests for bool whitespace

Whitespace is ignored in bool values and attrs, but there are no tests
capturing this behavior.

Change-Id: I7a7249de4886f510869e91de937e69b83c3254c8
Reviewed-on: https://go-review.googlesource.com/73890
Reviewed-by: Sam Whited <sam@samwhited.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Sam Whited <sam@samwhited.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Leigh McCulloch 2017-10-27 07:04:49 +00:00 committed by Ian Lance Taylor
parent 541bf9f8ea
commit 776cdefc07
2 changed files with 59 additions and 1 deletions

View File

@ -107,7 +107,8 @@ import (
// to the newly created value. // to the newly created value.
// //
// Unmarshal maps an XML element or attribute value to a bool by // Unmarshal maps an XML element or attribute value to a bool by
// setting it to the boolean value represented by the string. // setting it to the boolean value represented by the string. Whitespace
// is trimmed and ignored.
// //
// Unmarshal maps an XML element or attribute value to an integer or // Unmarshal maps an XML element or attribute value to an integer or
// floating-point field by setting the field to the result of // floating-point field by setting the field to the result of

View File

@ -908,3 +908,60 @@ func TestUnmarshalEmptyValues(t *testing.T) {
t.Fatalf("populated: Unmarshal:\nhave: %#+v\nwant: %#+v", v, want) t.Fatalf("populated: Unmarshal:\nhave: %#+v\nwant: %#+v", v, want)
} }
} }
type WhitespaceValuesParent struct {
BFalse bool
BTrue bool
}
const whitespaceValuesXML = `
<WhitespaceValuesParent>
<BFalse> false </BFalse>
<BTrue> true </BTrue>
</WhitespaceValuesParent>
`
// golang.org/issues/22146
func TestUnmarshalWhitespaceValues(t *testing.T) {
v := WhitespaceValuesParent{}
if err := Unmarshal([]byte(whitespaceValuesXML), &v); err != nil {
t.Fatalf("whitespace values: Unmarshal failed: got %v", err)
}
want := WhitespaceValuesParent{
BFalse: false,
BTrue: true,
}
if v != want {
t.Fatalf("whitespace values: Unmarshal:\nhave: %#+v\nwant: %#+v", v, want)
}
}
type WhitespaceAttrsParent struct {
BFalse bool `xml:",attr"`
BTrue bool `xml:",attr"`
}
const whitespaceAttrsXML = `
<WhitespaceAttrsParent
BFalse=" false "
BTrue=" true "
>
</WhitespaceAttrsParent>
`
// golang.org/issues/22146
func TestUnmarshalWhitespaceAttrs(t *testing.T) {
v := WhitespaceAttrsParent{}
if err := Unmarshal([]byte(whitespaceAttrsXML), &v); err != nil {
t.Fatalf("whitespace attrs: Unmarshal failed: got %v", err)
}
want := WhitespaceAttrsParent{
BFalse: false,
BTrue: true,
}
if v != want {
t.Fatalf("whitespace attrs: Unmarshal:\nhave: %#+v\nwant: %#+v", v, want)
}
}