Empact-roxml 2.4.3 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/History.txt +65 -0
  2. data/Manifest.txt +11 -6
  3. data/README.rdoc +48 -26
  4. data/Rakefile +5 -2
  5. data/TODO +30 -31
  6. data/examples/active_record.rb +70 -0
  7. data/examples/amazon.rb +1 -1
  8. data/examples/current_weather.rb +1 -1
  9. data/examples/library.rb +40 -0
  10. data/examples/posts.rb +8 -8
  11. data/examples/twitter.rb +2 -2
  12. data/examples/xml/active_record.xml +70 -0
  13. data/lib/roxml.rb +174 -174
  14. data/lib/roxml/definition.rb +165 -89
  15. data/lib/roxml/extensions/deprecation.rb +5 -0
  16. data/lib/roxml/extensions/string/conversions.rb +2 -3
  17. data/lib/roxml/hash_definition.rb +26 -25
  18. data/lib/roxml/xml.rb +15 -6
  19. data/lib/roxml/xml/parsers/libxml.rb +14 -6
  20. data/lib/roxml/xml/parsers/rexml.rb +16 -5
  21. data/lib/roxml/xml/references.rb +14 -17
  22. data/roxml.gemspec +14 -5
  23. data/spec/definition_spec.rb +563 -0
  24. data/spec/examples/active_record_spec.rb +40 -0
  25. data/spec/examples/library_spec.rb +41 -0
  26. data/spec/roxml_spec.rb +372 -0
  27. data/spec/shared_specs.rb +15 -0
  28. data/spec/spec_helper.rb +21 -4
  29. data/spec/string_spec.rb +15 -0
  30. data/spec/xml/parser_spec.rb +47 -0
  31. data/test/fixtures/book_valid.xml +1 -1
  32. data/test/fixtures/person_with_guarded_mothers.xml +3 -3
  33. data/test/mocks/mocks.rb +57 -45
  34. data/test/test_helper.rb +1 -1
  35. data/test/unit/definition_test.rb +161 -12
  36. data/test/unit/deprecations_test.rb +97 -0
  37. data/test/unit/to_xml_test.rb +30 -1
  38. data/test/unit/xml_bool_test.rb +15 -3
  39. data/test/unit/xml_construct_test.rb +6 -6
  40. data/test/unit/xml_hash_test.rb +18 -0
  41. data/test/unit/xml_initialize_test.rb +6 -3
  42. data/test/unit/xml_namespace_test.rb +1 -0
  43. data/test/unit/xml_object_test.rb +66 -5
  44. data/test/unit/xml_text_test.rb +3 -0
  45. metadata +57 -24
  46. data/test/unit/array_test.rb +0 -16
  47. data/test/unit/freeze_test.rb +0 -71
  48. data/test/unit/inheritance_test.rb +0 -63
  49. data/test/unit/overriden_output_test.rb +0 -33
  50. data/test/unit/roxml_test.rb +0 -60
  51. data/test/unit/string_test.rb +0 -11
