RSS 0.91 Test Cases For LiSA

As part of my development of a Perl based LiSA parser I have devised a suite of test cases for the RSS 0.91 parser. Each test case presents the input XML and the expected sequence of LiSA events.

Test 1: Minimal RSS 0.91 channel

XML input:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <item>
      <title>Swisscom To Launch WiFi Network</title>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
    </item>
  </channel>
</rss>

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
endItem()
endChannel()
endDocument()

Test 2: Detect RSS Version Number

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network It looks like SwissCom are rolling out public access WiFi http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html ```

Expected event sequence:

startDocument("rss", "0.92")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
endItem()
endChannel()
endDocument()

Test 3: Missing RSS Version Number

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network It looks like SwissCom are rolling out public access WiFi http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html ```

Expected event sequence:

startDocument("rss", "")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
endItem()
endChannel()
endDocument()

Test 4: No items, basic channel

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
endChannel()
endDocument()

Test 5: No items, no channel description

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "")
endChannel()
endDocument()

Test 6: No items, no channel title

XML input:

```xml http://blog.iandavis.com/ ```

Expected event sequence:

startDocument("rss", "0.91")
error("No channel title found")
startChannel("", "http://blog.iandavis.com/", "")
endChannel()
endDocument()

Test 7: No items, no channel link

XML input:

```xml Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
error("No channel link found")
startChannel("Internet Alchemy", "", "")
endChannel()
endDocument()

Test 8: No items, simple metadata after channel info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy en ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
metadataValue("", "language", "language", "en")
endChannel()
endDocument()

Test 9: No items, simple metadata within channel info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ en About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
metadataValue("", "language", "language", "en")
endChannel()
endDocument()

Test 10: No items, simple metadata before channel info

XML input:

```xml en Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
metadataValue("", "language", "language", "en")
endChannel()
endDocument()

Test 11: No items, simple metadata before incomplete channel info

XML input:

```xml en Internet Alchemy http://blog.iandavis.com/ ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "")
metadataValue("", "language", "language", "en")
endChannel()
endDocument()

Test 12: No items, simple metadata before and after channel info

XML input:

```xml en Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Copyright 1999-2002 Ian Davis ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
metadataValue("", "language", "language", "en")
metadataValue("", "copyright", "copyright", "Copyright 1999-2002 Ian Davis")
endChannel()
endDocument()

Test 13: No items, composite metadata after channel info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy 1765 ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "Syndic8")
metadataValue("", "category", "category", "1765")
endMetadataGroup()
endChannel()
endDocument()

Test 14: No items, composite metadata within channel info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ 1765 About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "Syndic8")
metadataValue("", "category", "category", "1765")
endMetadataGroup()
endChannel()
endDocument()

Test 15: No items, composite metadata before channel info

XML input:

```xml 1765 Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "Syndic8")
metadataValue("", "category", "category", "1765")
endMetadataGroup()
endChannel()
endDocument()

Test 16: No items, composite metadata and simple metadata

XML input:

```xml 1765 Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy en ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "Syndic8")
metadataValue("", "category", "category", "1765")
endMetadataGroup()
metadataValue("", "language", "language", "en")
endChannel()
endDocument()

Test 17: No items, multiple attributes on metadata, no character data

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attr1", "attr1", "val1")
metadataValue("", "attr2", "attr2", "val2")
endMetadataGroup()
endChannel()
endDocument()

Test 18: No items, metadata with sub elements, no character data

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy val1 val2 ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "sub1", "sub1", "val1")
metadataValue("", "sub2", "sub2", "val2")
endMetadataGroup()
endChannel()
endDocument()

Test 19: No items, metadata with sub elements and attribs, no character data

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy val1 val2 ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attr1", "attr1", "attval1")
metadataValue("", "sub1", "sub1", "val1")
metadataValue("", "sub2", "sub2", "val2")
endMetadataGroup()
endChannel()
endDocument()

Test 20: No items, metadata with char data followed by sub element gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy data maybe bold ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
error("Mixed content in metadata")
endChannel()
endDocument()

Test 21: No items, metadata with sub element followed by char data gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy maybe bold data ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
error("Mixed content in metadata")
endChannel()
endDocument()

Test 22: No items, attributed metadata with char data followed by sub element gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy data maybe bold ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
error("Mixed content in metadata")
endChannel()
endDocument()

Test 23: No items, attributed metadata with sub element followed by char data gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy maybe bold data ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
error("Mixed content in metadata")
endChannel()
endDocument()

Test 24: No items, nested simple metadata

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endChannel()
endDocument()

Test 25: No items, nested metadata, outer with attributes

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attr1", "attr1", "attrval")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endChannel()
endDocument()

Test 26: No items, nested metadata, inner with attributes

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "attr1", "attr1", "attrval")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endChannel()
endDocument()

Test 27: No items, nested metadata, inner and outer with attributes

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attrOuter", "attrOuter", "attrOuterVal")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "attrInner", "attrInner", "attrInnerVal")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endChannel()
endDocument()

Test 28: No items, nested metadata, inner and outer with attributes, outer with simple value

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy value value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attrOuter", "attrOuter", "attrOuterVal")
metadataValue("", "valueElementOuter", "valueElementOuter", "value")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "attrInner", "attrInner", "attrInnerVal")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endChannel()
endDocument()

