| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // Copyright 2019 Frédéric Guillot. All rights reserved.
- // Use of this source code is governed by the Apache 2.0
- // license that can be found in the LICENSE file.
- package xml // import "miniflux.app/reader/xml"
- import (
- "encoding/xml"
- "fmt"
- "strings"
- "testing"
- )
- func TestUTF8WithIllegalCharacters(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="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(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)
- }
- }
|