@@ -0,0 +1,97 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
+
3
+ class TestDefinition < Test::Unit::TestCase
4
+ def test_tag_refs_is_deprecated
5
+ assert_deprecated do
6
+ Class.new do
7
+ include ROXML
8
+ end.tag_refs
9
+ end
10
+ end
11
+
12
+ def test_literal_as_array_is_deprecated
13
+ assert_deprecated do
14
+ assert ROXML::Definition.new(:authors, :as => :array).array?
15
+ end
16
+ end
17
+
18
+ def test_no_block_shorthand_means_no_block
19
+ assert_deprecated do
20
+ assert ROXML::Definition.new(:count, :as => :intager).blocks.empty?
21
+ end
22
+ assert_deprecated do
23
+ assert ROXML::Definition.new(:count, :as => :foat).blocks.empty?
24
+ end
25
+ end
26
+
27
+ def test_symbol_shorthands_are_deprecated
28
+ assert_deprecated do
29
+ ROXML::Definition.new(:junk, :as => :integer)
30
+ end
31
+ assert_deprecated do
32
+ ROXML::Definition.new(:junk, :as => :float)
33
+ end
34
+ end
35
+
36
+ def test_as_cdata_is_deprecated
37
+ assert_deprecated do
38
+ assert ROXML::Definition.new(:manufacturer, :as => :cdata).cdata?
39
+ end
40
+ assert_deprecated do
41
+ assert ROXML::Definition.new(:manufacturer, :as => [Integer, :cdata]).cdata?
42
+ end
43
+ end
44
+
45
+ def test_content_is_a_recognized_type
46
+ assert_deprecated do
47
+ opts = ROXML::Definition.new(:author, :content)
48
+ assert opts.content?
49
+ assert_equal '.', opts.name
50
+ assert_equal :text, opts.type
51
+ end
52
+ end
53
+
54
+ def test_content_symbol_as_target_is_translated_to_string
55
+ assert_deprecated do
56
+ opts = ROXML::Definition.new(:content, :attr => :content)
57
+ assert_equal 'content', opts.name
58
+ assert_equal :attr, opts.type
59
+ end
60
+ end
61
+
62
+ def test_attr_is_a_recognized_type
63
+ assert_deprecated do
64
+ opts = ROXML::Definition.new(:author, :attr)
65
+ assert_equal 'author', opts.name
66
+ assert_equal :attr, opts.type
67
+ end
68
+ end
69
+
70
+ def test_as_array_not_deprecated
71
+ assert_not_deprecated do
72
+ opts = ROXML::Definition.new(:name, :as => [])
73
+ assert_equal :text, opts.type
74
+ assert opts.array?
75
+ end
76
+ end
77
+
78
+ def test_as_hash_of_attrs_deprecated
79
+ assert_deprecated do
80
+ opts = ROXML::Definition.new(:name, :as => {:attrs => [:dt, :dd]})
81
+ assert opts.hash?
82
+ end
83
+ end
84
+
85
+ def test_as_hash_not_deprecated
86
+ assert_not_deprecated do
87
+ opts = ROXML::Definition.new(:name, :as => {:key => '@dt', :value => '@dd'})
88
+ assert opts.hash?
89
+ end
90
+ end
91
+
92
+ def test_as_object_with_from_xml_not_deprecated
93
+ assert_not_deprecated do
94
+ ROXML::Definition.new(:name, :as => OctalInteger)
95
+ end
96
+ end
97
+ end
@@ -49,4 +49,33 @@ class TestToXmlWithBlocks < Test::Unit::TestCase
49
49
  doc.root = b.to_xml
50
50
  assert_equal '500', doc.search('pagecount').first.content
51
51
  end
52
- end
52
+ end
53
+
54
+ class OctalInteger
55
+ def self.from_xml(val)
56
+ new(Integer(val.content))
57
+ end
58
+
59
+ def initialize(value)
60
+ @val = value
61
+ end
62
+
63
+ def ==(other)
64
+ @val == other
65
+ end
66
+
67
+ def to_xml
68
+ sprintf("%#o", @val)
69
+ end
70
+ end
71
+
72
+ class BookWithOctalPages
73
+ include ROXML
74
+
75
+ xml_accessor :pages_with_to_xml_proc, :as => Integer, :to_xml => proc {|val| sprintf("%#o", val) }, :required => true
76
+ xml_accessor :pages_with_type, OctalInteger, :required => true
77
+ end
78
+
79
+ class TestToXmlWithOverriddenOutput < Test::Unit::TestCase
80
+ to_xml_test :book_with_octal_pages
81
+ end
@@ -11,10 +11,10 @@ class XmlBool
11
11
  xml_name 'xml_bool'
12
12
  xml_reader :true_from_TRUE?, :to_xml => PROC_TRUE
13
13
  xml_reader :false_from_FALSE?, :text => 'text_for_FALSE', :to_xml => PROC_TRUE
14
- xml_reader :true_from_one?, :attr => 'attr_for_one', :to_xml => PROC_1
14
+ xml_reader :true_from_one?, :from => '@attr_for_one', :to_xml => PROC_1
15
15
  xml_reader :false_from_zero?, :text => 'text_for_zero', :in => 'container', :to_xml => PROC_1
