diff options
Diffstat (limited to 'reader/xml/decoder_test.go')
-rw-r--r-- | reader/xml/decoder_test.go | 61 |
1 files changed, 58 insertions, 3 deletions
diff --git a/reader/xml/decoder_test.go b/reader/xml/decoder_test.go index ea24bf8..1208ef8 100644 --- a/reader/xml/decoder_test.go +++ b/reader/xml/decoder_test.go @@ -11,19 +11,74 @@ import ( "testing" ) -func TestIllegalCharacters(t *testing.T) { +func TestUTF8WithIllegalCharacters(t *testing.T) { type myxml struct { XMLName xml.Name `xml:"rss"` Version string `xml:"version,attr"` Title string `xml:"title"` } - data := fmt.Sprintf(`<?xml version="1.0" encoding="windows-1251"?><rss version="2.0"><title>%s</title></rss>`, "\x10") + expected := "Title & 中文标题" + data := fmt.Sprintf(`<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><title>Title & 中文%s标题</title></rss>`, "\x10") + reader := strings.NewReader(data) + + var x myxml + + decoder := NewDecoder(reader) + err := decoder.Decode(&x) + if err != nil { + t.Error(err) + return + } + if x.Title != expected { + t.Errorf("Incorrect entry title, expected: %s, got: %s", expected, x.Title) + } +} + +func TestWindows251WithIllegalCharacters(t *testing.T) { + type myxml struct { + XMLName xml.Name `xml:"rss"` + Version string `xml:"version,attr"` + Title string `xml:"title"` + } + + expected := "Title & 中文标题" + data := fmt.Sprintf(`<?xml version="1.0" encoding="windows-1251"?><rss version="2.0"><title>Title & 中文%s标题</title></rss>`, "\x10") + reader := strings.NewReader(data) + var x myxml - decoder := NewDecoder(strings.NewReader(data)) + decoder := NewDecoder(reader) err := decoder.Decode(&x) if err != nil { t.Error(err) + return + } + if x.Title != expected { + t.Errorf("Incorrect entry title, expected: %s, got: %s", expected, x.Title) + } +} + +func TestIllegalEncodingField(t *testing.T) { + type myxml struct { + XMLName xml.Name `xml:"rss"` + Version string `xml:"version,attr"` + Title string `xml:"title"` + } + + expected := "Title & 中文标题" + data := fmt.Sprintf(`<?xml version="1.0" encoding="invalid"?><rss version="2.0"><title>Title & 中文%s标题</title></rss>`, "\x10") + reader := strings.NewReader(data) + + var x myxml + + decoder := NewDecoder(reader) + err := decoder.Decode(&x) + if err != nil { + t.Error(err) + return + } + if x.Title != expected { + t.Errorf("Incorrect entry title, expected: %s, got: %s", expected, x.Title) } } |