Test 29: No items, empty metadata element

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
metadataValue("", "metaElement", "metaElement", "")
endChannel()
endDocument()

Test 30: No items, nested metadata with empty metadata element

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startMetadataGroup("", "metaOuter", "metaOuter")
metadataValue("", "metaElement", "metaElement", "")
endMetadataGroup()
endChannel()
endDocument()

Test 31: Item missing title

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy It looks like SwissCom are rolling out public access WiFi http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
warning("No item title found")
startItem("", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
endItem()
endChannel()
endDocument()

Test 32: Item missing link

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network It looks like SwissCom are rolling out public access WiFi ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
warning("No item link found")
startItem("Swisscom To Launch WiFi Network", "", "It looks like SwissCom are rolling out public access WiFi")
endItem()
endChannel()
endDocument()

Test 33: Item missing title and link

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy It looks like SwissCom are rolling out public access WiFi ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
warning("No item title found")
warning("No item link found")
startItem("", "", "It looks like SwissCom are rolling out public access WiFi")
endItem()
endChannel()
endDocument()

Test 34: Simple metadata after item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network It looks like SwissCom are rolling out public access WiFi http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html en ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 35: Simple metadata within item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network It looks like SwissCom are rolling out public access WiFi en http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 36: Simple metadata before item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy en Swisscom To Launch WiFi Network It looks like SwissCom are rolling out public access WiFi http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 37: Simple metadata before incomplete item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy en Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 38: Simple metadata before and after item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy en Swisscom To Launch WiFi Network It looks like SwissCom are rolling out public access WiFi http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html Fri, 18 Oct 2002 10:42:38 GMT ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
metadataValue("", "language", "language", "en")
metadataValue("", "pubDate", "pubDate", "Fri, 18 Oct 2002 10:42:38 GMT")
endItem()
endChannel()
endDocument()

Test 39: Composite metadata after item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi Wireless, Networking ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "keywords")
metadataValue("", "category", "category", "Wireless, Networking")
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 40: Composite metadata within item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network Wireless, Networking http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "keywords")
metadataValue("", "category", "category", "Wireless, Networking")
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 41: Composite metadata before item info

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Wireless, Networking Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "keywords")
metadataValue("", "category", "category", "Wireless, Networking")
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 42: Composite metadata and simple metadata

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Wireless, Networking Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi en ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "category", "category")
metadataValue("", "domain", "domain", "keywords")
metadataValue("", "category", "category", "Wireless, Networking")
endMetadataGroup()
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 43: Multiple attributes on item metadata, no character data

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attr1", "attr1", "val1")
metadataValue("", "attr2", "attr2", "val2")
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 44: Item metadata with sub elements, no character data

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi val1 val2 ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "sub1", "sub1", "val1")
metadataValue("", "sub2", "sub2", "val2")
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 45: Item metadata with sub elements and attribs, no character data

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi val1 val2 ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attr1", "attr1", "attval1")
metadataValue("", "sub1", "sub1", "val1")
metadataValue("", "sub2", "sub2", "val2")
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 46: Item metadata with char data followed by sub element gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi data maybe bold ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

Test 47: Item metadata with sub element followed by char data gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi maybe bold data ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

Test 48: Attributed item metadata with char data followed by sub element gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi data maybe bold ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

Test 49: Attributed item metadata with sub element followed by char data gives error

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi maybe bold data ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

Test 50: Nested simple item metadata

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 51: Nested item metadata outer with attributes

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attr1", "attr1", "attrval")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 52: Nested item metadata inner with attributes

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "attr1", "attr1", "attrval")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 53: Nested item metadata inner and outer with attributes

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attrOuter", "attrOuter", "attrOuterVal")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "attrInner", "attrInner", "attrInnerVal")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 54: Nested item metadata inner and outer with attributes, outer with simple value

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi value value ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaElement", "metaElement")
metadataValue("", "attrOuter", "attrOuter", "attrOuterVal")
metadataValue("", "valueElementOuter", "valueElementOuter", "value")
startMetadataGroup("", "subElement", "subElement")
metadataValue("", "attrInner", "attrInner", "attrInnerVal")
metadataValue("", "valueElement", "valueElement", "value")
endMetadataGroup()
endMetadataGroup()
endItem()
endChannel()
endDocument()

Test 55: Empty item metadata

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
metadataValue("", "metaElement", "metaElement", "")
endItem()
endChannel()
endDocument()

Test 56: Nested item metadata with empty metadata element

XML input:

```xml Internet Alchemy http://blog.iandavis.com/ About Internet Alchemy Swisscom To Launch WiFi Network http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html It looks like SwissCom are rolling out public access WiFi ```

Expected event sequence:

startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "About Internet Alchemy")
startItem("Swisscom To Launch WiFi Network", "http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html", "It looks like SwissCom are rolling out public access WiFi")
startMetadataGroup("", "metaOuter", "metaOuter")
metadataValue("", "metaElement", "metaElement", "")
endMetadataGroup()
endItem()
endChannel()
endDocument()

Permalink: http://blog.iandavis.com/2002/11/rss-0-91-test-cases-for-lisa/

Other posts tagged as syndication

Earlier Posts