16
- xml_reader :true_from_True?, :attr => 'attr_for_True', :in => 'container', :to_xml => PROC_True
17
- xml_reader :false_from_False?, :text => 'false_from_cdata_False', :as => :cdata, :to_xml => PROC_True
16
+ xml_reader :true_from_True?, :from => '@attr_for_True', :in => 'container', :to_xml => PROC_True
17
+ xml_reader :false_from_False?, :text => 'false_from_cdata_False', :cdata => true, :to_xml => PROC_True
18
18
  xml_reader :true_from_true?, :to_xml => PROC_true
19
19
  xml_reader :false_from_false?, :to_xml => PROC_true
20
20
  xml_reader :missing?
@@ -106,5 +106,17 @@ class TestXMLBool < Test::Unit::TestCase
106
106
  end
107
107
  end
108
108
 
109
+ def test_writable_references_properly_handle_punctuation
110
+ klass = Class.new do
111
+ include ROXML
112
+ xml_accessor :punctuation?
113
+ end
114
+
115
+ instance = klass.from_xml("<xml><punctuation>True</punctuation></xml>")
116
+ assert_equal true, instance.punctuation?
117
+ instance.punctuation = false
118
+ assert_equal false, instance.punctuation?
119
+ end
120
+
109
121
  to_xml_test XmlBool => BOOL_XML
110
122
  end
@@ -3,8 +3,8 @@ require File.join(File.dirname(__FILE__), '..', 'test_helper')
3
3
  class MeasurementWithXmlConstruct
4
4
  include ROXML
5
5
 
6
- xml_reader :units, :attr
7
- xml_reader :value, :content
6
+ xml_reader :units, :from => :attr
7
+ xml_reader :value, :from => :content
8
8
 
9
9
  xml_construct_without_deprecation :value, :units
10
10
 
@@ -25,9 +25,9 @@ end
25
25
  class BookWithDepthWithXmlConstruct
26
26
  include ROXML
27
27
 
28
- xml_reader :isbn, :attr => 'ISBN'
28
+ xml_reader :isbn, :from => '@ISBN'
29
29
  xml_reader :title
30
- xml_reader :description, :as => :cdata
30
+ xml_reader :description, :cdata => true
31
31
  xml_reader :author
32
32
  xml_reader :depth, MeasurementWithXmlConstruct
33
33
  end
@@ -64,9 +64,9 @@ class TestXMLConstruct < Test::Unit::TestCase
64
64
  Class.new do
65
65
  include ROXML
66
66
 
67
- xml_reader :bar, :attr => 'Foo'
67
+ xml_reader :bar, :from => '@Foo'
68
68
  xml_reader :foo, :text => 'Foo'
69
- xml_reader :baz, :attr => 'Bar'
69
+ xml_reader :baz, :from => '@Bar'
70
70
 
71
71
  xml_construct_without_deprecation :baz, :bar, :foo
72
72
  def initialize(baz, bar, foo)
@@ -103,4 +103,22 @@ class TestXMLHash < Test::Unit::TestCase
103
103
  </dict>
104
104
  }).missing_hash)
105
105
  end
106
+
107
+ def test_as_hash_of_type_keys_deprecated
108
+ assert_deprecated do
109
+ opts = ROXML::Definition.new(:name, :as => {:key => :name, :value => {OctalInteger => 'value'}})
110
+ assert opts.hash?
111
+ assert_equal OctalInteger, opts.hash.value.type
112
+ assert_equal 'value', opts.hash.value.name
113
+ end
114
+ end
115
+
116
+ def test_as_hash_of_as_type_not_deprecated
117
+ assert_not_deprecated do
118
+ opts = ROXML::Definition.new(:name, :as => {:key => :name, :value => {:from => 'value', :as => OctalInteger}})
119
+ assert opts.hash?
120
+ assert_equal OctalInteger, opts.hash.value.type
121
+ assert_equal 'value', opts.hash.value.name
122
+ end
123
+ end
106
124
  end
@@ -1,5 +1,9 @@
1
1
  require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
2
 
3
+ class InheritedBookWithDepth < Book
4
+ xml_reader :depth, Measurement
5
+ end
6
+
3
7
  class BookWithXmlInitialize < BookWithDepth
