mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* test/rss/*: Test::Unit::TestCase -> RSS::TestCase and
Test::Unit::Assertions -> RSS::Assertions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
cfbe158fae
commit
abe876ed4e
12 changed files with 1036 additions and 1009 deletions
|
@ -1,3 +1,8 @@
|
|||
Sun Mar 21 18:57:37 2004 Kouhei Sutou <kou@cozmixng.org>
|
||||
|
||||
* test/rss/*: Test::Unit::TestCase -> RSS::TestCase and
|
||||
Test::Unit::Assertions -> RSS::Assertions.
|
||||
|
||||
Sun Mar 21 18:48:20 2004 Kouhei Sutou <kou@cozmixng.org>
|
||||
|
||||
* lib/rss/{rss,dublincore,syndication}.rb: handled W3CDTF correctly.
|
||||
|
|
|
@ -1,130 +0,0 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
module Test
|
||||
module Unit
|
||||
module Assertions
|
||||
|
||||
def assert_parse(rss, assert_method, *args)
|
||||
send("assert_#{assert_method}", *args) do
|
||||
::RSS::Parser.parse(rss)
|
||||
end
|
||||
send("assert_#{assert_method}", *args) do
|
||||
::RSS::Parser.parse(rss, false).validate
|
||||
end
|
||||
end
|
||||
|
||||
def assert_ns(prefix, uri)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise NSError")
|
||||
rescue ::RSS::NSError => e
|
||||
assert_equal(prefix, e.prefix)
|
||||
assert_equal(uri, e.uri)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_missing_tag(tag, parent)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise MissingTagError")
|
||||
rescue ::RSS::MissingTagError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(parent, e.parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_too_much_tag(tag, parent)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise TooMuchTagError")
|
||||
rescue ::RSS::TooMuchTagError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(parent, e.parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_missing_attribute(tag, attrname)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise MissingAttributeError")
|
||||
rescue ::RSS::MissingAttributeError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(attrname, e.attribute)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_not_excepted_tag(tag, parent)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise NotExceptedTagError")
|
||||
rescue ::RSS::NotExceptedTagError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(parent, e.parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_not_available_value(tag, value)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise NotAvailableValueError")
|
||||
rescue ::RSS::NotAvailableValueError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(value, e.value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_xml_stylesheet_attrs(xsl, attrs)
|
||||
_wrap_assertion do
|
||||
normalized_attrs = {}
|
||||
attrs.each do |name, value|
|
||||
normalized_attrs[name.to_s] = value
|
||||
end
|
||||
::RSS::XMLStyleSheet::ATTRIBUTES.each do |name|
|
||||
assert_equal(normalized_attrs[name], xsl.send(name))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_xml_stylesheet(target, xsl, attrs)
|
||||
_wrap_assertion do
|
||||
if attrs.has_key?(:href)
|
||||
if !attrs.has_key?(:type) and attrs.has_key?(:guess_type)
|
||||
attrs[:type] = attrs[:guess_type]
|
||||
end
|
||||
assert_equal("xml-stylesheet", target)
|
||||
assert_xml_stylesheet_attrs(xsl, attrs)
|
||||
else
|
||||
assert_nil(target)
|
||||
assert_equal("", xsl.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_xml_stylesheet_pis(attrs_ary)
|
||||
rdf = ::RSS::RDF.new()
|
||||
xss_strs = []
|
||||
attrs_ary.each do |attrs|
|
||||
xss = ::RSS::XMLStyleSheet.new(*attrs)
|
||||
xss_strs.push(xss.to_s)
|
||||
rdf.xml_stylesheets.push(xss)
|
||||
end
|
||||
pi_str = rdf.to_s.gsub(/<\?xml .*\n/, "").gsub(/\s*<rdf:RDF.*\z/m, "")
|
||||
assert_equal(xss_strs.join("\n"), pi_str)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
127
test/rss/rss-assertions.rb
Normal file
127
test/rss/rss-assertions.rb
Normal file
|
@ -0,0 +1,127 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
module RSS
|
||||
module Assertions
|
||||
|
||||
def assert_parse(rss, assert_method, *args)
|
||||
send("assert_#{assert_method}", *args) do
|
||||
::RSS::Parser.parse(rss)
|
||||
end
|
||||
send("assert_#{assert_method}", *args) do
|
||||
::RSS::Parser.parse(rss, false).validate
|
||||
end
|
||||
end
|
||||
|
||||
def assert_ns(prefix, uri)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise NSError")
|
||||
rescue ::RSS::NSError => e
|
||||
assert_equal(prefix, e.prefix)
|
||||
assert_equal(uri, e.uri)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_missing_tag(tag, parent)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise MissingTagError")
|
||||
rescue ::RSS::MissingTagError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(parent, e.parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_too_much_tag(tag, parent)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise TooMuchTagError")
|
||||
rescue ::RSS::TooMuchTagError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(parent, e.parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_missing_attribute(tag, attrname)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise MissingAttributeError")
|
||||
rescue ::RSS::MissingAttributeError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(attrname, e.attribute)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_not_excepted_tag(tag, parent)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise NotExceptedTagError")
|
||||
rescue ::RSS::NotExceptedTagError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(parent, e.parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_not_available_value(tag, value)
|
||||
_wrap_assertion do
|
||||
begin
|
||||
yield
|
||||
flunk("Not raise NotAvailableValueError")
|
||||
rescue ::RSS::NotAvailableValueError => e
|
||||
assert_equal(tag, e.tag)
|
||||
assert_equal(value, e.value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_xml_stylesheet_attrs(xsl, attrs)
|
||||
_wrap_assertion do
|
||||
normalized_attrs = {}
|
||||
attrs.each do |name, value|
|
||||
normalized_attrs[name.to_s] = value
|
||||
end
|
||||
::RSS::XMLStyleSheet::ATTRIBUTES.each do |name|
|
||||
assert_equal(normalized_attrs[name], xsl.send(name))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_xml_stylesheet(target, xsl, attrs)
|
||||
_wrap_assertion do
|
||||
if attrs.has_key?(:href)
|
||||
if !attrs.has_key?(:type) and attrs.has_key?(:guess_type)
|
||||
attrs[:type] = attrs[:guess_type]
|
||||
end
|
||||
assert_equal("xml-stylesheet", target)
|
||||
assert_xml_stylesheet_attrs(xsl, attrs)
|
||||
else
|
||||
assert_nil(target)
|
||||
assert_equal("", xsl.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_xml_stylesheet_pis(attrs_ary)
|
||||
rdf = ::RSS::RDF.new()
|
||||
xss_strs = []
|
||||
attrs_ary.each do |attrs|
|
||||
xss = ::RSS::XMLStyleSheet.new(*attrs)
|
||||
xss_strs.push(xss.to_s)
|
||||
rdf.xml_stylesheets.push(xss)
|
||||
end
|
||||
pi_str = rdf.to_s.gsub(/<\?xml .*\n/, "").gsub(/\s*<rdf:RDF.*\z/m, "")
|
||||
assert_equal(xss_strs.join("\n"), pi_str)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
|
@ -1,51 +1,58 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require 'my-assertions'
|
||||
require "test/unit"
|
||||
require 'rss-assertions'
|
||||
|
||||
module TestRSSMixin
|
||||
module RSS
|
||||
class TestCase < Test::Unit::TestCase
|
||||
|
||||
include RSS
|
||||
include RSS
|
||||
include Assertions
|
||||
|
||||
XMLDECL_VERSION = "1.0"
|
||||
XMLDECL_ENCODING = "UTF-8"
|
||||
XMLDECL_STANDALONE = "no"
|
||||
XMLDECL_VERSION = "1.0"
|
||||
XMLDECL_ENCODING = "UTF-8"
|
||||
XMLDECL_STANDALONE = "no"
|
||||
|
||||
RDF_ABOUT = "http://www.xml.com/xml/news.rss"
|
||||
RDF_RESOURCE = "http://xml.com/universal/images/xml_tiny.gif"
|
||||
TITLE_VALUE = "XML.com"
|
||||
LINK_VALUE = "http://xml.com/pub"
|
||||
URL_VALUE = "http://xml.com/universal/images/xml_tiny.gif"
|
||||
NAME_VALUE = "hogehoge"
|
||||
DESCRIPTION_VALUE = "
|
||||
RDF_ABOUT = "http://www.xml.com/xml/news.rss"
|
||||
RDF_RESOURCE = "http://xml.com/universal/images/xml_tiny.gif"
|
||||
TITLE_VALUE = "XML.com"
|
||||
LINK_VALUE = "http://xml.com/pub"
|
||||
URL_VALUE = "http://xml.com/universal/images/xml_tiny.gif"
|
||||
NAME_VALUE = "hogehoge"
|
||||
DESCRIPTION_VALUE = "
|
||||
XML.com features a rich mix of information and services
|
||||
for the XML community.
|
||||
"
|
||||
RESOURCES = [
|
||||
"http://xml.com/pub/2000/08/09/xslt/xslt.html",
|
||||
"http://xml.com/pub/2000/08/09/rdfdb/index.html",
|
||||
]
|
||||
"
|
||||
RESOURCES = [
|
||||
"http://xml.com/pub/2000/08/09/xslt/xslt.html",
|
||||
"http://xml.com/pub/2000/08/09/rdfdb/index.html",
|
||||
]
|
||||
|
||||
private
|
||||
def make_xmldecl(v=XMLDECL_VERSION, e=XMLDECL_ENCODING, s=XMLDECL_STANDALONE)
|
||||
rv = "<?xml version='#{v}'"
|
||||
rv << " encoding='#{e}'" if e
|
||||
rv << " standalone='#{s}'" if s
|
||||
rv << "?>"
|
||||
rv
|
||||
end
|
||||
def default_test
|
||||
# This class isn't tested
|
||||
end
|
||||
|
||||
def make_RDF(content=nil, xmlns=[])
|
||||
<<-EORSS
|
||||
private
|
||||
def make_xmldecl(v=XMLDECL_VERSION, e=XMLDECL_ENCODING, s=XMLDECL_STANDALONE)
|
||||
rv = "<?xml version='#{v}'"
|
||||
rv << " encoding='#{e}'" if e
|
||||
rv << " standalone='#{s}'" if s
|
||||
rv << "?>"
|
||||
rv
|
||||
end
|
||||
|
||||
def make_RDF(content=nil, xmlns=[])
|
||||
<<-EORSS
|
||||
#{make_xmldecl}
|
||||
<rdf:RDF xmlns="#{URI}" xmlns:rdf="#{RDF::URI}"
|
||||
#{xmlns.collect {|pre, uri| "xmlns:#{pre}='#{uri}'"}.join(' ')}>
|
||||
#{block_given? ? yield : content}
|
||||
</rdf:RDF>
|
||||
EORSS
|
||||
end
|
||||
end
|
||||
|
||||
def make_channel(content=nil)
|
||||
<<-EOC
|
||||
def make_channel(content=nil)
|
||||
<<-EOC
|
||||
<channel rdf:about="#{RDF_ABOUT}">
|
||||
<title>#{TITLE_VALUE}</title>
|
||||
<link>#{LINK_VALUE}</link>
|
||||
|
@ -64,10 +71,10 @@ EORSS
|
|||
#{block_given? ? yield : content}
|
||||
</channel>
|
||||
EOC
|
||||
end
|
||||
end
|
||||
|
||||
def make_image(content=nil)
|
||||
<<-EOI
|
||||
def make_image(content=nil)
|
||||
<<-EOI
|
||||
<image rdf:about="#{RDF_ABOUT}">
|
||||
<title>#{TITLE_VALUE}</title>
|
||||
<url>#{URL_VALUE}</url>
|
||||
|
@ -75,10 +82,10 @@ EOC
|
|||
#{block_given? ? yield : content}
|
||||
</image>
|
||||
EOI
|
||||
end
|
||||
end
|
||||
|
||||
def make_item(content=nil)
|
||||
<<-EOI
|
||||
def make_item(content=nil)
|
||||
<<-EOI
|
||||
<item rdf:about="#{RDF_ABOUT}">
|
||||
<title>#{TITLE_VALUE}</title>
|
||||
<link>#{LINK_VALUE}</link>
|
||||
|
@ -86,10 +93,10 @@ EOI
|
|||
#{block_given? ? yield : content}
|
||||
</item>
|
||||
EOI
|
||||
end
|
||||
end
|
||||
|
||||
def make_textinput(content=nil)
|
||||
<<-EOT
|
||||
def make_textinput(content=nil)
|
||||
<<-EOT
|
||||
<textinput rdf:about="#{RDF_ABOUT}">
|
||||
<title>#{TITLE_VALUE}</title>
|
||||
<description>#{DESCRIPTION_VALUE}</description>
|
||||
|
@ -98,29 +105,29 @@ EOI
|
|||
#{block_given? ? yield : content}
|
||||
</textinput>
|
||||
EOT
|
||||
end
|
||||
end
|
||||
|
||||
def make_sample_RDF
|
||||
make_RDF(<<-EOR)
|
||||
def make_sample_RDF
|
||||
make_RDF(<<-EOR)
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
#{make_textinput}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
def make_Rss2(content=nil, xmlns=[])
|
||||
<<-EORSS
|
||||
def make_Rss2(content=nil, xmlns=[])
|
||||
<<-EORSS
|
||||
#{make_xmldecl}
|
||||
<rss version="2.0"
|
||||
#{xmlns.collect {|pre, uri| "xmlns:#{pre}='#{uri}'"}.join(' ')}>
|
||||
#{block_given? ? yield : content}
|
||||
</rss>
|
||||
EORSS
|
||||
end
|
||||
end
|
||||
|
||||
def make_channel2(content=nil)
|
||||
<<-EOC
|
||||
def make_channel2(content=nil)
|
||||
<<-EOC
|
||||
<channel>
|
||||
<title>#{TITLE_VALUE}</title>
|
||||
<link>#{LINK_VALUE}</link>
|
||||
|
@ -141,10 +148,10 @@ EORSS
|
|||
#{block_given? ? yield : content}
|
||||
</channel>
|
||||
EOC
|
||||
end
|
||||
end
|
||||
|
||||
def make_item2(content=nil)
|
||||
<<-EOI
|
||||
def make_item2(content=nil)
|
||||
<<-EOI
|
||||
<item>
|
||||
<title>#{TITLE_VALUE}</title>
|
||||
<link>#{LINK_VALUE}</link>
|
||||
|
@ -152,5 +159,6 @@ EOC
|
|||
#{block_given? ? yield : content}
|
||||
</item>
|
||||
EOI
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,259 +1,259 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "rexml/document"
|
||||
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/1.0"
|
||||
require "common"
|
||||
|
||||
class TestCore < Test::Unit::TestCase
|
||||
|
||||
include TestRSSMixin
|
||||
|
||||
def setup
|
||||
|
||||
@rdf_prefix = "rdf"
|
||||
@rdf_uri = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
@uri = "http://purl.org/rss/1.0/"
|
||||
|
||||
end
|
||||
|
||||
def test_RDF
|
||||
|
||||
version = "1.0"
|
||||
encoding = "UTF-8"
|
||||
standalone = "no"
|
||||
|
||||
rdf = RDF.new(version, encoding, standalone)
|
||||
|
||||
doc = REXML::Document.new(rdf.to_s(false))
|
||||
|
||||
xmldecl = doc.xml_decl
|
||||
|
||||
%w(version encoding standalone).each do |x|
|
||||
assert_equal(instance_eval(x), xmldecl.send(x))
|
||||
module RSS
|
||||
class TestCore < TestCase
|
||||
|
||||
def setup
|
||||
|
||||
@rdf_prefix = "rdf"
|
||||
@rdf_uri = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
@uri = "http://purl.org/rss/1.0/"
|
||||
|
||||
end
|
||||
|
||||
assert_equal(@rdf_uri, doc.root.namespace)
|
||||
|
||||
end
|
||||
|
||||
def test_not_displayed_xml_stylesheets
|
||||
rdf = RDF.new()
|
||||
plain_rdf = rdf.to_s
|
||||
3.times do
|
||||
rdf.xml_stylesheets.push(XMLStyleSheet.new)
|
||||
assert_equal(plain_rdf, rdf.to_s)
|
||||
end
|
||||
end
|
||||
|
||||
def test_xml_stylesheets
|
||||
[
|
||||
[{:href => "a.xsl", :type => "text/xsl"}],
|
||||
[
|
||||
{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:href => "a.css", :type => "text/css"},
|
||||
],
|
||||
].each do |attrs_ary|
|
||||
assert_xml_stylesheet_pis(attrs_ary)
|
||||
end
|
||||
end
|
||||
|
||||
def test_channel
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
link = "http://hoge.com"
|
||||
description = "fugafugafugafuga"
|
||||
resource = "http://hoge.com/hoge.png"
|
||||
image = RDF::Channel::Image.new(resource)
|
||||
items = RDF::Channel::Items.new
|
||||
textinput = RDF::Channel::Textinput.new(resource)
|
||||
|
||||
channel = RDF::Channel.new(about)
|
||||
%w(title link description image items textinput).each do |x|
|
||||
channel.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(channel.to_s))
|
||||
c = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, c.attributes["about"])
|
||||
%w(title link description image textinput).each do |x|
|
||||
elem = c.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
if x == "image" or x == "textinput"
|
||||
excepted = resource
|
||||
res = elem.attributes.get_attribute("resource")
|
||||
assert_equal(@rdf_uri, res.namespace)
|
||||
value = res.value
|
||||
else
|
||||
excepted = instance_eval(x)
|
||||
value = elem.text
|
||||
def test_RDF
|
||||
|
||||
version = "1.0"
|
||||
encoding = "UTF-8"
|
||||
standalone = "no"
|
||||
|
||||
rdf = RDF.new(version, encoding, standalone)
|
||||
|
||||
doc = REXML::Document.new(rdf.to_s(false))
|
||||
|
||||
xmldecl = doc.xml_decl
|
||||
|
||||
%w(version encoding standalone).each do |x|
|
||||
assert_equal(instance_eval(x), xmldecl.send(x))
|
||||
end
|
||||
assert_equal(excepted, value)
|
||||
|
||||
assert_equal(@rdf_uri, doc.root.namespace)
|
||||
|
||||
end
|
||||
|
||||
def test_not_displayed_xml_stylesheets
|
||||
rdf = RDF.new()
|
||||
plain_rdf = rdf.to_s
|
||||
3.times do
|
||||
rdf.xml_stylesheets.push(XMLStyleSheet.new)
|
||||
assert_equal(plain_rdf, rdf.to_s)
|
||||
end
|
||||
end
|
||||
|
||||
def test_xml_stylesheets
|
||||
[
|
||||
[{:href => "a.xsl", :type => "text/xsl"}],
|
||||
[
|
||||
{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:href => "a.css", :type => "text/css"},
|
||||
],
|
||||
].each do |attrs_ary|
|
||||
assert_xml_stylesheet_pis(attrs_ary)
|
||||
end
|
||||
end
|
||||
|
||||
def test_channel
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
link = "http://hoge.com"
|
||||
description = "fugafugafugafuga"
|
||||
resource = "http://hoge.com/hoge.png"
|
||||
image = RDF::Channel::Image.new(resource)
|
||||
items = RDF::Channel::Items.new
|
||||
textinput = RDF::Channel::Textinput.new(resource)
|
||||
|
||||
channel = RDF::Channel.new(about)
|
||||
%w(title link description image items textinput).each do |x|
|
||||
channel.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(channel.to_s))
|
||||
c = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, c.attributes["about"])
|
||||
%w(title link description image textinput).each do |x|
|
||||
elem = c.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
if x == "image" or x == "textinput"
|
||||
excepted = resource
|
||||
res = elem.attributes.get_attribute("resource")
|
||||
assert_equal(@rdf_uri, res.namespace)
|
||||
value = res.value
|
||||
else
|
||||
excepted = instance_eval(x)
|
||||
value = elem.text
|
||||
end
|
||||
assert_equal(excepted, value)
|
||||
end
|
||||
assert_equal(@uri, c.elements["items"].namespace)
|
||||
assert_equal("items", c.elements["items"].name)
|
||||
|
||||
end
|
||||
|
||||
def test_channel_image
|
||||
|
||||
resource = "http://hoge.com/hoge.png"
|
||||
image = RDF::Channel::Image.new(resource)
|
||||
|
||||
doc = REXML::Document.new(make_RDF(image.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal("image", i.name)
|
||||
assert_equal(@uri, i.namespace)
|
||||
|
||||
res = i.attributes.get_attribute("resource")
|
||||
|
||||
assert_equal(@rdf_uri, res.namespace)
|
||||
assert_equal(resource, res.value)
|
||||
|
||||
end
|
||||
|
||||
def test_channel_textinput
|
||||
|
||||
resource = "http://hoge.com/hoge.png"
|
||||
textinput = RDF::Channel::Textinput.new(resource)
|
||||
|
||||
doc = REXML::Document.new(make_RDF(textinput.to_s))
|
||||
t = doc.root.elements[1]
|
||||
|
||||
assert_equal("textinput", t.name)
|
||||
assert_equal(@uri, t.namespace)
|
||||
|
||||
res = t.attributes.get_attribute("resource")
|
||||
|
||||
assert_equal(@rdf_uri, res.namespace)
|
||||
assert_equal(resource, res.value)
|
||||
|
||||
end
|
||||
|
||||
def test_items
|
||||
|
||||
items = RDF::Channel::Items.new
|
||||
|
||||
doc = REXML::Document.new(make_RDF(items.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal("items", i.name)
|
||||
assert_equal(@uri, i.namespace)
|
||||
|
||||
assert_equal(1, i.elements.size)
|
||||
assert_equal("Seq", i.elements[1].name)
|
||||
assert_equal(@rdf_uri, i.elements[1].namespace)
|
||||
|
||||
end
|
||||
|
||||
def test_seq
|
||||
|
||||
seq = RDF::Seq.new
|
||||
|
||||
doc = REXML::Document.new(make_RDF(seq.to_s))
|
||||
s = doc.root.elements[1]
|
||||
|
||||
assert_equal("Seq", s.name)
|
||||
assert_equal(@rdf_uri, s.namespace)
|
||||
|
||||
end
|
||||
|
||||
def test_li
|
||||
|
||||
resource = "http://hoge.com/"
|
||||
li = RDF::Li.new(resource)
|
||||
|
||||
doc = REXML::Document.new(make_RDF(li.to_s))
|
||||
l = doc.root.elements[1]
|
||||
|
||||
assert_equal("li", l.name)
|
||||
assert_equal(@rdf_uri, l.namespace(l.prefix))
|
||||
|
||||
res = l.attributes.get_attribute("resource")
|
||||
|
||||
assert_equal('', res.instance_eval("@prefix"))
|
||||
assert_equal(resource, res.value)
|
||||
|
||||
end
|
||||
|
||||
def test_image
|
||||
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
url = "http://hoge.com/hoge"
|
||||
link = "http://hoge.com/fuga"
|
||||
|
||||
image = RDF::Image.new(about)
|
||||
%w(title url link).each do |x|
|
||||
image.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(image.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, i.attributes["about"])
|
||||
%w(title url link).each do |x|
|
||||
elem = i.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
assert_equal(instance_eval(x), elem.text)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_item
|
||||
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
link = "http://hoge.com/fuga"
|
||||
description = "hogehogehoge"
|
||||
|
||||
item = RDF::Item.new(about)
|
||||
%w(title link description).each do |x|
|
||||
item.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(item.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, i.attributes["about"])
|
||||
%w(title link description).each do |x|
|
||||
elem = i.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
assert_equal(instance_eval(x), elem.text)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_textinput
|
||||
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
link = "http://hoge.com/fuga"
|
||||
name = "foo"
|
||||
description = "hogehogehoge"
|
||||
|
||||
textinput = RDF::Textinput.new(about)
|
||||
%w(title link name description).each do |x|
|
||||
textinput.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(textinput.to_s))
|
||||
t = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, t.attributes["about"])
|
||||
%w(title link name description).each do |x|
|
||||
elem = t.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
assert_equal(instance_eval(x), elem.text)
|
||||
end
|
||||
|
||||
end
|
||||
assert_equal(@uri, c.elements["items"].namespace)
|
||||
assert_equal("items", c.elements["items"].name)
|
||||
|
||||
end
|
||||
|
||||
def test_channel_image
|
||||
|
||||
resource = "http://hoge.com/hoge.png"
|
||||
image = RDF::Channel::Image.new(resource)
|
||||
|
||||
doc = REXML::Document.new(make_RDF(image.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal("image", i.name)
|
||||
assert_equal(@uri, i.namespace)
|
||||
|
||||
res = i.attributes.get_attribute("resource")
|
||||
|
||||
assert_equal(@rdf_uri, res.namespace)
|
||||
assert_equal(resource, res.value)
|
||||
|
||||
end
|
||||
|
||||
def test_channel_textinput
|
||||
|
||||
resource = "http://hoge.com/hoge.png"
|
||||
textinput = RDF::Channel::Textinput.new(resource)
|
||||
|
||||
doc = REXML::Document.new(make_RDF(textinput.to_s))
|
||||
t = doc.root.elements[1]
|
||||
|
||||
assert_equal("textinput", t.name)
|
||||
assert_equal(@uri, t.namespace)
|
||||
|
||||
res = t.attributes.get_attribute("resource")
|
||||
|
||||
assert_equal(@rdf_uri, res.namespace)
|
||||
assert_equal(resource, res.value)
|
||||
|
||||
end
|
||||
|
||||
def test_items
|
||||
|
||||
items = RDF::Channel::Items.new
|
||||
|
||||
doc = REXML::Document.new(make_RDF(items.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal("items", i.name)
|
||||
assert_equal(@uri, i.namespace)
|
||||
|
||||
assert_equal(1, i.elements.size)
|
||||
assert_equal("Seq", i.elements[1].name)
|
||||
assert_equal(@rdf_uri, i.elements[1].namespace)
|
||||
|
||||
end
|
||||
|
||||
def test_seq
|
||||
|
||||
seq = RDF::Seq.new
|
||||
|
||||
doc = REXML::Document.new(make_RDF(seq.to_s))
|
||||
s = doc.root.elements[1]
|
||||
|
||||
assert_equal("Seq", s.name)
|
||||
assert_equal(@rdf_uri, s.namespace)
|
||||
|
||||
end
|
||||
|
||||
def test_li
|
||||
|
||||
resource = "http://hoge.com/"
|
||||
li = RDF::Li.new(resource)
|
||||
|
||||
doc = REXML::Document.new(make_RDF(li.to_s))
|
||||
l = doc.root.elements[1]
|
||||
|
||||
assert_equal("li", l.name)
|
||||
assert_equal(@rdf_uri, l.namespace(l.prefix))
|
||||
|
||||
res = l.attributes.get_attribute("resource")
|
||||
|
||||
assert_equal('', res.instance_eval("@prefix"))
|
||||
assert_equal(resource, res.value)
|
||||
|
||||
end
|
||||
|
||||
def test_image
|
||||
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
url = "http://hoge.com/hoge"
|
||||
link = "http://hoge.com/fuga"
|
||||
|
||||
image = RDF::Image.new(about)
|
||||
%w(title url link).each do |x|
|
||||
image.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(image.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, i.attributes["about"])
|
||||
%w(title url link).each do |x|
|
||||
elem = i.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
assert_equal(instance_eval(x), elem.text)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_item
|
||||
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
link = "http://hoge.com/fuga"
|
||||
description = "hogehogehoge"
|
||||
|
||||
item = RDF::Item.new(about)
|
||||
%w(title link description).each do |x|
|
||||
item.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(item.to_s))
|
||||
i = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, i.attributes["about"])
|
||||
%w(title link description).each do |x|
|
||||
elem = i.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
assert_equal(instance_eval(x), elem.text)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_textinput
|
||||
|
||||
about = "http://hoge.com"
|
||||
title = "fugafuga"
|
||||
link = "http://hoge.com/fuga"
|
||||
name = "foo"
|
||||
description = "hogehogehoge"
|
||||
|
||||
textinput = RDF::Textinput.new(about)
|
||||
%w(title link name description).each do |x|
|
||||
textinput.send("#{x}=", instance_eval(x))
|
||||
end
|
||||
|
||||
doc = REXML::Document.new(make_RDF(textinput.to_s))
|
||||
t = doc.root.elements[1]
|
||||
|
||||
assert_equal(about, t.attributes["about"])
|
||||
%w(title link name description).each do |x|
|
||||
elem = t.elements[x]
|
||||
assert_equal(x, elem.name)
|
||||
assert_equal(@uri, elem.namespace)
|
||||
assert_equal(instance_eval(x), elem.text)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,25 +1,26 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/1.0"
|
||||
require "rss/2.0"
|
||||
require "common"
|
||||
|
||||
class TestAccessor < Test::Unit::TestCase
|
||||
include TestRSSMixin
|
||||
|
||||
def test_date
|
||||
channel = Rss::Channel.new
|
||||
channel.do_validate = false
|
||||
channel.pubDate = nil
|
||||
assert_nil(channel.pubDate)
|
||||
|
||||
time = Time.now
|
||||
channel.pubDate = time
|
||||
assert_equal(time, channel.pubDate)
|
||||
|
||||
channel.pubDate = nil
|
||||
assert_nil(channel.pubDate)
|
||||
module RSS
|
||||
class TestAccessor < TestCase
|
||||
|
||||
def test_date
|
||||
channel = Rss::Channel.new
|
||||
channel.do_validate = false
|
||||
channel.pubDate = nil
|
||||
assert_nil(channel.pubDate)
|
||||
|
||||
time = Time.now
|
||||
channel.pubDate = time
|
||||
assert_equal(time, channel.pubDate)
|
||||
|
||||
channel.pubDate = nil
|
||||
assert_nil(channel.pubDate)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,96 +1,97 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "cgi"
|
||||
require "rexml/document"
|
||||
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/1.0"
|
||||
require "rss/content"
|
||||
require "common"
|
||||
|
||||
class TestContent < Test::Unit::TestCase
|
||||
include TestRSSMixin
|
||||
|
||||
def setup
|
||||
@prefix = "content"
|
||||
@uri = "http://purl.org/rss/1.0/modules/content/"
|
||||
module RSS
|
||||
class TestContent < TestCase
|
||||
|
||||
@parents = %w(item)
|
||||
|
||||
@elems = {
|
||||
:encoded => "<em>ATTENTION</em>",
|
||||
}
|
||||
|
||||
@content_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
def setup
|
||||
@prefix = "content"
|
||||
@uri = "http://purl.org/rss/1.0/modules/content/"
|
||||
|
||||
@parents = %w(item)
|
||||
|
||||
@elems = {
|
||||
:encoded => "<em>ATTENTION</em>",
|
||||
}
|
||||
|
||||
@content_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
#{make_channel()}
|
||||
#{make_image()}
|
||||
#{make_item(@content_nodes)}
|
||||
#{make_textinput()}
|
||||
EOR
|
||||
|
||||
@rss = Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
def test_parser
|
||||
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
@rss = Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
def test_parser
|
||||
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
@elems.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "item") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
@elems.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "item") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
#{make_channel()}
|
||||
#{make_item(("<" + @prefix + ":" + tag.to_s + ">" +
|
||||
CGI.escapeHTML(value.to_s) +
|
||||
"</" + @prefix + ":" + tag.to_s + ">") * 2)}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def test_accessor
|
||||
def test_accessor
|
||||
|
||||
new_value = {
|
||||
:encoded => "<![CDATA[<it>hoge</it>]]>",
|
||||
}
|
||||
new_value = {
|
||||
:encoded => "<![CDATA[<it>hoge</it>]]>",
|
||||
}
|
||||
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
meth = "#{RSS::CONTENT_PREFIX}_#{name}"
|
||||
assert_equal(value, @rss.send(parent).send(meth))
|
||||
@rss.send(parent).send("#{meth}=", new_value[name].to_s)
|
||||
assert_equal(new_value[name], @rss.send(parent).send(meth))
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
meth = "#{RSS::CONTENT_PREFIX}_#{name}"
|
||||
assert_equal(value, @rss.send(parent).send(meth))
|
||||
@rss.send(parent).send("#{meth}=", new_value[name].to_s)
|
||||
assert_equal(new_value[name], @rss.send(parent).send(meth))
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = "<#{@prefix}:#{name}>#{CGI.escapeHTML(value)}</#{@prefix}:#{name}>"
|
||||
@parents.each do |parent|
|
||||
meth = "#{RSS::CONTENT_PREFIX}_#{name}_element"
|
||||
assert_equal(excepted, @rss.send(parent).send(meth))
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = "<#{@prefix}:#{name}>#{CGI.escapeHTML(value)}</#{@prefix}:#{name}>"
|
||||
@parents.each do |parent|
|
||||
meth = "#{RSS::CONTENT_PREFIX}_#{name}_element"
|
||||
assert_equal(excepted, @rss.send(parent).send(meth))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(elem.text, @elems[elem.name.intern].to_s)
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(elem.text, @elems[elem.name.intern].to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,125 +1,126 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "cgi"
|
||||
require "rexml/document"
|
||||
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/1.0"
|
||||
require "rss/dublincore"
|
||||
require "common"
|
||||
|
||||
class TestDublinCore < Test::Unit::TestCase
|
||||
include TestRSSMixin
|
||||
module RSS
|
||||
class TestDublinCore < TestCase
|
||||
|
||||
def setup
|
||||
@prefix = "dc"
|
||||
@uri = "http://purl.org/dc/elements/1.1/"
|
||||
|
||||
@parents = %w(channel image item textinput)
|
||||
def setup
|
||||
@prefix = "dc"
|
||||
@uri = "http://purl.org/dc/elements/1.1/"
|
||||
|
||||
@parents = %w(channel image item textinput)
|
||||
|
||||
t = Time.iso8601("2000-01-01T12:00:05+00:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
end
|
||||
|
||||
@elems = {
|
||||
:title => "hoge",
|
||||
:description =>
|
||||
" XML is placing increasingly heavy loads on
|
||||
the existing technical infrastructure of the Internet.",
|
||||
:creator => "Rael Dornfest (mailto:rael@oreilly.com)",
|
||||
:subject => "XML",
|
||||
:publisher => "The O'Reilly Network",
|
||||
:contributor => "hogehoge",
|
||||
:type => "fugafuga",
|
||||
:format => "hohoho",
|
||||
:identifier => "fufufu",
|
||||
:source => "barbar",
|
||||
:language => "ja",
|
||||
:relation => "cococo",
|
||||
:rights => "Copyright (c) 2000 O'Reilly & Associates, Inc.",
|
||||
:date => t,
|
||||
}
|
||||
|
||||
t = Time.iso8601("2000-01-01T12:00:05+00:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
end
|
||||
@dc_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@elems = {
|
||||
:title => "hoge",
|
||||
:description =>
|
||||
" XML is placing increasingly heavy loads on the existing technical
|
||||
infrastructure of the Internet.",
|
||||
:creator => "Rael Dornfest (mailto:rael@oreilly.com)",
|
||||
:subject => "XML",
|
||||
:publisher => "The O'Reilly Network",
|
||||
:contributor => "hogehoge",
|
||||
:type => "fugafuga",
|
||||
:format => "hohoho",
|
||||
:identifier => "fufufu",
|
||||
:source => "barbar",
|
||||
:language => "ja",
|
||||
:relation => "cococo",
|
||||
:rights => "Copyright (c) 2000 O'Reilly & Associates, Inc.",
|
||||
:date => t,
|
||||
}
|
||||
|
||||
@dc_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
#{make_channel(@dc_nodes)}
|
||||
#{make_image(@dc_nodes)}
|
||||
#{make_item(@dc_nodes)}
|
||||
#{make_textinput(@dc_nodes)}
|
||||
EOR
|
||||
|
||||
@rss = Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
def test_parser
|
||||
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
@rss = Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
def test_parser
|
||||
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
@elems.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "channel") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
@elems.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "channel") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
#{make_channel(("<" + @prefix + ":" + tag.to_s + ">" +
|
||||
value.to_s +
|
||||
"</" + @prefix + ":" + tag.to_s + ">") * 2)}
|
||||
#{make_item}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def test_accessor
|
||||
def test_accessor
|
||||
|
||||
new_value = "hoge"
|
||||
new_value = "hoge"
|
||||
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
parsed_value = @rss.send(parent).send("dc_#{name}")
|
||||
if parsed_value.kind_of?(String)
|
||||
parsed_value = CGI.escapeHTML(parsed_value)
|
||||
end
|
||||
assert_equal(value, parsed_value)
|
||||
if name == :date
|
||||
t = Time.iso8601("2003-01-01T02:30:23+09:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
parsed_value = @rss.send(parent).send("dc_#{name}")
|
||||
if parsed_value.kind_of?(String)
|
||||
parsed_value = CGI.escapeHTML(parsed_value)
|
||||
end
|
||||
@rss.send(parent).send("dc_#{name}=", t.iso8601)
|
||||
assert_equal(t, @rss.send(parent).send("dc_#{name}"))
|
||||
else
|
||||
@rss.send(parent).send("dc_#{name}=", new_value)
|
||||
assert_equal(new_value, @rss.send(parent).send("dc_#{name}"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = "<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
|
||||
@parents.each do |parent|
|
||||
assert_equal(excepted, @rss.send(parent).send("dc_#{name}_element"))
|
||||
end
|
||||
end
|
||||
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(CGI.escapeHTML(elem.text), @elems[elem.name.intern].to_s)
|
||||
assert_equal(value, parsed_value)
|
||||
if name == :date
|
||||
t = Time.iso8601("2003-01-01T02:30:23+09:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
end
|
||||
@rss.send(parent).send("dc_#{name}=", t.iso8601)
|
||||
assert_equal(t, @rss.send(parent).send("dc_#{name}"))
|
||||
else
|
||||
@rss.send(parent).send("dc_#{name}=", new_value)
|
||||
assert_equal(new_value, @rss.send(parent).send("dc_#{name}"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = "<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
|
||||
@parents.each do |parent|
|
||||
assert_equal(excepted, @rss.send(parent).send("dc_#{name}_element"))
|
||||
end
|
||||
end
|
||||
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(CGI.escapeHTML(elem.text), @elems[elem.name.intern].to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,130 +1,138 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "rss/1.0"
|
||||
require "common"
|
||||
require "rss-testcase"
|
||||
|
||||
class TestParser < Test::Unit::TestCase
|
||||
include TestRSSMixin
|
||||
|
||||
def test_RDF
|
||||
assert_ns("", RDF::URI) do
|
||||
Parser.parse(<<-EOR)
|
||||
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}
|
||||
<RDF/>
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
assert_ns("", RDF::URI) do
|
||||
Parser.parse(<<-EOR)
|
||||
assert_ns("", RDF::URI) do
|
||||
Parser.parse(<<-EOR)
|
||||
#{make_xmldecl}
|
||||
<RDF xmlns="hoge"/>
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
assert_ns("rdf", RDF::URI) do
|
||||
Parser.parse(<<-EOR)
|
||||
assert_ns("rdf", RDF::URI) do
|
||||
Parser.parse(<<-EOR)
|
||||
#{make_xmldecl}
|
||||
<rdf:RDF xmlns:rdf="hoge"/>
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
|
||||
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
|
||||
#{make_xmldecl}
|
||||
<rdf:RDF xmlns:rdf="#{RSS::RDF::URI}"/>
|
||||
EOR
|
||||
|
||||
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
|
||||
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
|
||||
#{make_xmldecl}
|
||||
<RDF xmlns="#{RSS::RDF::URI}"/>
|
||||
EOR
|
||||
|
||||
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
|
||||
assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
|
||||
#{make_xmldecl}
|
||||
<RDF xmlns="#{RSS::RDF::URI}"/>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
#{make_channel}
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
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))
|
||||
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)
|
||||
|
||||
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
|
||||
|
||||
end
|
||||
def test_channel
|
||||
|
||||
def test_channel
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "channel", "about")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "channel", "about")
|
||||
<channel />
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "channel")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "channel")
|
||||
<channel rdf:about="http://example.com/"/>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "channel")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "channel")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
</channel>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<EOR), :missing_tag, "description", "channel")
|
||||
assert_parse(make_RDF(<<EOR), :missing_tag, "description", "channel")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
</channel>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
|
@ -132,7 +140,7 @@ EOR
|
|||
</channel>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "resource")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "resource")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
|
@ -141,7 +149,7 @@ EOR
|
|||
</channel>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
|
@ -150,7 +158,7 @@ EOR
|
|||
</channel>
|
||||
EOR
|
||||
|
||||
rss = make_RDF(<<-EOR)
|
||||
rss = make_RDF(<<-EOR)
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
|
@ -160,15 +168,15 @@ EOR
|
|||
</channel>
|
||||
EOR
|
||||
|
||||
assert_missing_tag("Seq", "items") do
|
||||
Parser.parse(rss)
|
||||
end
|
||||
assert_missing_tag("Seq", "items") do
|
||||
Parser.parse(rss)
|
||||
end
|
||||
|
||||
assert_missing_tag("item", "RDF") do
|
||||
Parser.parse(rss, false).validate
|
||||
end
|
||||
assert_missing_tag("item", "RDF") do
|
||||
Parser.parse(rss, false).validate
|
||||
end
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
|
@ -181,7 +189,7 @@ EOR
|
|||
</channel>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "resource")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "resource")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
|
@ -195,7 +203,7 @@ EOR
|
|||
</channel>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
<channel rdf:about="http://example.com/">
|
||||
<title>hoge</title>
|
||||
<link>http://example.com/</link>
|
||||
|
@ -209,30 +217,30 @@ EOR
|
|||
</channel>
|
||||
EOR
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def test_image
|
||||
def test_image
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "about")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "about")
|
||||
#{make_channel}
|
||||
<image>
|
||||
</image>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "image")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "image")
|
||||
#{make_channel}
|
||||
<image rdf:about="http://example.com/hoge.png">
|
||||
</image>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "url", "image")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "url", "image")
|
||||
#{make_channel}
|
||||
<image rdf:about="http://example.com/hoge.png">
|
||||
<title>hoge</title>
|
||||
</image>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "image")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "image")
|
||||
#{make_channel}
|
||||
<image rdf:about="http://example.com/hoge.png">
|
||||
<title>hoge</title>
|
||||
|
@ -240,7 +248,7 @@ EOR
|
|||
</image>
|
||||
EOR
|
||||
|
||||
rss = make_RDF(<<-EOR)
|
||||
rss = make_RDF(<<-EOR)
|
||||
#{make_channel}
|
||||
<image rdf:about="http://example.com/hoge.png">
|
||||
<title>hoge</title>
|
||||
|
@ -249,15 +257,15 @@ EOR
|
|||
</image>
|
||||
EOR
|
||||
|
||||
assert_missing_tag("url", "image") do
|
||||
Parser.parse(rss)
|
||||
end
|
||||
assert_missing_tag("url", "image") do
|
||||
Parser.parse(rss)
|
||||
end
|
||||
|
||||
assert_missing_tag("item", "RDF") do
|
||||
Parser.parse(rss, false).validate
|
||||
end
|
||||
assert_missing_tag("item", "RDF") do
|
||||
Parser.parse(rss, false).validate
|
||||
end
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
|
||||
#{make_channel}
|
||||
<image rdf:about="http://example.com/hoge.png">
|
||||
<title>hoge</title>
|
||||
|
@ -266,25 +274,25 @@ EOR
|
|||
</image>
|
||||
EOR
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def test_item
|
||||
def test_item
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "item", "about")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "item", "about")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
<item>
|
||||
</item>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "item")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "item")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
<item rdf:about="http://example.com/hoge.html">
|
||||
</item>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "item")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "item")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
<item rdf:about="http://example.com/hoge.html">
|
||||
|
@ -292,8 +300,8 @@ EOR
|
|||
</item>
|
||||
EOR
|
||||
|
||||
assert_too_much_tag("title", "item") do
|
||||
Parser.parse(make_RDF(<<-EOR))
|
||||
assert_too_much_tag("title", "item") do
|
||||
Parser.parse(make_RDF(<<-EOR))
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
<item rdf:about="http://example.com/hoge.html">
|
||||
|
@ -302,9 +310,9 @@ EOR
|
|||
<link>http://example.com/hoge.html</link>
|
||||
</item>
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :nothing_raised)
|
||||
assert_parse(make_RDF(<<-EOR), :nothing_raised)
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
<item rdf:about="http://example.com/hoge.html">
|
||||
|
@ -313,7 +321,7 @@ EOR
|
|||
</item>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :nothing_raised)
|
||||
assert_parse(make_RDF(<<-EOR), :nothing_raised)
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
<item rdf:about="http://example.com/hoge.html">
|
||||
|
@ -323,11 +331,11 @@ EOR
|
|||
</item>
|
||||
EOR
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def test_textinput
|
||||
def test_textinput
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "about")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "about")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
|
@ -335,7 +343,7 @@ EOR
|
|||
</textinput>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "textinput")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "textinput")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
|
@ -343,7 +351,7 @@ EOR
|
|||
</textinput>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "description", "textinput")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "description", "textinput")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
|
@ -352,8 +360,8 @@ EOR
|
|||
</textinput>
|
||||
EOR
|
||||
|
||||
assert_too_much_tag("title", "textinput") do
|
||||
Parser.parse(make_RDF(<<-EOR))
|
||||
assert_too_much_tag("title", "textinput") do
|
||||
Parser.parse(make_RDF(<<-EOR))
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
|
@ -363,9 +371,9 @@ EOR
|
|||
<description>hogehoge</description>
|
||||
</textinput>
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "name", "textinput")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "name", "textinput")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
|
@ -375,7 +383,7 @@ EOR
|
|||
</textinput>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "textinput")
|
||||
assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "textinput")
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
|
@ -386,7 +394,7 @@ EOR
|
|||
</textinput>
|
||||
EOR
|
||||
|
||||
assert_parse(make_RDF(<<-EOR), :nothing_raised)
|
||||
assert_parse(make_RDF(<<-EOR), :nothing_raised)
|
||||
#{make_channel}
|
||||
#{make_image}
|
||||
#{make_item}
|
||||
|
@ -398,32 +406,34 @@ EOR
|
|||
</textinput>
|
||||
EOR
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def test_ignore
|
||||
def test_ignore
|
||||
|
||||
rss = make_RDF(<<-EOR)
|
||||
rss = make_RDF(<<-EOR)
|
||||
#{make_channel}
|
||||
#{make_item}
|
||||
<a/>
|
||||
EOR
|
||||
|
||||
assert_parse(rss, :nothing_raised)
|
||||
assert_parse(rss, :nothing_raised)
|
||||
|
||||
assert_not_excepted_tag("a", "RDF") do
|
||||
Parser.parse(rss, true, false)
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -1,124 +1,125 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "cgi"
|
||||
require "rexml/document"
|
||||
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/1.0"
|
||||
require "rss/syndication"
|
||||
require "common"
|
||||
|
||||
class TestSyndication < Test::Unit::TestCase
|
||||
include TestRSSMixin
|
||||
|
||||
def setup
|
||||
@prefix = "sy"
|
||||
@uri = "http://purl.org/rss/1.0/modules/syndication/"
|
||||
module RSS
|
||||
class TestSyndication < TestCase
|
||||
|
||||
@parents = %w(channel)
|
||||
|
||||
t = Time.iso8601("2000-01-01T12:00:05+00:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
end
|
||||
|
||||
@elems = {
|
||||
:updatePeriod => "hourly",
|
||||
:updateFrequency => 2,
|
||||
:updateBase => t,
|
||||
}
|
||||
|
||||
@sy_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
def setup
|
||||
@prefix = "sy"
|
||||
@uri = "http://purl.org/rss/1.0/modules/syndication/"
|
||||
|
||||
@parents = %w(channel)
|
||||
|
||||
t = Time.iso8601("2000-01-01T12:00:05+00:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
end
|
||||
|
||||
@elems = {
|
||||
:updatePeriod => "hourly",
|
||||
:updateFrequency => 2,
|
||||
:updateBase => t,
|
||||
}
|
||||
|
||||
@sy_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
#{make_channel(@sy_nodes)}
|
||||
#{make_image()}
|
||||
#{make_item()}
|
||||
#{make_textinput()}
|
||||
EOR
|
||||
|
||||
@rss = Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
def test_parser
|
||||
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
@rss = Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
@elems.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "channel") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
|
||||
def test_parser
|
||||
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
@elems.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "channel") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
#{make_channel(("<" + @prefix + ":" + tag.to_s + ">" +
|
||||
CGI.escapeHTML(value.to_s) +
|
||||
"</" + @prefix + ":" + tag.to_s + ">") * 2)}
|
||||
#{make_item}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def test_accessor
|
||||
|
||||
t = Time.iso8601("2003-01-01T12:00:23+09:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
end
|
||||
|
||||
new_value = {
|
||||
:updatePeriod => "daily",
|
||||
:updateFrequency => +11,
|
||||
:updateBase => t,
|
||||
}
|
||||
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
assert_equal(value, @rss.send(parent).send("sy_#{name}"))
|
||||
@rss.send(parent).send("sy_#{name}=", new_value[name].to_s)
|
||||
assert_equal(new_value[name], @rss.send(parent).send("sy_#{name}"))
|
||||
def test_accessor
|
||||
|
||||
t = Time.iso8601("2003-01-01T12:00:23+09:00")
|
||||
class << t
|
||||
alias_method(:to_s, :iso8601)
|
||||
end
|
||||
end
|
||||
|
||||
%w(hourly daily weekly monthly yearly).each do |x|
|
||||
@parents.each do |parent|
|
||||
assert_nothing_raised do
|
||||
@rss.send(parent).sy_updatePeriod = x
|
||||
|
||||
new_value = {
|
||||
:updatePeriod => "daily",
|
||||
:updateFrequency => +11,
|
||||
:updateBase => t,
|
||||
}
|
||||
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
assert_equal(value, @rss.send(parent).send("sy_#{name}"))
|
||||
@rss.send(parent).send("sy_#{name}=", new_value[name].to_s)
|
||||
assert_equal(new_value[name], @rss.send(parent).send("sy_#{name}"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
%w(-2 0.3 -0.4).each do |x|
|
||||
@parents.each do |parent|
|
||||
assert_not_available_value("updateBase", x) do
|
||||
@rss.send(parent).sy_updateBase = x
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = "<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
|
||||
@parents.each do |parent|
|
||||
assert_equal(excepted, @rss.send(parent).send("sy_#{name}_element"))
|
||||
end
|
||||
end
|
||||
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(elem.text, @elems[elem.name.intern].to_s)
|
||||
|
||||
%w(hourly daily weekly monthly yearly).each do |x|
|
||||
@parents.each do |parent|
|
||||
assert_nothing_raised do
|
||||
@rss.send(parent).sy_updatePeriod = x
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
%w(-2 0.3 -0.4).each do |x|
|
||||
@parents.each do |parent|
|
||||
assert_not_available_value("updateBase", x) do
|
||||
@rss.send(parent).sy_updateBase = x
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = "<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
|
||||
@parents.each do |parent|
|
||||
assert_equal(excepted, @rss.send(parent).send("sy_#{name}_element"))
|
||||
end
|
||||
end
|
||||
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(elem.text, @elems[elem.name.intern].to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,135 +1,137 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "cgi"
|
||||
require "rexml/document"
|
||||
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/1.0"
|
||||
require "rss/2.0"
|
||||
require "rss/trackback"
|
||||
require "common"
|
||||
|
||||
class TestTrackBack < Test::Unit::TestCase
|
||||
include TestRSSMixin
|
||||
|
||||
def setup
|
||||
@prefix = "trackback"
|
||||
@uri = "http://madskills.com/public/xml/rss/module/trackback/"
|
||||
module RSS
|
||||
class TestTrackBack < TestCase
|
||||
|
||||
@parents = %w(item)
|
||||
|
||||
@elems = {
|
||||
:ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
|
||||
:about => "http://foo.com/trackback/tb.cgi?tb_id=20020923",
|
||||
}
|
||||
|
||||
@content_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name} rdf:resource=\"#{CGI.escapeHTML(value.to_s)}\"/>"
|
||||
end.join("\n")
|
||||
|
||||
@content_nodes2 = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
def setup
|
||||
@prefix = "trackback"
|
||||
@uri = "http://madskills.com/public/xml/rss/module/trackback/"
|
||||
|
||||
@parents = %w(item)
|
||||
|
||||
@elems = {
|
||||
:ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
|
||||
:about => "http://foo.com/trackback/tb.cgi?tb_id=20020923",
|
||||
}
|
||||
|
||||
@content_nodes = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name} rdf:resource=\"#{CGI.escapeHTML(value.to_s)}\"/>"
|
||||
end.join("\n")
|
||||
|
||||
@content_nodes2 = @elems.collect do |name, value|
|
||||
"<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
|
||||
end.join("\n")
|
||||
|
||||
@rss_source = make_RDF(<<-EOR, {@prefix => @uri})
|
||||
#{make_channel()}
|
||||
#{make_image()}
|
||||
#{make_item(@content_nodes)}
|
||||
#{make_textinput()}
|
||||
EOR
|
||||
|
||||
@rss = Parser.parse(@rss_source)
|
||||
@rss = Parser.parse(@rss_source)
|
||||
|
||||
@rss2_source = make_Rss2(nil, {@prefix => @uri}) do
|
||||
make_channel2(nil) do
|
||||
make_item2(@content_nodes2)
|
||||
end
|
||||
end
|
||||
|
||||
@rss2 = Parser.parse(@rss2_source, false)
|
||||
end
|
||||
|
||||
def test_parser
|
||||
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
@elems.find_all{|k, v| k == :ping}.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "item") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
#{make_channel()}
|
||||
#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
|
||||
CGI.escapeHTML(value.to_s) +
|
||||
"\"/>") * 2)}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
@elems.find_all{|k, v| k == :about}.each do |tag, value|
|
||||
assert_missing_tag("trackback:ping", "item") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
#{make_channel()}
|
||||
#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
|
||||
CGI.escapeHTML(value.to_s) +
|
||||
"\"/>") * 2)}
|
||||
EOR
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_accessor
|
||||
|
||||
new_value = {
|
||||
:ping => "http://baz.com/trackback/tb.cgi?tb_id=20030808",
|
||||
:about => "http://hoge.com/trackback/tb.cgi?tb_id=90030808",
|
||||
}
|
||||
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
accessor = "#{RSS::TRACKBACK_PREFIX}_#{name}"
|
||||
target_accessor = "resource"
|
||||
target = @rss.send(parent).send(accessor)
|
||||
target2 = @rss2.channel.send(parent, -1)
|
||||
assert_equal(value, target.send(target_accessor))
|
||||
assert_equal(value, target2.send(accessor))
|
||||
target.send("#{target_accessor}=", new_value[name].to_s)
|
||||
if name == :about
|
||||
# abount is zero or more
|
||||
target2.send("#{accessor}=", 0, new_value[name].to_s)
|
||||
else
|
||||
target2.send("#{accessor}=", new_value[name].to_s)
|
||||
@rss2_source = make_Rss2(nil, {@prefix => @uri}) do
|
||||
make_channel2(nil) do
|
||||
make_item2(@content_nodes2)
|
||||
end
|
||||
assert_equal(new_value[name], target.send(target_accessor))
|
||||
assert_equal(new_value[name], target2.send(accessor))
|
||||
end
|
||||
|
||||
@rss2 = Parser.parse(@rss2_source, false)
|
||||
end
|
||||
|
||||
end
|
||||
def test_parser
|
||||
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = %Q!<#{@prefix}:#{name} rdf:resource="#{CGI.escapeHTML(value)}"/>!
|
||||
@parents.each do |parent|
|
||||
meth = "#{RSS::TRACKBACK_PREFIX}_#{name}_element"
|
||||
meth << "s" if name == :about
|
||||
assert_equal(excepted, @rss.send(parent).send(meth))
|
||||
assert_nothing_raised do
|
||||
Parser.parse(@rss_source)
|
||||
end
|
||||
|
||||
@elems.find_all{|k, v| k == :ping}.each do |tag, value|
|
||||
assert_too_much_tag(tag.to_s, "item") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
#{make_channel()}
|
||||
#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
|
||||
CGI.escapeHTML(value.to_s) +
|
||||
"\"/>") * 2)}
|
||||
EOR
|
||||
end
|
||||
end
|
||||
|
||||
@elems.find_all{|k, v| k == :about}.each do |tag, value|
|
||||
assert_missing_tag("trackback:ping", "item") do
|
||||
Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
|
||||
#{make_channel()}
|
||||
#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
|
||||
CGI.escapeHTML(value.to_s) +
|
||||
"\"/>") * 2)}
|
||||
EOR
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def test_accessor
|
||||
|
||||
new_value = {
|
||||
:ping => "http://baz.com/trackback/tb.cgi?tb_id=20030808",
|
||||
:about => "http://hoge.com/trackback/tb.cgi?tb_id=90030808",
|
||||
}
|
||||
|
||||
@elems.each do |name, value|
|
||||
@parents.each do |parent|
|
||||
accessor = "#{RSS::TRACKBACK_PREFIX}_#{name}"
|
||||
target_accessor = "resource"
|
||||
target = @rss.send(parent).send(accessor)
|
||||
target2 = @rss2.channel.send(parent, -1)
|
||||
assert_equal(value, target.send(target_accessor))
|
||||
assert_equal(value, target2.send(accessor))
|
||||
target.send("#{target_accessor}=", new_value[name].to_s)
|
||||
if name == :about
|
||||
# abount is zero or more
|
||||
target2.send("#{accessor}=", 0, new_value[name].to_s)
|
||||
else
|
||||
target2.send("#{accessor}=", new_value[name].to_s)
|
||||
end
|
||||
assert_equal(new_value[name], target.send(target_accessor))
|
||||
assert_equal(new_value[name], target2.send(accessor))
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(elem.attributes["resource"], @elems[elem.name.intern])
|
||||
def test_to_s
|
||||
|
||||
@elems.each do |name, value|
|
||||
excepted = %Q!<#{@prefix}:#{name} rdf:resource="#{CGI.escapeHTML(value)}"/>!
|
||||
@parents.each do |parent|
|
||||
meth = "#{RSS::TRACKBACK_PREFIX}_#{name}_element"
|
||||
meth << "s" if name == :about
|
||||
assert_equal(excepted, @rss.send(parent).send(meth))
|
||||
end
|
||||
end
|
||||
|
||||
REXML::Document.new(@rss_source).root.each_element do |parent|
|
||||
if @parents.include?(parent.name)
|
||||
parent.each_element do |elem|
|
||||
if elem.namespace == @uri
|
||||
assert_equal(elem.attributes["resource"], @elems[elem.name.intern])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
|
@ -1,109 +1,110 @@
|
|||
# -*- tab-width: 2 -*- vim: ts=2
|
||||
|
||||
require "test/unit"
|
||||
require "rexml/document"
|
||||
|
||||
require "rss-testcase"
|
||||
|
||||
require "rss/1.0"
|
||||
require "rss/xml-stylesheet"
|
||||
require "common"
|
||||
|
||||
class TestXMLStyleSheet < Test::Unit::TestCase
|
||||
include TestRSSMixin
|
||||
|
||||
def test_accessor
|
||||
[
|
||||
{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:media => "print", :title => "FOO"},
|
||||
{:charset => "UTF-8", :alternate => "yes"},
|
||||
].each do |attrs|
|
||||
assert_xml_stylesheet_attrs(XMLStyleSheet.new(*attrs), attrs)
|
||||
end
|
||||
end
|
||||
|
||||
def test_to_s
|
||||
[
|
||||
{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:type => "text/xsl"},
|
||||
{:href => "a.xsl", :guess_type => "text/xsl"},
|
||||
{:href => "a.css", :type => "text/css"},
|
||||
{:href => "a.css", :type => "text/xsl",
|
||||
:guess_type => "text/css"},
|
||||
{:href => "a.xsl", :type => "text/xsl",
|
||||
:title => "sample", :media => "printer",
|
||||
:charset => "UTF-8", :alternate => "yes"},
|
||||
{:href => "a.css", :guess_type => "text/css",
|
||||
:alternate => "no"},
|
||||
{:type => "text/xsl", :title => "sample",
|
||||
:media => "printer", :charset => "UTF-8",
|
||||
:alternate => "yes"},
|
||||
].each do |attrs|
|
||||
target, contents = parse_pi(XMLStyleSheet.new(*attrs).to_s)
|
||||
assert_xml_stylesheet(target, XMLStyleSheet.new(*contents), attrs)
|
||||
end
|
||||
end
|
||||
|
||||
def test_bad_alternate
|
||||
%w(a ___ ??? BAD_ALTERNATE).each do |value|
|
||||
xss = XMLStyleSheet.new
|
||||
assert_raise(NotAvailableValueError) do
|
||||
xss.alternate = value
|
||||
end
|
||||
xss.do_validate = false
|
||||
assert_nothing_raised do
|
||||
xss.alternate = value
|
||||
end
|
||||
assert_nil(xss.alternate)
|
||||
end
|
||||
end
|
||||
|
||||
def test_parse
|
||||
[
|
||||
[{:href => "a.xsl", :type => "text/xsl"},],
|
||||
[{:media => "print", :title => "FOO"},],
|
||||
[{:charset => "UTF-8", :alternate => "yes"},],
|
||||
[{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:type => "text/xsl"},
|
||||
{:href => "a.xsl", :guess_type => "text/xsl"},
|
||||
{:href => "a.css", :type => "text/css"},
|
||||
{:href => "a.css", :type => "text/xsl",
|
||||
:guess_type => "text/css"},
|
||||
{:href => "a.xsl", :type => "text/xsl",
|
||||
:title => "sample", :media => "printer",
|
||||
:charset => "UTF-8", :alternate => "yes"},
|
||||
{:href => "a.css", :guess_type => "text/css",
|
||||
:alternate => "no"},
|
||||
{:type => "text/xsl", :title => "sample",
|
||||
:media => "printer", :charset => "UTF-8",
|
||||
:alternate => "yes"},],
|
||||
].each do |xsss|
|
||||
doc = REXML::Document.new(make_sample_RDF)
|
||||
root = doc.root
|
||||
xsss.each do |xss|
|
||||
content = xss.collect do |key, name|
|
||||
%Q[#{key}="#{name}"]
|
||||
end.join(" ")
|
||||
pi = REXML::Instruction.new("xml-stylesheet", content)
|
||||
root.previous_sibling = pi
|
||||
end
|
||||
rss = Parser.parse(doc.to_s)
|
||||
have_href_xsss = xsss.find_all {|xss| xss.has_key?(:href)}
|
||||
assert_equal(have_href_xsss.size, rss.xml_stylesheets.size)
|
||||
rss.xml_stylesheets.each_with_index do |stylesheet, i|
|
||||
target, = parse_pi(stylesheet.to_s)
|
||||
assert_xml_stylesheet(target, stylesheet, have_href_xsss[i])
|
||||
module RSS
|
||||
class TestXMLStyleSheet < TestCase
|
||||
|
||||
def test_accessor
|
||||
[
|
||||
{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:media => "print", :title => "FOO"},
|
||||
{:charset => "UTF-8", :alternate => "yes"},
|
||||
].each do |attrs|
|
||||
assert_xml_stylesheet_attrs(XMLStyleSheet.new(*attrs), attrs)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def parse_pi(pi)
|
||||
/\A\s*<\?(\S+)([^(?:\?>)]+)\?>\s*\z/ =~ pi
|
||||
target = $1
|
||||
dummy = REXML::Document.new("<dummy #{$2}/>").root
|
||||
contents = {}
|
||||
dummy.attributes.each do |name, value|
|
||||
contents[name] = value
|
||||
|
||||
def test_to_s
|
||||
[
|
||||
{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:type => "text/xsl"},
|
||||
{:href => "a.xsl", :guess_type => "text/xsl"},
|
||||
{:href => "a.css", :type => "text/css"},
|
||||
{:href => "a.css", :type => "text/xsl",
|
||||
:guess_type => "text/css"},
|
||||
{:href => "a.xsl", :type => "text/xsl",
|
||||
:title => "sample", :media => "printer",
|
||||
:charset => "UTF-8", :alternate => "yes"},
|
||||
{:href => "a.css", :guess_type => "text/css",
|
||||
:alternate => "no"},
|
||||
{:type => "text/xsl", :title => "sample",
|
||||
:media => "printer", :charset => "UTF-8",
|
||||
:alternate => "yes"},
|
||||
].each do |attrs|
|
||||
target, contents = parse_pi(XMLStyleSheet.new(*attrs).to_s)
|
||||
assert_xml_stylesheet(target, XMLStyleSheet.new(*contents), attrs)
|
||||
end
|
||||
end
|
||||
[target, contents]
|
||||
|
||||
def test_bad_alternate
|
||||
%w(a ___ ??? BAD_ALTERNATE).each do |value|
|
||||
xss = XMLStyleSheet.new
|
||||
assert_raise(NotAvailableValueError) do
|
||||
xss.alternate = value
|
||||
end
|
||||
xss.do_validate = false
|
||||
assert_nothing_raised do
|
||||
xss.alternate = value
|
||||
end
|
||||
assert_nil(xss.alternate)
|
||||
end
|
||||
end
|
||||
|
||||
def test_parse
|
||||
[
|
||||
[{:href => "a.xsl", :type => "text/xsl"},],
|
||||
[{:media => "print", :title => "FOO"},],
|
||||
[{:charset => "UTF-8", :alternate => "yes"},],
|
||||
[{:href => "a.xsl", :type => "text/xsl"},
|
||||
{:type => "text/xsl"},
|
||||
{:href => "a.xsl", :guess_type => "text/xsl"},
|
||||
{:href => "a.css", :type => "text/css"},
|
||||
{:href => "a.css", :type => "text/xsl",
|
||||
:guess_type => "text/css"},
|
||||
{:href => "a.xsl", :type => "text/xsl",
|
||||
:title => "sample", :media => "printer",
|
||||
:charset => "UTF-8", :alternate => "yes"},
|
||||
{:href => "a.css", :guess_type => "text/css",
|
||||
:alternate => "no"},
|
||||
{:type => "text/xsl", :title => "sample",
|
||||
:media => "printer", :charset => "UTF-8",
|
||||
:alternate => "yes"},],
|
||||
].each do |xsss|
|
||||
doc = REXML::Document.new(make_sample_RDF)
|
||||
root = doc.root
|
||||
xsss.each do |xss|
|
||||
content = xss.collect do |key, name|
|
||||
%Q[#{key}="#{name}"]
|
||||
end.join(" ")
|
||||
pi = REXML::Instruction.new("xml-stylesheet", content)
|
||||
root.previous_sibling = pi
|
||||
end
|
||||
rss = Parser.parse(doc.to_s)
|
||||
have_href_xsss = xsss.find_all {|xss| xss.has_key?(:href)}
|
||||
assert_equal(have_href_xsss.size, rss.xml_stylesheets.size)
|
||||
rss.xml_stylesheets.each_with_index do |stylesheet, i|
|
||||
target, = parse_pi(stylesheet.to_s)
|
||||
assert_xml_stylesheet(target, stylesheet, have_href_xsss[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def parse_pi(pi)
|
||||
/\A\s*<\?(\S+)([^(?:\?>)]+)\?>\s*\z/ =~ pi
|
||||
target = $1
|
||||
dummy = REXML::Document.new("<dummy #{$2}/>").root
|
||||
contents = {}
|
||||
dummy.attributes.each do |name, value|
|
||||
contents[name] = value
|
||||
end
|
||||
[target, contents]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue