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