roxml 1.2 → 2.3.2
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/MIT-LICENSE +18 -0
- data/README.rdoc +126 -0
- data/Rakefile +100 -0
- data/lib/roxml.rb +479 -485
- data/lib/roxml/extensions/active_support.rb +32 -0
- data/lib/roxml/extensions/array.rb +5 -0
- data/lib/roxml/extensions/array/conversions.rb +25 -0
- data/lib/roxml/extensions/deprecation.rb +28 -0
- data/lib/roxml/extensions/string.rb +21 -0
- data/lib/roxml/extensions/string/conversions.rb +44 -0
- data/lib/roxml/extensions/string/iterators.rb +12 -0
- data/lib/roxml/options.rb +266 -0
- data/lib/roxml/xml.rb +223 -0
- data/lib/roxml/xml/libxml.rb +63 -0
- data/lib/roxml/xml/rexml.rb +64 -0
- data/roxml.gemspec +105 -0
- data/test/fixtures/book_text_with_attribute.xml +1 -1
- data/test/fixtures/book_valid.xml +2 -2
- data/test/fixtures/book_with_authors.xml +7 -0
- data/test/fixtures/book_with_contributors_attrs.xml +7 -0
- data/test/fixtures/book_with_default_namespace.xml +9 -0
- data/test/fixtures/book_with_depth.xml +6 -0
- data/test/fixtures/book_with_wrapped_attr.xml +3 -0
- data/test/fixtures/dictionary_of_attr_name_clashes.xml +8 -0
- data/test/fixtures/dictionary_of_attrs.xml +6 -0
- data/test/fixtures/dictionary_of_guarded_names.xml +6 -0
- data/test/fixtures/dictionary_of_mixeds.xml +4 -0
- data/test/fixtures/dictionary_of_name_clashes.xml +10 -0
- data/test/fixtures/dictionary_of_names.xml +4 -0
- data/test/fixtures/dictionary_of_texts.xml +10 -0
- data/test/fixtures/library.xml +1 -1
- data/test/fixtures/library_uppercase.xml +30 -0
- data/test/fixtures/muffins.xml +3 -0
- data/test/fixtures/nameless_ageless_youth.xml +2 -0
- data/test/fixtures/node_with_attr_name_conflicts.xml +1 -0
- data/test/fixtures/node_with_name_conflicts.xml +4 -0
- data/test/fixtures/numerology.xml +4 -0
- data/test/fixtures/person_with_guarded_mothers.xml +13 -0
- data/test/fixtures/person_with_mothers.xml +10 -0
- data/test/mocks/dictionaries.rb +56 -0
- data/test/mocks/mocks.rb +244 -48
- data/test/release/dependencies_test.rb +32 -0
- data/test/test_helper.rb +44 -0
- data/test/unit/inheritance_test.rb +19 -0
- data/test/unit/options_test.rb +102 -0
- data/test/unit/roxml_test.rb +24 -0
- data/test/unit/string_test.rb +11 -0
- data/test/unit/to_xml_test.rb +52 -0
- data/test/unit/xml_attribute_test.rb +39 -0
- data/test/unit/xml_block_test.rb +81 -0
- data/test/unit/xml_bool_test.rb +105 -0
- data/test/unit/xml_construct_test.rb +77 -0
- data/test/unit/xml_hash_test.rb +65 -0
- data/test/unit/xml_initialize_test.rb +50 -0
- data/test/unit/xml_name_test.rb +108 -0
- data/test/unit/xml_namespace_test.rb +38 -0
- data/test/unit/xml_object_test.rb +116 -0
- data/test/unit/xml_required_test.rb +93 -0
- data/test/unit/xml_text_test.rb +68 -0
- metadata +138 -87
- data/MIT-LICENSE.txt +0 -9
- data/README +0 -2
- data/doc/classes/ROXML.html +0 -374
- data/doc/classes/ROXML.src/M000003.html +0 -19
- data/doc/classes/ROXML.src/M000004.html +0 -25
- data/doc/classes/ROXML.src/M000005.html +0 -22
- data/doc/classes/ROXML/ROXML_Class.html +0 -429
- data/doc/classes/ROXML/ROXML_Class.src/M000006.html +0 -27
- data/doc/classes/ROXML/ROXML_Class.src/M000007.html +0 -18
- data/doc/classes/ROXML/ROXML_Class.src/M000008.html +0 -19
- data/doc/classes/ROXML/ROXML_Class.src/M000009.html +0 -25
- data/doc/classes/ROXML/ROXML_Class.src/M000010.html +0 -24
- data/doc/classes/ROXML/ROXML_Class.src/M000011.html +0 -18
- data/doc/classes/ROXML/ROXML_Class.src/M000012.html +0 -18
- data/doc/classes/ROXML/XMLAttributeRef.html +0 -175
- data/doc/classes/ROXML/XMLAttributeRef.src/M000015.html +0 -19
- data/doc/classes/ROXML/XMLAttributeRef.src/M000016.html +0 -19
- data/doc/classes/ROXML/XMLObjectRef.html +0 -175
- data/doc/classes/ROXML/XMLObjectRef.src/M000013.html +0 -26
- data/doc/classes/ROXML/XMLObjectRef.src/M000014.html +0 -32
- data/doc/classes/ROXML/XMLRef.html +0 -166
- data/doc/classes/ROXML/XMLRef.src/M000017.html +0 -21
- data/doc/classes/ROXML/XMLTextRef.html +0 -198
- data/doc/classes/ROXML/XMLTextRef.src/M000018.html +0 -28
- data/doc/classes/ROXML/XMLTextRef.src/M000019.html +0 -34
- data/doc/classes/String.html +0 -165
- data/doc/classes/String.src/M000001.html +0 -23
- data/doc/classes/String.src/M000002.html +0 -23
- data/doc/created.rid +0 -1
- data/doc/files/lib/roxml_rb.html +0 -234
- data/doc/fr_class_index.html +0 -33
- data/doc/fr_file_index.html +0 -27
- data/doc/fr_method_index.html +0 -45
- data/doc/index.html +0 -24
- data/doc/rdoc-style.css +0 -208
- data/test/fixture_helper.rb +0 -5
- data/test/test_roxml.rb +0 -105
data/doc/fr_class_index.html
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
3
|
-
<!DOCTYPE html
|
|
4
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
5
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
|
|
9
|
-
Classes
|
|
10
|
-
|
|
11
|
-
-->
|
|
12
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
13
|
-
<head>
|
|
14
|
-
<title>Classes</title>
|
|
15
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
16
|
-
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
|
17
|
-
<base target="docwin" />
|
|
18
|
-
</head>
|
|
19
|
-
<body>
|
|
20
|
-
<div id="index">
|
|
21
|
-
<h1 class="section-bar">Classes</h1>
|
|
22
|
-
<div id="index-entries">
|
|
23
|
-
<a href="classes/ROXML.html">ROXML</a><br />
|
|
24
|
-
<a href="classes/ROXML/ROXML_Class.html">ROXML::ROXML_Class</a><br />
|
|
25
|
-
<a href="classes/ROXML/XMLAttributeRef.html">ROXML::XMLAttributeRef</a><br />
|
|
26
|
-
<a href="classes/ROXML/XMLObjectRef.html">ROXML::XMLObjectRef</a><br />
|
|
27
|
-
<a href="classes/ROXML/XMLRef.html">ROXML::XMLRef</a><br />
|
|
28
|
-
<a href="classes/ROXML/XMLTextRef.html">ROXML::XMLTextRef</a><br />
|
|
29
|
-
<a href="classes/String.html">String</a><br />
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
</body>
|
|
33
|
-
</html>
|
data/doc/fr_file_index.html
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
3
|
-
<!DOCTYPE html
|
|
4
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
5
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
|
|
9
|
-
Files
|
|
10
|
-
|
|
11
|
-
-->
|
|
12
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
13
|
-
<head>
|
|
14
|
-
<title>Files</title>
|
|
15
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
16
|
-
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
|
17
|
-
<base target="docwin" />
|
|
18
|
-
</head>
|
|
19
|
-
<body>
|
|
20
|
-
<div id="index">
|
|
21
|
-
<h1 class="section-bar">Files</h1>
|
|
22
|
-
<div id="index-entries">
|
|
23
|
-
<a href="files/lib/roxml_rb.html">lib/roxml.rb</a><br />
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
</body>
|
|
27
|
-
</html>
|
data/doc/fr_method_index.html
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
3
|
-
<!DOCTYPE html
|
|
4
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
5
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
|
|
9
|
-
Methods
|
|
10
|
-
|
|
11
|
-
-->
|
|
12
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
13
|
-
<head>
|
|
14
|
-
<title>Methods</title>
|
|
15
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
16
|
-
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
|
17
|
-
<base target="docwin" />
|
|
18
|
-
</head>
|
|
19
|
-
<body>
|
|
20
|
-
<div id="index">
|
|
21
|
-
<h1 class="section-bar">Methods</h1>
|
|
22
|
-
<div id="index-entries">
|
|
23
|
-
<a href="classes/ROXML.html#M000003">included (ROXML)</a><br />
|
|
24
|
-
<a href="classes/ROXML.html#M000005">method_missing (ROXML)</a><br />
|
|
25
|
-
<a href="classes/ROXML/XMLRef.html#M000017">new (ROXML::XMLRef)</a><br />
|
|
26
|
-
<a href="classes/ROXML/ROXML_Class.html#M000006">parse (ROXML::ROXML_Class)</a><br />
|
|
27
|
-
<a href="classes/ROXML/XMLTextRef.html#M000019">populate (ROXML::XMLTextRef)</a><br />
|
|
28
|
-
<a href="classes/ROXML/XMLObjectRef.html#M000014">populate (ROXML::XMLObjectRef)</a><br />
|
|
29
|
-
<a href="classes/ROXML/XMLAttributeRef.html#M000016">populate (ROXML::XMLAttributeRef)</a><br />
|
|
30
|
-
<a href="classes/ROXML/ROXML_Class.html#M000011">tag_name (ROXML::ROXML_Class)</a><br />
|
|
31
|
-
<a href="classes/ROXML/ROXML_Class.html#M000012">tag_refs (ROXML::ROXML_Class)</a><br />
|
|
32
|
-
<a href="classes/String.html#M000002">to_latin (String)</a><br />
|
|
33
|
-
<a href="classes/String.html#M000001">to_utf (String)</a><br />
|
|
34
|
-
<a href="classes/ROXML.html#M000004">to_xml (ROXML)</a><br />
|
|
35
|
-
<a href="classes/ROXML/XMLObjectRef.html#M000013">update_xml (ROXML::XMLObjectRef)</a><br />
|
|
36
|
-
<a href="classes/ROXML/XMLTextRef.html#M000018">update_xml (ROXML::XMLTextRef)</a><br />
|
|
37
|
-
<a href="classes/ROXML/XMLAttributeRef.html#M000015">update_xml (ROXML::XMLAttributeRef)</a><br />
|
|
38
|
-
<a href="classes/ROXML/ROXML_Class.html#M000008">xml_attribute (ROXML::ROXML_Class)</a><br />
|
|
39
|
-
<a href="classes/ROXML/ROXML_Class.html#M000007">xml_name (ROXML::ROXML_Class)</a><br />
|
|
40
|
-
<a href="classes/ROXML/ROXML_Class.html#M000010">xml_object (ROXML::ROXML_Class)</a><br />
|
|
41
|
-
<a href="classes/ROXML/ROXML_Class.html#M000009">xml_text (ROXML::ROXML_Class)</a><br />
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</body>
|
|
45
|
-
</html>
|
data/doc/index.html
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
|
5
|
-
|
|
6
|
-
<!--
|
|
7
|
-
|
|
8
|
-
RDoc Documentation
|
|
9
|
-
|
|
10
|
-
-->
|
|
11
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
12
|
-
<head>
|
|
13
|
-
<title>RDoc Documentation</title>
|
|
14
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
15
|
-
</head>
|
|
16
|
-
<frameset rows="20%, 80%">
|
|
17
|
-
<frameset cols="25%,35%,45%">
|
|
18
|
-
<frame src="fr_file_index.html" title="Files" name="Files" />
|
|
19
|
-
<frame src="fr_class_index.html" name="Classes" />
|
|
20
|
-
<frame src="fr_method_index.html" name="Methods" />
|
|
21
|
-
</frameset>
|
|
22
|
-
<frame src="files/lib/roxml_rb.html" name="docwin" />
|
|
23
|
-
</frameset>
|
|
24
|
-
</html>
|
data/doc/rdoc-style.css
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
body {
|
|
3
|
-
font-family: Verdana,Arial,Helvetica,sans-serif;
|
|
4
|
-
font-size: 90%;
|
|
5
|
-
margin: 0;
|
|
6
|
-
margin-left: 40px;
|
|
7
|
-
padding: 0;
|
|
8
|
-
background: white;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
|
12
|
-
h1 { font-size: 150%; }
|
|
13
|
-
h2,h3,h4 { margin-top: 1em; }
|
|
14
|
-
|
|
15
|
-
a { background: #eef; color: #039; text-decoration: none; }
|
|
16
|
-
a:hover { background: #039; color: #eef; }
|
|
17
|
-
|
|
18
|
-
/* Override the base stylesheet's Anchor inside a table cell */
|
|
19
|
-
td > a {
|
|
20
|
-
background: transparent;
|
|
21
|
-
color: #039;
|
|
22
|
-
text-decoration: none;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/* and inside a section title */
|
|
26
|
-
.section-title > a {
|
|
27
|
-
background: transparent;
|
|
28
|
-
color: #eee;
|
|
29
|
-
text-decoration: none;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/* === Structural elements =================================== */
|
|
33
|
-
|
|
34
|
-
div#index {
|
|
35
|
-
margin: 0;
|
|
36
|
-
margin-left: -40px;
|
|
37
|
-
padding: 0;
|
|
38
|
-
font-size: 90%;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
div#index a {
|
|
43
|
-
margin-left: 0.7em;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
div#index .section-bar {
|
|
47
|
-
margin-left: 0px;
|
|
48
|
-
padding-left: 0.7em;
|
|
49
|
-
background: #ccc;
|
|
50
|
-
font-size: small;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
div#classHeader, div#fileHeader {
|
|
55
|
-
width: auto;
|
|
56
|
-
color: white;
|
|
57
|
-
padding: 0.5em 1.5em 0.5em 1.5em;
|
|
58
|
-
margin: 0;
|
|
59
|
-
margin-left: -40px;
|
|
60
|
-
border-bottom: 3px solid #006;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
div#classHeader a, div#fileHeader a {
|
|
64
|
-
background: inherit;
|
|
65
|
-
color: white;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
div#classHeader td, div#fileHeader td {
|
|
69
|
-
background: inherit;
|
|
70
|
-
color: white;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
div#fileHeader {
|
|
75
|
-
background: #057;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
div#classHeader {
|
|
79
|
-
background: #048;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.class-name-in-header {
|
|
84
|
-
font-size: 180%;
|
|
85
|
-
font-weight: bold;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
div#bodyContent {
|
|
90
|
-
padding: 0 1.5em 0 1.5em;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
div#description {
|
|
94
|
-
padding: 0.5em 1.5em;
|
|
95
|
-
background: #efefef;
|
|
96
|
-
border: 1px dotted #999;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
div#description h1,h2,h3,h4,h5,h6 {
|
|
100
|
-
color: #125;;
|
|
101
|
-
background: transparent;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
div#validator-badges {
|
|
105
|
-
text-align: center;
|
|
106
|
-
}
|
|
107
|
-
div#validator-badges img { border: 0; }
|
|
108
|
-
|
|
109
|
-
div#copyright {
|
|
110
|
-
color: #333;
|
|
111
|
-
background: #efefef;
|
|
112
|
-
font: 0.75em sans-serif;
|
|
113
|
-
margin-top: 5em;
|
|
114
|
-
margin-bottom: 0;
|
|
115
|
-
padding: 0.5em 2em;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
/* === Classes =================================== */
|
|
120
|
-
|
|
121
|
-
table.header-table {
|
|
122
|
-
color: white;
|
|
123
|
-
font-size: small;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.type-note {
|
|
127
|
-
font-size: small;
|
|
128
|
-
color: #DEDEDE;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.xxsection-bar {
|
|
132
|
-
background: #eee;
|
|
133
|
-
color: #333;
|
|
134
|
-
padding: 3px;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
.section-bar {
|
|
138
|
-
color: #333;
|
|
139
|
-
border-bottom: 1px solid #999;
|
|
140
|
-
margin-left: -20px;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
.section-title {
|
|
145
|
-
background: #79a;
|
|
146
|
-
color: #eee;
|
|
147
|
-
padding: 3px;
|
|
148
|
-
margin-top: 2em;
|
|
149
|
-
margin-left: -30px;
|
|
150
|
-
border: 1px solid #999;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
.top-aligned-row { vertical-align: top }
|
|
154
|
-
.bottom-aligned-row { vertical-align: bottom }
|
|
155
|
-
|
|
156
|
-
/* --- Context section classes ----------------------- */
|
|
157
|
-
|
|
158
|
-
.context-row { }
|
|
159
|
-
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
|
160
|
-
.context-item-value { font-size: small; color: #448; }
|
|
161
|
-
.context-item-desc { color: #333; padding-left: 2em; }
|
|
162
|
-
|
|
163
|
-
/* --- Method classes -------------------------- */
|
|
164
|
-
.method-detail {
|
|
165
|
-
background: #efefef;
|
|
166
|
-
padding: 0;
|
|
167
|
-
margin-top: 0.5em;
|
|
168
|
-
margin-bottom: 1em;
|
|
169
|
-
border: 1px dotted #ccc;
|
|
170
|
-
}
|
|
171
|
-
.method-heading {
|
|
172
|
-
color: black;
|
|
173
|
-
background: #ccc;
|
|
174
|
-
border-bottom: 1px solid #666;
|
|
175
|
-
padding: 0.2em 0.5em 0 0.5em;
|
|
176
|
-
}
|
|
177
|
-
.method-signature { color: black; background: inherit; }
|
|
178
|
-
.method-name { font-weight: bold; }
|
|
179
|
-
.method-args { font-style: italic; }
|
|
180
|
-
.method-description { padding: 0 0.5em 0 0.5em; }
|
|
181
|
-
|
|
182
|
-
/* --- Source code sections -------------------- */
|
|
183
|
-
|
|
184
|
-
a.source-toggle { font-size: 90%; }
|
|
185
|
-
div.method-source-code {
|
|
186
|
-
background: #262626;
|
|
187
|
-
color: #ffdead;
|
|
188
|
-
margin: 1em;
|
|
189
|
-
padding: 0.5em;
|
|
190
|
-
border: 1px dashed #999;
|
|
191
|
-
overflow: hidden;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
195
|
-
|
|
196
|
-
/* --- Ruby keyword styles --------------------- */
|
|
197
|
-
|
|
198
|
-
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
|
199
|
-
|
|
200
|
-
.ruby-constant { color: #7fffd4; background: transparent; }
|
|
201
|
-
.ruby-keyword { color: #00ffff; background: transparent; }
|
|
202
|
-
.ruby-ivar { color: #eedd82; background: transparent; }
|
|
203
|
-
.ruby-operator { color: #00ffee; background: transparent; }
|
|
204
|
-
.ruby-identifier { color: #ffdead; background: transparent; }
|
|
205
|
-
.ruby-node { color: #ffa07a; background: transparent; }
|
|
206
|
-
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
|
207
|
-
.ruby-regexp { color: #ffa07a; background: transparent; }
|
|
208
|
-
.ruby-value { color: #7fffd4; background: transparent; }
|
data/test/fixture_helper.rb
DELETED
data/test/test_roxml.rb
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
require "lib/roxml"
|
|
2
|
-
require "test/unit"
|
|
3
|
-
require "test/fixture_helper"
|
|
4
|
-
require "test/mocks/mocks"
|
|
5
|
-
|
|
6
|
-
class TestROXML < Test::Unit::TestCase
|
|
7
|
-
include FixtureHelper
|
|
8
|
-
|
|
9
|
-
# Test a simple mapping with no composition
|
|
10
|
-
def test_valid_simple
|
|
11
|
-
book = Book.parse(fixture(:book_valid))
|
|
12
|
-
assert_equal("The PickAxe", book.title)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Test book with text and attribute
|
|
16
|
-
def test_book_author_text_attribute
|
|
17
|
-
book = BookWithAuthorTextAttribute.parse(fixture(:book_text_with_attribute))
|
|
18
|
-
assert_equal("primary",book.author.role)
|
|
19
|
-
assert_equal("David Thomas",book.author.text)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Malformed XML parsing should throw REXML::ParseException
|
|
23
|
-
def test_malformed
|
|
24
|
-
begin
|
|
25
|
-
book = Book.parse(fixture(:book_malformed))
|
|
26
|
-
fail()
|
|
27
|
-
rescue REXML::ParseException
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Test XML object containing list of other XML objects (one-to-many)
|
|
32
|
-
# In this case, book with contibutions
|
|
33
|
-
def test_one_to_many_with_container
|
|
34
|
-
expected_authors = ["David Thomas","Andrew Hunt","Chad Fowler"]
|
|
35
|
-
book = BookWithContributions.parse(fixture(:book_with_contributions))
|
|
36
|
-
assert_equal("Programming Ruby - 2nd Edition", book.title)
|
|
37
|
-
book.contributions.each do |contributor|
|
|
38
|
-
assert expected_authors.include?(contributor.name)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Test XML object containing 1-n other XML objects without container (one-to-many)
|
|
43
|
-
# In this case, book with contibutions
|
|
44
|
-
def test_one_to_many_without_container
|
|
45
|
-
expected_contributors = ["David Thomas","Andrew Hunt","Chad Fowler"]
|
|
46
|
-
book = BookWithContributors.parse(fixture(:book_with_contributors))
|
|
47
|
-
assert_equal("Programming Ruby - 2nd Edition", book.title)
|
|
48
|
-
book.contributors.each do |contributor|
|
|
49
|
-
assert(expected_contributors.include?(contributor.name))
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Test XML object containing one other XML object (one-to-one)
|
|
54
|
-
# In this case, book with publisher
|
|
55
|
-
def test_one_to_one
|
|
56
|
-
book = BookWithPublisher.parse(fixture(:book_with_publisher))
|
|
57
|
-
assert_equal("Programming Ruby - 2nd Edition", book.title)
|
|
58
|
-
assert_equal("Pragmatic Bookshelf", book.publisher.name)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Test XML object containing type of self (self-reference)
|
|
62
|
-
def test_self_reference
|
|
63
|
-
book = BookPair.parse(fixture(:book_pair))
|
|
64
|
-
assert_equal("Programming Ruby - 2nd Edition", book.title)
|
|
65
|
-
assert_equal("Agile Web Development with Rails", book.book.title)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Test three-level composition (one-to-many-to-many)
|
|
69
|
-
def test_one_to_many_to_many
|
|
70
|
-
expected_contributors = ["David Thomas","Andrew Hunt","Chad Fowler", "David Heinemeier Hansson"]
|
|
71
|
-
expected_books = ["Programming Ruby - 2nd Edition", "Agile Web Development with Rails"]
|
|
72
|
-
library = Library.parse(fixture(:library))
|
|
73
|
-
assert_equal("Ruby library", library.name)
|
|
74
|
-
library.books.each do |book|
|
|
75
|
-
assert expected_books.include?(book.title)
|
|
76
|
-
book.contributions.each do |contributor|
|
|
77
|
-
assert(expected_contributors.include?(contributor.name))
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def test_text_modificatoin
|
|
83
|
-
person = Person.parse(fixture(:person))
|
|
84
|
-
assert_equal("Ben Franklin", person.name)
|
|
85
|
-
person.name = "Fred"
|
|
86
|
-
xml=person.to_xml.to_s
|
|
87
|
-
assert(/Fred/=~xml)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Verify that an exception is thrown when two accessors have the same
|
|
91
|
-
# name in a ROXML class.
|
|
92
|
-
def test_duplicate_accessor
|
|
93
|
-
begin
|
|
94
|
-
klass = Class.new do
|
|
95
|
-
include ROXML
|
|
96
|
-
|
|
97
|
-
xml_attribute :id
|
|
98
|
-
xml_text :id
|
|
99
|
-
end
|
|
100
|
-
raise "Defining a class with multiple accessors with same name should fail."
|
|
101
|
-
rescue
|
|
102
|
-
# Ok we should fail.
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|