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,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…
Add table
Add a link
Reference in a new issue