testunitxml 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/docs/html/classes/REXML.html +111 -0
- data/docs/html/classes/REXML/Attributes.html +151 -0
- data/docs/html/classes/REXML/Attributes.src/M000001.html +24 -0
- data/docs/html/classes/Test.html +131 -0
- data/docs/html/classes/Test/Unit.html +124 -0
- data/docs/html/classes/Test/Unit/TestCase.html +125 -0
- data/docs/html/classes/Test/Unit/XML.html +237 -0
- data/docs/html/classes/Test/Unit/XML.src/M000002.html +23 -0
- data/docs/html/classes/Test/Unit/XML/NodeIterator.html +195 -0
- data/docs/html/classes/Test/Unit/XML/NodeIterator.src/M000003.html +27 -0
- data/docs/html/classes/Test/Unit/XML/NodeIterator.src/M000004.html +19 -0
- data/docs/html/classes/Test/Unit/XML/NodeIterator.src/M000005.html +18 -0
- data/docs/html/classes/Test/Unit/XML/NodeIterator.src/M000006.html +20 -0
- data/docs/html/classes/Test/Unit/XML/NodeIterator/NullNodeFilter.html +137 -0
- data/docs/html/classes/Test/Unit/XML/NodeIterator/NullNodeFilter.src/M000007.html +18 -0
- data/docs/html/classes/Test/Unit/XML/XmlEqualFilter.html +144 -0
- data/docs/html/classes/Test/Unit/XML/XmlEqualFilter.src/M000008.html +23 -0
- data/docs/html/created.rid +1 -0
- data/docs/html/files/MIT-LICENSE.html +130 -0
- data/docs/html/files/README.html +226 -0
- data/docs/html/files/lib/test/unit/xml/attributes_mixin_rb.html +101 -0
- data/docs/html/files/lib/test/unit/xml/nodeiterator_rb.html +101 -0
- data/docs/html/files/lib/test/unit/xml/xml_assertions_rb.html +112 -0
- data/docs/html/files/lib/test/unit/xml/xmlequalfilter_rb.html +101 -0
- data/docs/html/files/lib/test/unit/xml_rb.html +120 -0
- data/docs/html/fr_class_index.html +35 -0
- data/docs/html/fr_file_index.html +33 -0
- data/docs/html/fr_method_index.html +34 -0
- data/docs/html/index.html +24 -0
- data/lib/test/unit/xml.rb +21 -0
- data/lib/test/unit/xml/attributes_mixin.rb +21 -0
- data/lib/test/unit/xml/nodeiterator.rb +61 -0
- data/lib/test/unit/xml/xml_assertions.rb +187 -0
- data/lib/test/unit/xml/xmlequalfilter.rb +27 -0
- data/test/data/test1.xml +23 -0
- data/test/tc_testunitxml.rb +123 -0
- metadata +101 -0
@@ -0,0 +1,187 @@
|
|
1
|
+
#! /usr/bin/ruby
|
2
|
+
|
3
|
+
require 'rexml/document'
|
4
|
+
require 'test/unit/xml/attributes_mixin' # Must be required after rexml/document
|
5
|
+
require 'test/unit'
|
6
|
+
require 'test/unit/xml/xmlequalfilter'
|
7
|
+
require 'test/unit/xml/nodeiterator'
|
8
|
+
|
9
|
+
=begin rdoc
|
10
|
+
This module contains assertions about XML documents. The assertions are
|
11
|
+
meant to be mixed in to test classes such as Test::Unit::TestCase.
|
12
|
+
=end
|
13
|
+
module Test
|
14
|
+
module Unit
|
15
|
+
module XML
|
16
|
+
|
17
|
+
# This method checks whether two well-formed XML documents are equal.
|
18
|
+
# Doctype declarations are ignored for the purposes of comparison.
|
19
|
+
# Two XML documents are considered equal if:
|
20
|
+
# * They contain the same type of nodes, in the same order,
|
21
|
+
# except for text nodes that are empty, or contain only
|
22
|
+
# whitespace. Such text nodes are ignored.
|
23
|
+
# * The corresponding nodes in the two documents are equal.
|
24
|
+
#
|
25
|
+
# Nodes are tested for equality as follows:
|
26
|
+
# XML Declarations::
|
27
|
+
# XML declarations are equal if they have the same version,
|
28
|
+
# encoding, and stand-alone pseudo-attributes.
|
29
|
+
# Doctype::
|
30
|
+
# Doctype declarations are ignored.
|
31
|
+
# Elements::
|
32
|
+
# Elements are considered equal if they have the same generic
|
33
|
+
# identifier (tag name) and belong to the same namespace. The
|
34
|
+
# namespace _prefixes_ may be different.
|
35
|
+
# Attributes::
|
36
|
+
# Attributes are equal if they belong to the same namespace,
|
37
|
+
# have the same name, and the same value.
|
38
|
+
# Namespace Declarations::
|
39
|
+
# Namespace _declarations_ (attributes named <tt>xmlns:<em>prefix</em></tt>)
|
40
|
+
# are ignored. There are several reasons for this:
|
41
|
+
# - As long as two elements or attributes
|
42
|
+
# belong to the same namespace, it does not matter what prefixes
|
43
|
+
# are used. XML processors may also change prefixes in unpredictable
|
44
|
+
# ways without this being an error.
|
45
|
+
# - XML processors may _move_ namespace
|
46
|
+
# declarations from one element to another (usually an ancestor,
|
47
|
+
# sometimes a descendant) without this being an error, or under
|
48
|
+
# control by the programmer.
|
49
|
+
# - XML processors may _add_ extraneous namespace declarations
|
50
|
+
# in a manner that is hard for programmers to control.
|
51
|
+
# Processing Instructions::
|
52
|
+
# Processing instructions are considered equal if the string
|
53
|
+
# values of their targets and contents are equal.
|
54
|
+
# Text::
|
55
|
+
# Text nodes are equal if their values are equal. However, empty
|
56
|
+
# text nodes, and text nodes containing only whitespace are ignored.
|
57
|
+
# CDATA::
|
58
|
+
# CDATA nodes are equal if their text content is equal. Whitespace
|
59
|
+
# is _not_ normalized.
|
60
|
+
# Comments::
|
61
|
+
# Comments are equal if they have the same content.
|
62
|
+
#
|
63
|
+
# The +expected_doc+ and +actual_doc+ arguments to this method may be of
|
64
|
+
# the following types:
|
65
|
+
# * A +REXML+ node, usually a <tt>REXML::Document</tt> or <tt>REXML::Element</tt>
|
66
|
+
# * A +File+ or other +IO+ object representing an XML document
|
67
|
+
# * A string containing an XML document
|
68
|
+
def assert_xml_equal(expected_doc, actual_doc, message = nil)
|
69
|
+
expected_doc = parse_xml(expected_doc)
|
70
|
+
actual_doc = parse_xml(actual_doc)
|
71
|
+
_wrap_assertion do
|
72
|
+
full_message = build_message(message, <<EOT, actual_doc.inspect, expected_doc.inspect)
|
73
|
+
|
74
|
+
<?> expected to be equal to
|
75
|
+
<?> but was not.
|
76
|
+
EOT
|
77
|
+
assert_block(full_message){are_equal?(expected_doc, actual_doc)}
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def parse_xml(xml)
|
84
|
+
case xml
|
85
|
+
when IO
|
86
|
+
REXML::Document.new(xml)
|
87
|
+
when String
|
88
|
+
REXML::Document.new(xml)
|
89
|
+
else
|
90
|
+
xml
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def are_equal?(expected_doc, actual_doc)
|
95
|
+
iterate(expected_doc, actual_doc) do |expected_node, actual_node|
|
96
|
+
unless compare_xml_nodes(expected_node, actual_node)
|
97
|
+
return false
|
98
|
+
end
|
99
|
+
end
|
100
|
+
true
|
101
|
+
end
|
102
|
+
|
103
|
+
def iterate(expected_doc, actual_doc)
|
104
|
+
filter = Test::Unit::XML::XmlEqualFilter.new()
|
105
|
+
expected_iterator = NodeIterator.new(expected_doc, filter)
|
106
|
+
actual_iterator = NodeIterator.new(actual_doc, filter)
|
107
|
+
while expected_iterator.has_next()
|
108
|
+
expected_node = expected_iterator.next()
|
109
|
+
actual_node = actual_iterator.next()
|
110
|
+
yield expected_node, actual_node
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def compare_xml_nodes(expected_node, actual_node)
|
115
|
+
return false unless actual_node.instance_of? expected_node.class
|
116
|
+
case actual_node
|
117
|
+
when REXML::Document
|
118
|
+
# TODO: Implement Document comparison
|
119
|
+
true
|
120
|
+
when REXML::DocType
|
121
|
+
# TODO: Implement DOCTYPE comparison
|
122
|
+
true
|
123
|
+
when REXML::Element :
|
124
|
+
compare_elements(expected_node, actual_node)
|
125
|
+
when REXML::CData
|
126
|
+
compare_texts(expected_node, actual_node)
|
127
|
+
when REXML::Text
|
128
|
+
compare_texts(expected_node, actual_node)
|
129
|
+
when REXML::Comment
|
130
|
+
compare_comments(expected_node, actual_node)
|
131
|
+
when REXML::Instruction
|
132
|
+
compare_pi(expected_node, actual_node)
|
133
|
+
when REXML::XMLDecl
|
134
|
+
compare_xml_declaration(expected_node, actual_node)
|
135
|
+
else
|
136
|
+
puts "Unknown node type #{actual_node.class}"
|
137
|
+
false
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def compare_elements(expected_node, actual_node)
|
142
|
+
return expected_node.name == actual_node.name &&
|
143
|
+
expected_node.namespace() == actual_node.namespace() &&
|
144
|
+
compare_attributes(expected_node.attributes, actual_node.attributes)
|
145
|
+
end
|
146
|
+
|
147
|
+
def compare_attributes(expected_attributes, actual_attributes)
|
148
|
+
return false unless attribute_count(expected_attributes) == attribute_count(actual_attributes)
|
149
|
+
expected_attributes.each_attribute do |expected_attribute|
|
150
|
+
expected_prefix = expected_attribute.prefix()
|
151
|
+
unless expected_prefix == 'xmlns' then
|
152
|
+
expected_name = expected_attribute.name
|
153
|
+
expected_namespace = expected_attribute.namespace
|
154
|
+
actual_attribute = actual_attributes.get_attribute_ns(expected_namespace, expected_name)
|
155
|
+
return false unless actual_attribute
|
156
|
+
return false if expected_attribute != actual_attribute
|
157
|
+
end
|
158
|
+
end
|
159
|
+
true
|
160
|
+
end
|
161
|
+
|
162
|
+
def attribute_count(attributes)
|
163
|
+
# Do not count namespace declarations
|
164
|
+
attributes.size - attributes.prefixes.size
|
165
|
+
end
|
166
|
+
|
167
|
+
def compare_texts(expected_node, actual_node)
|
168
|
+
expected_node.value.eql?(actual_node.value)
|
169
|
+
end
|
170
|
+
|
171
|
+
def compare_comments(expected_node, actual_node)
|
172
|
+
expected_node == actual_node
|
173
|
+
end
|
174
|
+
|
175
|
+
def compare_pi(expected_pi, actual_pi)
|
176
|
+
return expected_pi.target == actual_pi.target &&
|
177
|
+
expected_pi.content == actual_pi.content
|
178
|
+
end
|
179
|
+
|
180
|
+
def compare_xml_declaration(expected_decl, actual_decl)
|
181
|
+
return expected_decl == actual_decl
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#! /usr/bin/ruby
|
2
|
+
|
3
|
+
module Test
|
4
|
+
module Unit
|
5
|
+
module XML
|
6
|
+
|
7
|
+
# This filter class accepts any node except text nodes
|
8
|
+
# that contain non-significant whitespace
|
9
|
+
class XmlEqualFilter
|
10
|
+
def accept(node)
|
11
|
+
case
|
12
|
+
when node.kind_of?(REXML::Text)
|
13
|
+
is_significant?(node.value)
|
14
|
+
else
|
15
|
+
true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def is_significant?(string)
|
22
|
+
string =~ /^\s*$/ ? false : true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/test/data/test1.xml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" standalone="yes" encoding="utf-8"?>
|
2
|
+
<book xmlns="http://www.henrikmartensson.org/ns/testunitxml/test1">
|
3
|
+
<chapter id="a" type="">
|
4
|
+
<title>First Chapter</title>
|
5
|
+
<p>This <em type="medium">is</em> the first chapter.</p>
|
6
|
+
<section>
|
7
|
+
<title>First Chapter, First Section</title>
|
8
|
+
<?pi1?>
|
9
|
+
<?pi2 content?>
|
10
|
+
<?pi3 more content?>
|
11
|
+
</section>
|
12
|
+
</chapter>
|
13
|
+
<chapter id="b" type="" xmlns="http://www.henrikmartensson.org/ns/testunitxml/test2">
|
14
|
+
<title>Second Chapter</title>
|
15
|
+
<p>This is the second chapter.</p>
|
16
|
+
<t3:section xmlns:t3="http://www.henrikmartensson.org/ns/testunitxml/test3">
|
17
|
+
<t3:title>Second Chapter, Second Section</t3:title>
|
18
|
+
<p><![CDATA[This is a
|
19
|
+
|
20
|
+
CDATA section.]]></p>
|
21
|
+
</t3:section>
|
22
|
+
</chapter>
|
23
|
+
</book>
|
@@ -0,0 +1,123 @@
|
|
1
|
+
#! /usr/bin/ruby
|
2
|
+
|
3
|
+
@@lib_path = File.join(File.dirname(__FILE__), "..", "lib")
|
4
|
+
$:.unshift @@lib_path
|
5
|
+
|
6
|
+
require 'test/unit/xml'
|
7
|
+
require 'rexml/document'
|
8
|
+
require 'stringio'
|
9
|
+
|
10
|
+
class TestTestUnitXml < Test::Unit::TestCase
|
11
|
+
TEST_1_PATH = "test/data/test1.xml"
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@file = File.new(TEST_1_PATH)
|
15
|
+
@doc1 = REXML::Document.new(@file)
|
16
|
+
@io1 = File.new(TEST_1_PATH)
|
17
|
+
@io2 = File.new(TEST_1_PATH)
|
18
|
+
@string1 = %Q{<t:root xmlns:t="urn:x-hm:test" xmlns:x="urn:x-hm:test2" id="a" t:type="test1"/>}
|
19
|
+
@element1 = REXML::Document.new(%Q{<t:root xmlns:t="urn:x-hm:test" xmlns:x="urn:x-hm:test2" id="a" t:type="test1"/>}).root
|
20
|
+
@element2 = REXML::Document.new(%Q{<root xmlns:t="urn:x-hm:test" xmlns:x="urn:x-hm:test2" id="a" t:type="test1"/>}).root
|
21
|
+
@element3 = REXML::Document.new(%Q{<t:root xmlns:t="urn:x-hm:other" xmlns:x="urn:x-hm:test2" id="a" t:type="test1"/>}).root
|
22
|
+
@element4 = REXML::Document.new(%Q{<t:root xmlns:t="urn:x-hm:test" xmlns:x="urn:x-hm:test2" id="a" x:type="test1"/>}).root
|
23
|
+
@element5 = REXML::Document.new(%Q{<t:root xmlns:t="urn:x-hm:test" xmlns:x="urn:x-hm:test2" id="a" t:type="test2"/>}).root
|
24
|
+
@element6 = REXML::Document.new(%Q{<t:root id="a" xmlns:t="urn:x-hm:test" xmlns:x="urn:x-hm:test2" t:type="test1"/>}).root
|
25
|
+
@element7 = REXML::Document.new(%Q{<s:root xmlns:s="urn:x-hm:test" xmlns:x="urn:x-hm:test" id="a" s:type="test1"/>}).root
|
26
|
+
@element8 = REXML::Document.new(%Q{<t:root xmlns:t="urn:x-hm:test" id="a" t:type="test1"/>}).root
|
27
|
+
@text1 = REXML::Text.new(" Q")
|
28
|
+
@text2 = REXML::Text.new(" Q")
|
29
|
+
@text3 = REXML::Text.new(" Q ")
|
30
|
+
@cdata1 = REXML::CData.new("Test text")
|
31
|
+
@cdata2 = REXML::CData.new("Test \ntext")
|
32
|
+
@comment1 = REXML::Comment.new("This is a comment.")
|
33
|
+
@comment2 = REXML::Comment.new("This is another comment.")
|
34
|
+
@pi1 = REXML::Instruction.new('pi1', 'content')
|
35
|
+
@pi2 = REXML::Instruction.new('pi2', 'content')
|
36
|
+
@pi3 = REXML::Instruction.new('pi1', 'other content')
|
37
|
+
@whitespace1 = REXML::Document.new(%Q{<r><a>Some <b>text</b>.</a></r>})
|
38
|
+
@whitespace2 = REXML::Document.new(%Q{<r> <a>Some <b>text</b>.</a>\n \n </r>})
|
39
|
+
@whitespace3 = REXML::Document.new(%Q{<r><a>Some <b> text</b>.</a></r>})
|
40
|
+
# REXML:XMLDecl.new(version=DEFAULT_VERSION, encoding=nil, standalone=nil)
|
41
|
+
@xml_decl1 = REXML::XMLDecl.new(1.0, "utf-8", "yes")
|
42
|
+
@xml_decl2 = REXML::XMLDecl.new(1.1, "utf-8", "yes")
|
43
|
+
@xml_decl3 = REXML::XMLDecl.new(1.0, "utf-16", "yes")
|
44
|
+
@xml_decl4 = REXML::XMLDecl.new(1.0, "utf-8", "no")
|
45
|
+
end
|
46
|
+
|
47
|
+
def teardown
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_assert_xml_equal_document
|
51
|
+
assert_xml_equal(@doc1, @doc1, "Comparing two REXML::Document objects")
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_assert_xml_equal_io
|
55
|
+
assert_xml_equal(@io1, @io2, "Comparing two IO objects")
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_assert_xml_equal_string
|
59
|
+
assert_xml_equal(@string1, @string1, "Comparing two XML strings")
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_assert_xml_equal_element
|
63
|
+
assert_instance_of(REXML::Element, @element1)
|
64
|
+
assert_xml_equal(@element1, @element1)
|
65
|
+
check_assertion_failure(@element1, @element2)
|
66
|
+
check_assertion_failure(@element1, @element3)
|
67
|
+
check_assertion_failure(@element1, @element4)
|
68
|
+
check_assertion_failure(@element1, @element5)
|
69
|
+
assert_xml_equal(@element1, @element6)
|
70
|
+
assert_xml_equal(@element1, @element7)
|
71
|
+
assert_xml_equal(@element1, @element8)
|
72
|
+
end
|
73
|
+
|
74
|
+
def check_assertion_failure(expected, actual)
|
75
|
+
assert_raise(Test::Unit::AssertionFailedError) {
|
76
|
+
assert_xml_equal(expected, actual)
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_assert_xml_equal_text
|
81
|
+
assert_instance_of(REXML::Text, @text1)
|
82
|
+
assert_instance_of(REXML::Text, @text1)
|
83
|
+
assert_xml_equal(@text1, @text1)
|
84
|
+
assert_xml_equal(@text1, @text2)
|
85
|
+
check_assertion_failure(@text1, @text3)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_assert_xml_equal_cdata
|
89
|
+
assert_instance_of(REXML::CData, @cdata1)
|
90
|
+
assert_instance_of(REXML::CData, @cdata2)
|
91
|
+
assert_xml_equal(@cdata1, @cdata1)
|
92
|
+
check_assertion_failure(@cdata1, @cdata2)
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_assert_xml_equal_comment
|
96
|
+
assert_instance_of(REXML::Comment, @comment1)
|
97
|
+
assert_instance_of(REXML::Comment, @comment2)
|
98
|
+
assert_xml_equal(@comment1, @comment1)
|
99
|
+
check_assertion_failure(@comment1, @comment2)
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_assert_xml_equal_pi
|
103
|
+
assert_instance_of(REXML::Instruction, @pi1)
|
104
|
+
assert_instance_of(REXML::Instruction, @pi2)
|
105
|
+
assert_instance_of(REXML::Instruction, @pi3)
|
106
|
+
assert_xml_equal(@pi1, @pi1)
|
107
|
+
check_assertion_failure(@pi1, @pi2)
|
108
|
+
check_assertion_failure(@pi1, @pi3)
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_assert_xml_equal_whitespace
|
112
|
+
assert_xml_equal(@whitespace1, @whitespace1)
|
113
|
+
assert_xml_equal(@whitespace1, @whitespace2, "Check if extraneous whitespace is skipped")
|
114
|
+
check_assertion_failure(@whitespace1, @whitespace3)
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_assert_xml_equal_xmldecl
|
118
|
+
assert_instance_of(REXML::XMLDecl, @xml_decl1)
|
119
|
+
assert_xml_equal(@xml_decl1, @xml_decl1)
|
120
|
+
check_assertion_failure(@xml_decl1, @xml_decl2)
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.8.11
|
3
|
+
specification_version: 1
|
4
|
+
name: testunitxml
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.1.3
|
7
|
+
date: 2006-01-11 00:00:00 +01:00
|
8
|
+
summary: Unit test suite for XML documents
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: self@henrikmartensson.org
|
12
|
+
homepage: http://testunitxml.rubyforge.org/
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire: test/unit/xml
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
authors:
|
29
|
+
- Henrik Martensson
|
30
|
+
files:
|
31
|
+
- docs/html
|
32
|
+
- docs/html/created.rid
|
33
|
+
- docs/html/files
|
34
|
+
- docs/html/classes
|
35
|
+
- docs/html/fr_file_index.html
|
36
|
+
- docs/html/fr_class_index.html
|
37
|
+
- docs/html/fr_method_index.html
|
38
|
+
- docs/html/index.html
|
39
|
+
- docs/html/files/README.html
|
40
|
+
- docs/html/files/MIT-LICENSE.html
|
41
|
+
- docs/html/files/lib
|
42
|
+
- docs/html/files/lib/test
|
43
|
+
- docs/html/files/lib/test/unit
|
44
|
+
- docs/html/files/lib/test/unit/xml_rb.html
|
45
|
+
- docs/html/files/lib/test/unit/xml
|
46
|
+
- docs/html/files/lib/test/unit/xml/xmlequalfilter_rb.html
|
47
|
+
- docs/html/files/lib/test/unit/xml/nodeiterator_rb.html
|
48
|
+
- docs/html/files/lib/test/unit/xml/attributes_mixin_rb.html
|
49
|
+
- docs/html/files/lib/test/unit/xml/xml_assertions_rb.html
|
50
|
+
- docs/html/classes/REXML
|
51
|
+
- docs/html/classes/Test
|
52
|
+
- docs/html/classes/REXML.html
|
53
|
+
- docs/html/classes/Test.html
|
54
|
+
- docs/html/classes/REXML/Attributes.src
|
55
|
+
- docs/html/classes/REXML/Attributes.html
|
56
|
+
- docs/html/classes/REXML/Attributes.src/M000001.html
|
57
|
+
- docs/html/classes/Test/Unit
|
58
|
+
- docs/html/classes/Test/Unit.html
|
59
|
+
- docs/html/classes/Test/Unit/XML.src
|
60
|
+
- docs/html/classes/Test/Unit/XML
|
61
|
+
- docs/html/classes/Test/Unit/XML.html
|
62
|
+
- docs/html/classes/Test/Unit/TestCase.html
|
63
|
+
- docs/html/classes/Test/Unit/XML.src/M000002.html
|
64
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator.src
|
65
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator
|
66
|
+
- docs/html/classes/Test/Unit/XML/XmlEqualFilter.src
|
67
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator.html
|
68
|
+
- docs/html/classes/Test/Unit/XML/XmlEqualFilter.html
|
69
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator.src/M000003.html
|
70
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator.src/M000004.html
|
71
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator.src/M000005.html
|
72
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator.src/M000006.html
|
73
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator/NullNodeFilter.src
|
74
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator/NullNodeFilter.html
|
75
|
+
- docs/html/classes/Test/Unit/XML/NodeIterator/NullNodeFilter.src/M000007.html
|
76
|
+
- docs/html/classes/Test/Unit/XML/XmlEqualFilter.src/M000008.html
|
77
|
+
- lib/test
|
78
|
+
- lib/test/unit
|
79
|
+
- lib/test/unit/xml
|
80
|
+
- lib/test/unit/xml.rb
|
81
|
+
- lib/test/unit/xml/xmlequalfilter.rb
|
82
|
+
- lib/test/unit/xml/nodeiterator.rb
|
83
|
+
- lib/test/unit/xml/attributes_mixin.rb
|
84
|
+
- lib/test/unit/xml/xml_assertions.rb
|
85
|
+
- test/data
|
86
|
+
- test/tc_testunitxml.rb
|
87
|
+
- test/data/test1.xml
|
88
|
+
test_files:
|
89
|
+
- test/tc_testunitxml.rb
|
90
|
+
rdoc_options: []
|
91
|
+
|
92
|
+
extra_rdoc_files: []
|
93
|
+
|
94
|
+
executables: []
|
95
|
+
|
96
|
+
extensions: []
|
97
|
+
|
98
|
+
requirements: []
|
99
|
+
|
100
|
+
dependencies: []
|
101
|
+
|