diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-03-17 10:13:25 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-03-17 10:13:25 +0000 |
commit | 966a25465aab5c2972e6c453f631a15fc2223256 (patch) | |
tree | 847090e856c9901ab2cc19251c179b9b0985e65b /test/rss/test_parser_2.0.rb | |
parent | 53cbab048452742b537ac8bccf494630d1c184c8 (diff) |
* lib/rss, test/rss:
- supported Atom.
- bumped version 0.1.6 to 0.1.7.
* sample/rss/convert.rb: added new sample.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rss/test_parser_2.0.rb')
-rw-r--r-- | test/rss/test_parser_2.0.rb | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/test/rss/test_parser_2.0.rb b/test/rss/test_parser_2.0.rb new file mode 100644 index 0000000000..249347d3dc --- /dev/null +++ b/test/rss/test_parser_2.0.rb @@ -0,0 +1,122 @@ +require "rss-testcase" + +require "rss/2.0" + +module RSS + class TestParser20 < TestCase + def test_rss20 + assert_parse(make_rss20(<<-EOR), :missing_tag, "channel", "rss") +EOR + + assert_parse(make_rss20(<<-EOR), :nothing_raised) +#{make_channel20("")} +EOR + end + + def test_cloud20 + attrs = [ + ["domain", CLOUD_DOMAIN], + ["port", CLOUD_PORT], + ["path", CLOUD_PATH], + ["registerProcedure", CLOUD_REGISTER_PROCEDURE], + ["protocol", CLOUD_PROTOCOL], + ] + + (attrs.size + 1).times do |i| + missing_attr = attrs[i] + if missing_attr + meth = :missing_attribute + args = ["cloud", missing_attr[0]] + else + meth = :nothing_raised + args = [] + end + + cloud_attrs = [] + attrs.each_with_index do |attr, j| + unless i == j + cloud_attrs << %Q[#{attr[0]}="#{attr[1]}"] + end + end + + assert_parse(make_rss20(<<-EOR), meth, *args) +#{make_channel20(%Q[<cloud #{cloud_attrs.join("\n")}/>])} +EOR + end + end + + def test_source20 + assert_parse(make_rss20(<<-EOR), :missing_attribute, "source", "url") +#{make_channel20(make_item20(%Q[<source>Example</source>]))} +EOR + + assert_parse(make_rss20(<<-EOR), :nothing_raised) +#{make_channel20(make_item20(%Q[<source url="http://example.com/" />]))} +EOR + + assert_parse(make_rss20(<<-EOR), :nothing_raised) +#{make_channel20(make_item20(%Q[<source url="http://example.com/">Example</source>]))} +EOR + end + + def test_enclosure20 + attrs = [ + ["url", ENCLOSURE_URL], + ["length", ENCLOSURE_LENGTH], + ["type", ENCLOSURE_TYPE], + ] + + (attrs.size + 1).times do |i| + missing_attr = attrs[i] + if missing_attr + meth = :missing_attribute + args = ["enclosure", missing_attr[0]] + else + meth = :nothing_raised + args = [] + end + + enclosure_attrs = [] + attrs.each_with_index do |attr, j| + unless i == j + enclosure_attrs << %Q[#{attr[0]}="#{attr[1]}"] + end + end + + assert_parse(make_rss20(<<-EOR), meth, *args) +#{make_channel20(%Q[ +#{make_item20(%Q[ +<enclosure + #{enclosure_attrs.join("\n")} /> + ])} + ])} +EOR + end + end + + def test_category20 + values = [nil, CATEGORY_DOMAIN] + values.each do |value| + domain = "" + domain << %Q[domain="#{value}"] if value + + ["", "Example Text"].each do |text| + rss_src = make_rss20(<<-EOR) +#{make_channel20(%Q[ +#{make_item20(%Q[ +<category #{domain}>#{text}</category> + ])} + ])} +EOR + assert_parse(rss_src, :nothing_raised) + + rss = RSS::Parser.parse(rss_src) + category = rss.items.last.categories.first + assert_equal(value, category.domain) + assert_equal(text, category.content) + end + end + end + end +end + |