diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-03 15:31:57 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-03 15:31:57 +0000 |
commit | 73a9963ddffe4108b67918df7647a1f05914a2f9 (patch) | |
tree | 62f2f962baf6a263fb7b5295287a8cb6feff8927 /test/rss | |
parent | 58d0a3de500e1896a843a11dc398d3824298dc85 (diff) |
* lib/rss: supported Image module.
http://web.resource.org/rss/1.0/modules/image/
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rss')
-rw-r--r-- | test/rss/rss-testcase.rb | 14 | ||||
-rw-r--r-- | test/rss/test_image.rb | 165 | ||||
-rw-r--r-- | test/rss/test_maker_image.rb | 62 |
3 files changed, 240 insertions, 1 deletions
diff --git a/test/rss/rss-testcase.rb b/test/rss/rss-testcase.rb index 27b4eba5d6..f3a2760fd2 100644 --- a/test/rss/rss-testcase.rb +++ b/test/rss/rss-testcase.rb @@ -1,10 +1,11 @@ -# -*- tab-width: 2 -*- vim: ts=2 +require "erb" require "test/unit" require 'rss-assertions' module RSS class TestCase < Test::Unit::TestCase + include ERB::Util include RSS include Assertions @@ -189,6 +190,17 @@ EOI EOC end + def make_element(elem_name, attrs, contents) + attrs_str = attrs.collect do |name, value| + "#{h name}='#{h value}'" + end.join(" ") + contents_str = contents.collect do |name, value| + "#{Element::INDENT}<#{h name}>#{h value}</#{h name}>" + end.join("\n") + + "<#{h elem_name} #{attrs_str}>\n#{contents_str}\n</#{h elem_name}>" + end + private def setup_dummy_channel(maker) about = "http://hoge.com" diff --git a/test/rss/test_image.rb b/test/rss/test_image.rb new file mode 100644 index 0000000000..8e62085b43 --- /dev/null +++ b/test/rss/test_image.rb @@ -0,0 +1,165 @@ +require "cgi" +require "rexml/document" + +require "rss-testcase" + +require "rss/1.0" +require "rss/image" + +module RSS + class TestImage < TestCase + + def setup + @prefix = "image" + @uri = "http://web.resource.org/rss/1.0/modules/image/" + + @favicon_attrs = { + "rdf:about" => "http://www.kuro5hin.org/favicon.ico", + "#{@prefix}:size" => "small", + } + @favicon_contents = {"dc:title" => "Kuro5hin",} + @items = [ + [ + { + "rdf:about" => "http://www.example.org/item.png", + "rdf:resource" => "http://www.example.org/item", + }, + { + "dc:title" => "Example Image", + "#{@prefix}:width" => 100, + "#{@prefix}:height" => 65, + }, + ], + [ + { + "rdf:about" => "http://www.kuro5hin.org/images/topics/culture.jpg", + }, + { + "dc:title" => "Culture", + "#{@prefix}:width" => 80, + "#{@prefix}:height" => 50, + }, + ] + ] + + + @channel_nodes = make_element("#{@prefix}:favicon", + @favicon_attrs, + @favicon_contents) + items = "" + @items.each do |attrs, contents| + image_item = make_element("#{@prefix}:item", attrs, contents) + items << make_item(image_item) + end + + ns = { + @prefix => @uri, + DC_PREFIX => DC_URI, + } + @rss_source = make_RDF(<<-EOR, ns) +#{make_channel(@channel_nodes)} +#{make_image} +#{items} +#{make_textinput} +EOR + + @rss = Parser.parse(@rss_source) + end + + def test_parser + assert_nothing_raised do + Parser.parse(@rss_source) + end + + assert_too_much_tag("favicon", "channel") do + Parser.parse(make_RDF(<<-EOR, {@prefix => @uri})) +#{make_channel(@channel_nodes * 2)} +#{make_item} +EOR + end + end + + def test_favicon_accessor + favicon = @rss.channel.image_favicon + [ + %w(about rdf:about http://example.com/favicon.ico), + %w(size image:size large), + %w(image_size image:size medium), + ].each do |name, full_name, new_value| + assert_equal(@favicon_attrs[full_name], favicon.send(name)) + favicon.send("#{name}=", new_value) + assert_equal(new_value, favicon.send(name)) + favicon.send("#{name}=", @favicon_attrs[full_name]) + assert_equal(@favicon_attrs[full_name], favicon.send(name)) + end + + [ + %w(dc_title dc:title sample-favicon), + ].each do |name, full_name, new_value| + assert_equal(@favicon_contents[full_name], favicon.send(name)) + favicon.send("#{name}=", new_value) + assert_equal(new_value, favicon.send(name)) + favicon.send("#{name}=", @favicon_contents[full_name]) + assert_equal(@favicon_contents[full_name], favicon.send(name)) + end + end + + def test_item_accessor + @rss.items.each_with_index do |item, i| + image_item = item.image_item + attrs, contents = @items[i] + [ + %w(about rdf:about http://example.com/image.png), + %w(resource rdf:resource http://example.com/), + ].each do |name, full_name, new_value| + assert_equal(attrs[full_name], image_item.send(name)) + image_item.send("#{name}=", new_value) + assert_equal(new_value, image_item.send(name)) + image_item.send("#{name}=", attrs[full_name]) + assert_equal(attrs[full_name], image_item.send(name)) + end + + [ + ["width", "image:width", 111], + ["image_width", "image:width", 44], + ["height", "image:height", 222], + ["image_height", "image:height", 88], + ["dc_title", "dc:title", "sample-image"], + ].each do |name, full_name, new_value| + assert_equal(contents[full_name], image_item.send(name)) + image_item.send("#{name}=", new_value) + assert_equal(new_value, image_item.send(name)) + image_item.send("#{name}=", contents[full_name]) + assert_equal(contents[full_name], image_item.send(name)) + end + end + end + + def test_favicon_to_s + favicon = @rss.channel.image_favicon + expected = REXML::Document.new(make_element("#{@prefix}:favicon", + @favicon_attrs, + @favicon_contents)) + actual = REXML::Document.new(favicon.to_s(false, "")) + assert_equal(expected.to_s, actual.to_s) + end + + def test_item_to_s + @rss.items.each_with_index do |item, i| + attrs, contents = @items[i] + expected_s = make_element("#{@prefix}:item", attrs, contents) + expected = REXML::Document.new(expected_s) + actual = REXML::Document.new(item.image_item.to_s(false, "")) + + assert_equal(expected[0].attributes, actual[0].attributes) + + %w(image:height image:width dc:title).each do |name| + actual_target = actual.elements["//#{name}"] + expected_target = expected.elements["//#{name}"] + assert_equal(expected_target.to_s, actual_target.to_s) + end + end + end + + end +end diff --git a/test/rss/test_maker_image.rb b/test/rss/test_maker_image.rb new file mode 100644 index 0000000000..1c161b2593 --- /dev/null +++ b/test/rss/test_maker_image.rb @@ -0,0 +1,62 @@ +require "rss-testcase" + +require "rss/maker" + +module RSS + class TestMakerImage < TestCase + + def setup + @uri = "http://web.resource.org/rss/1.0/modules/image/" + + @favicon_infos = { + "about" => "http://www.kuro5hin.org/favicon.ico", + "image_size" => "small", + "dc_title" => "example", + } + @item_infos = { + "about" => "http://www.example.org/item.png", + "resource" => "http://www.example.org/item", + "dc_title" => "Example Image", + "image_width" => 100, + "image_height" => 65, + } + end + + def test_rss10 + rss = RSS::Maker.make("1.0") do |maker| + setup_dummy_channel(maker) + @favicon_infos.each do |name, value| + maker.channel.image_favicon.__send__("#{name}=", value) + end + + setup_dummy_image(maker) + + setup_dummy_item(maker) + item = maker.items.last + @item_infos.each do |name, value| + item.image_item.__send__("#{name}=", value) + end + + setup_dummy_textinput(maker) + end + + setup_rss = RSS::Maker.make("1.0") do |maker| + rss.setup_maker(maker) + end + + [rss, setup_rss].each_with_index do |target, i| + favicon = target.channel.image_favicon + assert_equal(@favicon_infos["about"], favicon.about) + assert_equal(@favicon_infos["image_size"], favicon.image_size) + assert_equal(@favicon_infos["dc_title"], favicon.dc_title) + + item = target.items.last.image_item + assert_equal(@item_infos["about"], item.about) + assert_equal(@item_infos["resource"], item.resource) + assert_equal(@item_infos["image_width"], item.image_width) + assert_equal(@item_infos["image_height"], item.image_height) + assert_equal(@item_infos["dc_title"], item.dc_title) + end + end + end +end |