summaryrefslogtreecommitdiff
path: root/test/rss/my-assertions.rb
blob: 3829fdbd5c634d127451390d6b4c4effdb398f14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# -*- 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