# -*- tab-width: 2 -*- vim: ts=2 require "test/unit" require "rss/parser" require "rss/1.0" require "common" class TestParser < Test::Unit::TestCase include TestRSSMixin 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 end