4
8
  attr_reader :created_at, :creator
5
9
 
@@ -7,7 +11,6 @@ class BookWithXmlInitialize < BookWithDepth
7
11
  @created_at = created_at
8
12
  @creator = creator
9
13
  end
10
- alias_method :xml_initialize, :initialize
11
14
  end
12
15
 
13
16
  class TestXMLInitialize < Test::Unit::TestCase
@@ -32,8 +35,8 @@ class TestXMLInitialize < Test::Unit::TestCase
32
35
  end
33
36
 
34
37
  def test_initialize_fails_on_missing_required_arg
35
- assert_raises(ArgumentError) do
36
- b = BookWithXmlInitialize.from_xml(fixture(:book_with_depth))
38
+ assert_raise ArgumentError do
39
+ BookWithXmlInitialize.from_xml(fixture(:book_with_depth))
37
40
  end
38
41
  end
39
42
 
@@ -34,6 +34,7 @@ class TestDefaultXMLNamespaces < Test::Unit::TestCase
34
34
  assert_equal "Yeah, content", xml.find_first('ns:node', 'ns:http://defaultnamespace.org').content
35
35
  assert_equal nil, xml.find_first('ns:node/subnode', 'ns:http://defaultnamespace.org')
36
36
  assert_equal "Another", xml.find_first('ns:node/ns:subnode', 'ns:http://defaultnamespace.org').content
37
+ rescue LoadError
37
38
  end
38
39
  end
39
40
 
@@ -57,7 +57,7 @@ class TestXMLObject < Test::Unit::TestCase
57
57
  book_one.isbn = "9781843549161"
58
58
  book_one.title = "Anathem"
59
59
  book_one.description = "A new title from Neal Stephenson"
60
- book_one.contributors << contrib
60
+ book_one.contributors = [contrib]
61
61
 
62
62
  # this book should be completely empty
63
63
  book_two = WriteableBookWithContributors.new
@@ -65,7 +65,7 @@ class TestXMLObject < Test::Unit::TestCase
65
65
  assert_equal(nil, book_two.isbn)
66
66
  assert_equal(nil, book_two.title)
67
67
  assert_equal(nil, book_two.description)
68
- assert_equal(0, book_two.contributors.size)
68
+ assert_equal(nil, book_two.contributors)
69
69
  end
70
70
 
71
71
  # Test XML object containing one other XML object (one-to-one)
@@ -116,11 +116,72 @@ class TestXMLObject < Test::Unit::TestCase
116
116
  assert_equal nil, p.mother.mother.mother
117
117
  end
118
118
 
119
+ class Node
120
+ include ROXML
121
+
122
+ xml_reader :name, :from => 'node_name'
123
+ xml_reader :nodes, [Node]
124
+ end
125
+
126
+ class Taxonomy
127
+ include ROXML
128
+
129
+ xml_reader :name, :from => 'taxonomy_name'
130
+ xml_reader :nodes, [Node]
131
+ end
132
+
133
+ class Taxonomies
134
+ include ROXML
135
+ xml_reader :taxonomies, [Taxonomy]
136
+ end
137
+
138
+ def test_more_recursion
139
+ # quiet the error handler
140
+ ROXML::XML::Error.reset_handler
141
+ taxonomies = Taxonomies.from_xml(<<HERE)
142
+ <?xml version="1.0" encoding="UTF-8" ?>
143
+ <!DOCTYPE taxonomies SYSTEM "taxonomy.dtd">
144
+ <taxonomies>
145
+ <taxonomy>
146
+ <taxonomy_name>World</taxonomy_name>
147
+ <node node_id="2" content_object_id="82534" object_type_id="2">
148
+ <node_name lang_iso="eng">Africa</node_name>
149
+ <node node_id="331" content_object_id="11" object_type_id="4">
150
+ <node_name lang_iso="eng">Algeria</node_name>
151
+ <node node_id="7271" content_object_id="117629" object_type_id="8">
152
+ <node_name lang_iso="eng">Algiers</node_name>
153
+ </node>
154
+ <node node_id="7272" content_object_id="117630" object_type_id="8">
155
+ <node_name lang_iso="eng">Gharda&#239;a</node_name>
156
+ </node>
157
+ <node node_id="7871" content_object_id="1000713999" object_type_id="8">
158
+ <node_name lang_iso="eng">El Oued</node_name>
159
+ </node>
160
+ <node node_id="7872" content_object_id="1000714008" object_type_id="8">
161
+ <node_name lang_iso="eng">Timimoun</node_name>
162
+ </node>
163
+ <node node_id="8903" content_object_id="1000565565" object_type_id="8">
164
+ <node_name lang_iso="eng">Annaba</node_name>
165
+ </node>
166
+ </node>
167
+ </node>
168
+ </taxonomy>
169
+ </taxonomies>
170
+ HERE
171
+ assert_equal 1, taxonomies.taxonomies.size
172
+ assert_equal 'World', taxonomies.taxonomies.first.name
173
+ node = taxonomies.taxonomies.first.nodes.first
174
+ assert_equal 'Africa', node.name
175
+ assert_equal 'Algeria', node.nodes.first.name
176
+ assert_equal ['Algiers', "Gharda\303\257a", 'El Oued', 'Timimoun', 'Annaba'],
177
+ node.nodes.first.nodes.map(&:name)
178
+ end
179
+
119
180
  def test_with_guarded_recursion
