From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/test/rss/test_parser_1.0.rb | 528 +++++++++++++++++++++++++++++++++++ 1 file changed, 528 insertions(+) create mode 100644 jni/ruby/test/rss/test_parser_1.0.rb (limited to 'jni/ruby/test/rss/test_parser_1.0.rb') diff --git a/jni/ruby/test/rss/test_parser_1.0.rb b/jni/ruby/test/rss/test_parser_1.0.rb new file mode 100644 index 0000000..2efecda --- /dev/null +++ b/jni/ruby/test/rss/test_parser_1.0.rb @@ -0,0 +1,528 @@ +require_relative "rss-testcase" + +require "rss/1.0" +require "rss/dublincore" + +module RSS + class TestParser10 < TestCase + 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_parse(make_RDF(<<-EOR), :nothing_raised) +#{make_channel} +#{make_item} +#{make_image} +#{make_textinput} +EOR + + assert_parse(make_RDF(<<-EOR), :nothing_raised) +#{make_channel} +#{make_item} +#{make_textinput} +#{make_image} +EOR + + 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_undefined_entity + return unless RSS::Parser.default_parser.raise_for_undefined_entity? + assert_parse(make_RDF(<<-EOR), :raises, RSS::NotWellFormedError) +#{make_channel} +#{make_image} + + #{TITLE_VALUE} &UNKNOWN_ENTITY; + #{LINK_VALUE} + #{DESCRIPTION_VALUE} + +#{make_textinput} +EOR + end + + def test_channel + assert_parse(make_RDF(<<-EOR), :missing_attribute, "channel", "rdf: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", "rdf: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", "rdf: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_rdf_li + rss = make_RDF(<<-EOR) + + hoge + http://example.com/ + hogehoge + + + + + + + + +#{make_item} +EOR + + source = Proc.new do |rdf_li_attr| + eval(%Q[%Q[#{rss}]], binding) + end + + attr = %q[resource="http://example.com/hoge"] + assert_parse(source.call(attr), :nothing_raised) + + attr = %q[rdf:resource="http://example.com/hoge"] + assert_parse(source.call(attr), :nothing_raised) + + assert_parse(source.call(""), :missing_attribute, "li", "resource") + end + + def test_image + assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "rdf: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 + + assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF") +#{make_channel} + + hoge + http://example.com/hoge.png + http://example.com/ + +EOR + + rss = make_RDF(<<-EOR) +#{make_channel} + + http://example.com/ + http://example.com/hoge.png + hoge + +EOR + + assert_missing_tag("item", "RDF") do + Parser.parse(rss) + end + + assert_missing_tag("item", "RDF") do + Parser.parse(rss, false).validate + end + end + + def test_item + assert_parse(make_RDF(<<-EOR), :missing_attribute, "item", "rdf: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", "rdf: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 + name = "a" + rss = make_RDF(<<-EOR) +#{make_channel} +#{make_item} +<#{name}/> +EOR + assert_not_expected_tag(name, ::RSS::URI, "RDF") do + Parser.parse(rss, true, false) + end + + uri = "" + name = "a" + rss = make_RDF(<<-EOR) +#{make_channel} +#{make_item} +<#{name} xmlns=""/> +EOR + assert_parse(rss, :nothing_raised) + assert_not_expected_tag(name, uri, "RDF") do + Parser.parse(rss, true, false) + end + + uri = "http://example.com/" + name = "a" + rss = make_RDF(<<-EOR) +#{make_channel} +#{make_item} + +EOR + assert_parse(rss, :nothing_raised) + assert_not_expected_tag(name, uri, "RDF") do + Parser.parse(rss, true, false) + end + + uri = ::RSS::URI + name = "a" + rss = make_RDF(<<-EOR) +#{make_channel} +#{make_item} +#{make_image("<#{name}/>")} +EOR + assert_parse(rss, :nothing_raised) + assert_not_expected_tag(name, uri, "image") do + Parser.parse(rss, true, false) + end + + uri = CONTENT_URI + name = "encoded" + elem = "<#{name} xmlns='#{uri}'/>" + rss = make_RDF(<<-EOR) +#{make_channel} +#{make_item} +#{make_image(elem)} +EOR + assert_parse(rss, :nothing_raised) + assert_not_expected_tag(name, uri, "image") do + Parser.parse(rss, true, false) + end + end + + def test_unknown_duplicated_element + xmlns = {"test" => "http://localhost/test"} + assert_parse(make_RDF(<<-EOR, xmlns), :nothing_raised) + #{make_channel("")} + #{make_item} + #{make_image} + EOR + end + + def test_unknown_case_insensitive_duplicated_element + xmlns = { + "foaf" => "http://xmlns.com/foaf/0.1/", + "dc" => "http://purl.org/dc/elements/1.1/", + } + assert_parse(make_RDF(<<-EOR, xmlns), :nothing_raised) + #{make_channel} + #{make_item} + #{make_image} + + Myself + http://example.com/ + + EOR + end + end +end + -- cgit v1.2.3