# -*- tab-width: 2 -*- vim: ts=2
require "rss-testcase"
require "rss/1.0"
module RSS
class TestParser < TestCase
def setup
@_default_parser = Parser.default_parser
end
def teardown
Parser.default_parser = @_default_parser
end
def test_RDF
assert_ns("", RDF::URI) do
Parser.parse(<<-EOR)
#{make_xmldecl}
EOR
end
assert_ns("", RDF::URI) do
Parser.parse(<<-EOR)
#{make_xmldecl}
EOR
end
assert_ns("rdf", RDF::URI) do
Parser.parse(<<-EOR)
#{make_xmldecl}
EOR
end
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
#{make_xmldecl}
EOR
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
#{make_xmldecl}
EOR
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
#{make_xmldecl}
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
#{make_channel}
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
#{make_channel}
#{make_image}
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
#{make_channel}
#{make_textinput}
EOR
assert_too_much_tag("image", "RDF") do
Parser.parse(make_RDF(<<-EOR))
#{make_channel}
#{make_image}
#{make_image}
#{make_item}
#{make_textinput}
EOR
end
assert_not_excepted_tag("image", "RDF") do
Parser.parse(make_RDF(<<-EOR))
#{make_channel}
#{make_item}
#{make_image}
#{make_textinput}
EOR
end
assert_parse(make_RDF(<<-EOR), :nothing_raised)
#{make_channel}
#{make_image}
#{make_item}
EOR
assert_parse(make_RDF(<<-EOR), :nothing_raised)
#{make_channel}
#{make_image}
#{make_item}
#{make_textinput}
EOR
1.step(15, 3) do |i|
rss = make_RDF() do
res = make_channel
i.times { res << make_item }
res
end
assert_parse(rss, :nothing_raised)
end
end
def test_channel
assert_parse(make_RDF(<<-EOR), :missing_attribute, "channel", "about")
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "channel")
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "channel")
hoge
EOR
assert_parse(make_RDF(<
hoge
http://example.com/
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
hoge
http://example.com/
hogehoge
EOR
assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "resource")
hoge
http://example.com/
hogehoge
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
hoge
http://example.com/
hogehoge
EOR
rss = make_RDF(<<-EOR)
hoge
http://example.com/
hogehoge
EOR
assert_missing_tag("Seq", "items") do
Parser.parse(rss)
end
assert_missing_tag("item", "RDF") do
Parser.parse(rss, false).validate
end
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
hoge
http://example.com/
hogehoge
EOR
assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "resource")
hoge
http://example.com/
hogehoge
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
hoge
http://example.com/
hogehoge
EOR
end
def test_image
assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "about")
#{make_channel}
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "image")
#{make_channel}
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "url", "image")
#{make_channel}
hoge
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "image")
#{make_channel}
hoge
http://example.com/hoge.png
EOR
rss = make_RDF(<<-EOR)
#{make_channel}
hoge
http://example.com/
http://example.com/hoge.png
EOR
assert_missing_tag("url", "image") do
Parser.parse(rss)
end
assert_missing_tag("item", "RDF") do
Parser.parse(rss, false).validate
end
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
#{make_channel}
hoge
http://example.com/hoge.png
http://example.com/
EOR
end
def test_item
assert_parse(make_RDF(<<-EOR), :missing_attribute, "item", "about")
#{make_channel}
#{make_image}
-
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "item")
#{make_channel}
#{make_image}
-
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "item")
#{make_channel}
#{make_image}
-
hoge
EOR
assert_too_much_tag("title", "item") do
Parser.parse(make_RDF(<<-EOR))
#{make_channel}
#{make_image}
-
hoge
hoge
http://example.com/hoge.html
EOR
end
assert_parse(make_RDF(<<-EOR), :nothing_raised)
#{make_channel}
#{make_image}
-
hoge
http://example.com/hoge.html
EOR
assert_parse(make_RDF(<<-EOR), :nothing_raised)
#{make_channel}
#{make_image}
-
hoge
http://example.com/hoge.html
hogehoge
EOR
end
def test_textinput
assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "about")
#{make_channel}
#{make_image}
#{make_item}
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "textinput")
#{make_channel}
#{make_image}
#{make_item}
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "description", "textinput")
#{make_channel}
#{make_image}
#{make_item}
hoge
EOR
assert_too_much_tag("title", "textinput") do
Parser.parse(make_RDF(<<-EOR))
#{make_channel}
#{make_image}
#{make_item}
hoge
hoge
hogehoge
EOR
end
assert_parse(make_RDF(<<-EOR), :missing_tag, "name", "textinput")
#{make_channel}
#{make_image}
#{make_item}
hoge
hogehoge
EOR
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "textinput")
#{make_channel}
#{make_image}
#{make_item}
hoge
hogehoge
key
EOR
assert_parse(make_RDF(<<-EOR), :nothing_raised)
#{make_channel}
#{make_image}
#{make_item}
hoge
hogehoge
key
http://example.com/search.html
EOR
end
def test_ignore
rss = make_RDF(<<-EOR)
#{make_channel}
#{make_item}
EOR
assert_parse(rss, :nothing_raised)
assert_not_excepted_tag("a", "RDF") do
Parser.parse(rss, true, false)
end
end
def test_default_parser
assert_nothing_raised() do
Parser.default_parser = RSS::AVAILABLE_PARSERS.first
end
assert_raise(RSS::NotValidXMLParser) do
Parser.default_parser = RSS::Parser
end
end
end
end