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:

<rss version="0.92">
  <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.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:

<rss>
  <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", "")
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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <link>http://blog.iandavis.com/</link>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <language>en</language>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <language>en</language>
    <description>About Internet Alchemy</description>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <language>en</language>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <language>en</language>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <language>en</language>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <copyright>Copyright 1999-2002 Ian Davis</copyright>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <category domain="Syndic8">1765</category>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <category domain="Syndic8">1765</category>
    <description>About Internet Alchemy</description>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <category domain="Syndic8">1765</category>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <category domain="Syndic8">1765</category>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <language>en</language>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement attr1="val1" attr2="val2" />
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement>
      <sub1>val1</sub1>
      <sub2>val2</sub2>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement attr1="attval1">
      <sub1>val1</sub1>
      <sub2>val2</sub2>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement>
      data <b>maybe bold</b>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement>
      <b>maybe bold</b> data
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement attr1="attval1">
      data <b>maybe bold</b>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement attr1="attval1">
      <b>maybe bold</b> data
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement>
      <subElement>
        <valueElement>value</valueElement>
      </subElement>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement attr1="attrval">
      <subElement>
        <valueElement>value</valueElement>
      </subElement>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement>
      <subElement attr1="attrval">
        <valueElement>value</valueElement>
      </subElement>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement attrOuter="attrOuterVal">
      <subElement attrInner="attrInnerVal">
        <valueElement>value</valueElement>
      </subElement>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement attrOuter="attrOuterVal">
                                  <valueElementOuter>value</valueElementOuter>
      <subElement attrInner="attrInnerVal">
        <valueElement>value</valueElement>
      </subElement>
    </metaElement>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaElement />
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <metaOuter>
      <metaElement />
    </metaOuter>
  </channel>
</rss>

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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <item>
      <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")
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:

<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>
    </item>
  </channel>
</rss>

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:

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

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:

<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>
      <language>en</language>
    </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")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 35: Simple metadata within item info

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>
      <language>en</language>
      <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")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 36: Simple metadata before item info

XML input:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <item>
      <language>en</language>
      <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")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 37: Simple metadata before incomplete item info

XML input:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <item>
      <language>en</language>
      <title>Swisscom To Launch WiFi Network</title>
      <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", "")
metadataValue("", "language", "language", "en")
endItem()
endChannel()
endDocument()

Test 38: Simple metadata before and after item info

XML input:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <item>
      <language>en</language>
      <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>
      <pubDate>Fri, 18 Oct 2002 10:42:38 GMT</pubDate>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <category domain="keywords">Wireless, Networking</category>
    </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")
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:

<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>
      <category domain="keywords">Wireless, Networking</category>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
    </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")
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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <item>
      <category domain="keywords">Wireless, Networking</category>
      <title>Swisscom To Launch WiFi Network</title>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
    </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")
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:

<rss version="0.91">
  <channel>
    <title>Internet Alchemy</title>
    <link>http://blog.iandavis.com/</link>
    <description>About Internet Alchemy</description>
    <item>
      <category domain="keywords">Wireless, Networking</category>
      <title>Swisscom To Launch WiFi Network</title>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <language>en</language>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement attr1="val1" attr2="val2" />
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement>
        <sub1>val1</sub1>
        <sub2>val2</sub2>
      </metaElement>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement attr1="attval1">
        <sub1>val1</sub1>
        <sub2>val2</sub2>
      </metaElement>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
    <metaElement>
      data <b>maybe bold</b>
    </metaElement>
    </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")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

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

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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement>
        <b>maybe bold</b> data
      </metaElement>
    </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")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

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

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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement attr1="attval1">
        data <b>maybe bold</b>
      </metaElement>
    </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")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

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

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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement attr1="attval1">
        <b>maybe bold</b> data
      </metaElement>
    </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")
error("Mixed content in metadata")
endItem()
endChannel()
endDocument()

Test 50: Nested simple item metadata

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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement>
        <subElement>
          <valueElement>value</valueElement>
        </subElement>
      </metaElement>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement attr1="attrval">
        <subElement>
          <valueElement>value</valueElement>
        </subElement>
      </metaElement>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement>
        <subElement attr1="attrval">
          <valueElement>value</valueElement>
        </subElement>
      </metaElement>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement attrOuter="attrOuterVal">
        <subElement attrInner="attrInnerVal">
          <valueElement>value</valueElement>
        </subElement>
      </metaElement>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement attrOuter="attrOuterVal">
        <valueElementOuter>value</valueElementOuter>
        <subElement attrInner="attrInnerVal">
          <valueElement>value</valueElement>
        </subElement>
      </metaElement>
    </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")
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:

<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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaElement />
    </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")
metadataValue("", "metaElement", "metaElement", "")
endItem()
endChannel()
endDocument()

Test 56: Nested item metadata with empty metadata element

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>
      <link>http://blog.iandavis.com/2002/10/swisscomToLaunchWiFiNetwork.html</link>
      <description>It looks like SwissCom are rolling out public access WiFi</description>
      <metaOuter>
        <metaElement />
      </metaOuter>
    </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")
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