120
181
  p = PersonWithGuardedMother.from_xml(fixture(:person_with_guarded_mothers))
121
- assert_equal 'Ben Franklin', p.name
122
- assert_equal 'Abiah Folger', p.mother.name
123
- assert_equal 'Madeup Mother', p.mother.mother.name
182
+ assert_equal 'Ben "Benji" Franklin', p.name
183
+ assert_equal 'Abiah \'Abby\' Folger', p.mother.name
184
+ assert_equal 'Madeup Mother < the third >', p.mother.mother.name
124
185
  assert_equal nil, p.mother.mother.mother
125
186
  end
126
187
 
@@ -5,6 +5,9 @@ class TestXMLText < Test::Unit::TestCase
5
5
  def test_valid_simple
6
6
  book = Book.from_xml(fixture(:book_valid))
7
7
  assert_equal("The PickAxe", book.title)
8
+ assert_equal("David Thomas, Andrew Hunt & Dave Thomas", book.author)
9
+
10
+ assert_equal xml_fixture(:book_valid).to_s.gsub("\n", ''), book.to_xml.to_s.gsub("\n", '')
8
11
  end
9
12
 
10
13
  def test_without_needed_from
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Empact-roxml
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.3
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Woosley
@@ -12,11 +12,12 @@ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
14
 
15
- date: 2009-02-01 00:00:00 -08:00
15
+ date: 2009-03-02 00:00:00 -08:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activesupport
20
+ type: :runtime
20
21
  version_requirement:
21
22
  version_requirements: !ruby/object:Gem::Requirement
22
23
  requirements:
@@ -24,8 +25,19 @@ dependencies:
24
25
  - !ruby/object:Gem::Version
25
26
  version: 2.1.0
26
27
  version:
28
+ - !ruby/object:Gem::Dependency
29
+ name: libxml-ruby
30
+ type: :runtime
31
+ version_requirement:
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 0.8.6
37
+ version:
27
38
  - !ruby/object:Gem::Dependency
28
39
  name: newgem
40
+ type: :development
29
41
  version_requirement:
30
42
  version_requirements: !ruby/object:Gem::Requirement
31
43
  requirements:
@@ -33,8 +45,29 @@ dependencies:
33
45
  - !ruby/object:Gem::Version
34
46
  version: 1.2.3
35
47
  version:
48
+ - !ruby/object:Gem::Dependency
49
+ name: sqlite3-ruby
50
+ type: :development
51
+ version_requirement:
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.2.4
57
+ version:
58
+ - !ruby/object:Gem::Dependency
59
+ name: activerecord
60
+ type: :development
61
+ version_requirement:
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 2.2.2
67
+ version:
36
68
  - !ruby/object:Gem::Dependency
37
69
  name: hoe
70
+ type: :development
38
71
  version_requirement:
39
72
  version_requirements: !ruby/object:Gem::Requirement
