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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected event sequence:
startDocument("rss", "0.91")
startChannel("Internet Alchemy", "http://blog.iandavis.com/", "")
endChannel()
endDocument()
Test 6: No items, no channel title
XML input:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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:
```xmlExpected 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()