40
73
  requirements:
@@ -60,11 +93,14 @@ files:
60
93
  - Rakefile
61
94
  - TODO
62
95
  - config/website.yml
96
+ - examples/active_record.rb
63
97
  - examples/amazon.rb
64
98
  - examples/current_weather.rb
65
99
  - examples/dashed_elements.rb
100
+ - examples/library.rb
66
101
  - examples/posts.rb
67
102
  - examples/twitter.rb
103
+ - examples/xml/active_record.xml
68
104
  - examples/xml/amazon.xml
69
105
  - examples/xml/current_weather.xml
70
106
  - examples/xml/dashed_elements.xml
@@ -86,13 +122,20 @@ files:
86
122
  - lib/roxml/xml/parsers/rexml.rb
87
123
  - lib/roxml/xml/references.rb
88
124
  - roxml.gemspec
125
+ - spec/definition_spec.rb
126
+ - spec/examples/active_record_spec.rb
89
127
  - spec/examples/amazon_spec.rb
90
128
  - spec/examples/current_weather_spec.rb
91
129
  - spec/examples/dashed_elements_spec.rb
130
+ - spec/examples/library_spec.rb
92
131
  - spec/examples/post_spec.rb
93
132
  - spec/examples/twitter_spec.rb
133
+ - spec/roxml_spec.rb
134
+ - spec/shared_specs.rb
94
135
  - spec/spec.opts
95
136
  - spec/spec_helper.rb
137
+ - spec/string_spec.rb
138
+ - spec/xml/parser_spec.rb
96
139
  - tasks/rspec.rake
97
140
  - tasks/test.rake
98
141
  - test/bugs/rexml_bugs.rb
@@ -130,13 +173,8 @@ files:
130
173
  - test/mocks/mocks.rb
131
174
  - test/release/dependencies_test.rb
132
175
  - test/test_helper.rb
133
- - test/unit/array_test.rb
134
176
  - test/unit/definition_test.rb
135
- - test/unit/freeze_test.rb
136
- - test/unit/inheritance_test.rb
137
- - test/unit/overriden_output_test.rb
138
- - test/unit/roxml_test.rb
139
- - test/unit/string_test.rb
177
+ - test/unit/deprecations_test.rb
140
178
  - test/unit/to_xml_test.rb
141
179
  - test/unit/xml_attribute_test.rb
142
180
  - test/unit/xml_block_test.rb
@@ -183,23 +221,18 @@ signing_key:
183
221
  specification_version: 2
184
222
  summary: Ruby Object to XML mapping library
185
223
  test_files:
186
- - test/unit/freeze_test.rb
187
- - test/unit/array_test.rb
188
- - test/unit/xml_convention_test.rb
189
- - test/unit/xml_object_test.rb
190
- - test/unit/xml_required_test.rb
191
- - test/unit/xml_bool_test.rb
192
- - test/unit/roxml_test.rb
193
- - test/unit/xml_name_test.rb
194
224
  - test/unit/definition_test.rb
225
+ - test/unit/deprecations_test.rb
226
+ - test/unit/to_xml_test.rb
227
+ - test/unit/xml_attribute_test.rb
228
+ - test/unit/xml_block_test.rb
229
+ - test/unit/xml_bool_test.rb
195
230
  - test/unit/xml_construct_test.rb
196
- - test/unit/string_test.rb
231
+ - test/unit/xml_convention_test.rb
232
+ - test/unit/xml_hash_test.rb
233
+ - test/unit/xml_initialize_test.rb
234
+ - test/unit/xml_name_test.rb
197
235
  - test/unit/xml_namespace_test.rb
236
+ - test/unit/xml_object_test.rb
237
+ - test/unit/xml_required_test.rb
198
238
  - test/unit/xml_text_test.rb
199
- - test/unit/overriden_output_test.rb
200
- - test/unit/xml_block_test.rb
201
- - test/unit/xml_attribute_test.rb
202
- - test/unit/inheritance_test.rb
203
- - test/unit/xml_initialize_test.rb
204
- - test/unit/xml_hash_test.rb
205
- - test/unit/to_xml_test.rb