rubysl-rexml 1.0.0

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.
Files changed (179) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +25 -0
  6. data/README.md +29 -0
  7. data/Rakefile +1 -0
  8. data/lib/rexml/attlistdecl.rb +62 -0
  9. data/lib/rexml/attribute.rb +185 -0
  10. data/lib/rexml/cdata.rb +67 -0
  11. data/lib/rexml/child.rb +96 -0
  12. data/lib/rexml/comment.rb +80 -0
  13. data/lib/rexml/doctype.rb +271 -0
  14. data/lib/rexml/document.rb +230 -0
  15. data/lib/rexml/dtd/attlistdecl.rb +10 -0
  16. data/lib/rexml/dtd/dtd.rb +51 -0
  17. data/lib/rexml/dtd/elementdecl.rb +17 -0
  18. data/lib/rexml/dtd/entitydecl.rb +56 -0
  19. data/lib/rexml/dtd/notationdecl.rb +39 -0
  20. data/lib/rexml/element.rb +1227 -0
  21. data/lib/rexml/encoding.rb +71 -0
  22. data/lib/rexml/encodings/CP-1252.rb +103 -0
  23. data/lib/rexml/encodings/EUC-JP.rb +35 -0
  24. data/lib/rexml/encodings/ICONV.rb +22 -0
  25. data/lib/rexml/encodings/ISO-8859-1.rb +7 -0
  26. data/lib/rexml/encodings/ISO-8859-15.rb +72 -0
  27. data/lib/rexml/encodings/SHIFT-JIS.rb +37 -0
  28. data/lib/rexml/encodings/SHIFT_JIS.rb +1 -0
  29. data/lib/rexml/encodings/UNILE.rb +34 -0
  30. data/lib/rexml/encodings/US-ASCII.rb +30 -0
  31. data/lib/rexml/encodings/UTF-16.rb +35 -0
  32. data/lib/rexml/encodings/UTF-8.rb +18 -0
  33. data/lib/rexml/entity.rb +166 -0
  34. data/lib/rexml/formatters/default.rb +109 -0
  35. data/lib/rexml/formatters/pretty.rb +138 -0
  36. data/lib/rexml/formatters/transitive.rb +56 -0
  37. data/lib/rexml/functions.rb +382 -0
  38. data/lib/rexml/instruction.rb +70 -0
  39. data/lib/rexml/light/node.rb +196 -0
  40. data/lib/rexml/namespace.rb +47 -0
  41. data/lib/rexml/node.rb +75 -0
  42. data/lib/rexml/output.rb +24 -0
  43. data/lib/rexml/parent.rb +166 -0
  44. data/lib/rexml/parseexception.rb +51 -0
  45. data/lib/rexml/parsers/baseparser.rb +503 -0
  46. data/lib/rexml/parsers/lightparser.rb +60 -0
  47. data/lib/rexml/parsers/pullparser.rb +196 -0
  48. data/lib/rexml/parsers/sax2parser.rb +238 -0
  49. data/lib/rexml/parsers/streamparser.rb +46 -0
  50. data/lib/rexml/parsers/treeparser.rb +97 -0
  51. data/lib/rexml/parsers/ultralightparser.rb +56 -0
  52. data/lib/rexml/parsers/xpathparser.rb +698 -0
  53. data/lib/rexml/quickpath.rb +266 -0
  54. data/lib/rexml/rexml.rb +32 -0
  55. data/lib/rexml/sax2listener.rb +97 -0
  56. data/lib/rexml/source.rb +251 -0
  57. data/lib/rexml/streamlistener.rb +92 -0
  58. data/lib/rexml/syncenumerator.rb +33 -0
  59. data/lib/rexml/text.rb +344 -0
  60. data/lib/rexml/undefinednamespaceexception.rb +8 -0
  61. data/lib/rexml/validation/relaxng.rb +559 -0
  62. data/lib/rexml/validation/validation.rb +155 -0
  63. data/lib/rexml/validation/validationexception.rb +9 -0
  64. data/lib/rexml/xmldecl.rb +119 -0
  65. data/lib/rexml/xmltokens.rb +18 -0
  66. data/lib/rexml/xpath.rb +66 -0
  67. data/lib/rexml/xpath_parser.rb +792 -0
  68. data/lib/rubysl/rexml.rb +1 -0
  69. data/lib/rubysl/rexml/version.rb +5 -0
  70. data/rubysl-rexml.gemspec +23 -0
  71. data/spec/attribute/clone_spec.rb +10 -0
  72. data/spec/attribute/element_spec.rb +22 -0
  73. data/spec/attribute/equal_value_spec.rb +17 -0
  74. data/spec/attribute/hash_spec.rb +12 -0
  75. data/spec/attribute/initialize_spec.rb +28 -0
  76. data/spec/attribute/inspect_spec.rb +19 -0
  77. data/spec/attribute/namespace_spec.rb +23 -0
  78. data/spec/attribute/node_type_spec.rb +9 -0
  79. data/spec/attribute/prefix_spec.rb +17 -0
  80. data/spec/attribute/remove_spec.rb +19 -0
  81. data/spec/attribute/to_s_spec.rb +13 -0
  82. data/spec/attribute/to_string_spec.rb +14 -0
  83. data/spec/attribute/value_spec.rb +14 -0
  84. data/spec/attribute/write_spec.rb +22 -0
  85. data/spec/attribute/xpath_spec.rb +19 -0
  86. data/spec/attributes/add_spec.rb +6 -0
  87. data/spec/attributes/append_spec.rb +6 -0
  88. data/spec/attributes/delete_all_spec.rb +30 -0
  89. data/spec/attributes/delete_spec.rb +26 -0
  90. data/spec/attributes/each_attribute_spec.rb +24 -0
  91. data/spec/attributes/each_spec.rb +24 -0
  92. data/spec/attributes/element_reference_spec.rb +18 -0
  93. data/spec/attributes/element_set_spec.rb +25 -0
  94. data/spec/attributes/get_attribute_ns_spec.rb +13 -0
  95. data/spec/attributes/get_attribute_spec.rb +28 -0
  96. data/spec/attributes/initialize_spec.rb +18 -0
  97. data/spec/attributes/length_spec.rb +6 -0
  98. data/spec/attributes/namespaces_spec.rb +5 -0
  99. data/spec/attributes/prefixes_spec.rb +23 -0
  100. data/spec/attributes/shared/add.rb +17 -0
  101. data/spec/attributes/shared/length.rb +12 -0
  102. data/spec/attributes/size_spec.rb +6 -0
  103. data/spec/attributes/to_a_spec.rb +20 -0
  104. data/spec/cdata/clone_spec.rb +9 -0
  105. data/spec/cdata/initialize_spec.rb +24 -0
  106. data/spec/cdata/shared/to_s.rb +11 -0
  107. data/spec/cdata/to_s_spec.rb +6 -0
  108. data/spec/cdata/value_spec.rb +6 -0
  109. data/spec/document/add_element_spec.rb +30 -0
  110. data/spec/document/add_spec.rb +60 -0
  111. data/spec/document/clone_spec.rb +19 -0
  112. data/spec/document/doctype_spec.rb +14 -0
  113. data/spec/document/encoding_spec.rb +21 -0
  114. data/spec/document/expanded_name_spec.rb +15 -0
  115. data/spec/document/new_spec.rb +37 -0
  116. data/spec/document/node_type_spec.rb +7 -0
  117. data/spec/document/root_spec.rb +11 -0
  118. data/spec/document/stand_alone_spec.rb +18 -0
  119. data/spec/document/version_spec.rb +13 -0
  120. data/spec/document/write_spec.rb +38 -0
  121. data/spec/document/xml_decl_spec.rb +14 -0
  122. data/spec/element/add_attribute_spec.rb +40 -0
  123. data/spec/element/add_attributes_spec.rb +21 -0
  124. data/spec/element/add_element_spec.rb +38 -0
  125. data/spec/element/add_namespace_spec.rb +23 -0
  126. data/spec/element/add_text_spec.rb +23 -0
  127. data/spec/element/attribute_spec.rb +16 -0
  128. data/spec/element/attributes_spec.rb +18 -0
  129. data/spec/element/cdatas_spec.rb +23 -0
  130. data/spec/element/clone_spec.rb +28 -0
  131. data/spec/element/comments_spec.rb +20 -0
  132. data/spec/element/delete_attribute_spec.rb +38 -0
  133. data/spec/element/delete_element_spec.rb +50 -0
  134. data/spec/element/delete_namespace_spec.rb +24 -0
  135. data/spec/element/document_spec.rb +17 -0
  136. data/spec/element/each_element_with_attribute_spec.rb +34 -0
  137. data/spec/element/each_element_with_text_spec.rb +30 -0
  138. data/spec/element/get_text_spec.rb +17 -0
  139. data/spec/element/has_attributes_spec.rb +16 -0
  140. data/spec/element/has_elements_spec.rb +17 -0
  141. data/spec/element/has_text_spec.rb +15 -0
  142. data/spec/element/inspect_spec.rb +26 -0
  143. data/spec/element/instructions_spec.rb +20 -0
  144. data/spec/element/namespace_spec.rb +26 -0
  145. data/spec/element/namespaces_spec.rb +31 -0
  146. data/spec/element/new_spec.rb +34 -0
  147. data/spec/element/next_element_spec.rb +18 -0
  148. data/spec/element/node_type_spec.rb +7 -0
  149. data/spec/element/prefixes_spec.rb +22 -0
  150. data/spec/element/previous_element_spec.rb +19 -0
  151. data/spec/element/raw_spec.rb +23 -0
  152. data/spec/element/root_spec.rb +27 -0
  153. data/spec/element/text_spec.rb +45 -0
  154. data/spec/element/texts_spec.rb +15 -0
  155. data/spec/element/whitespace_spec.rb +22 -0
  156. data/spec/node/each_recursive_spec.rb +20 -0
  157. data/spec/node/find_first_recursive_spec.rb +24 -0
  158. data/spec/node/index_in_parent_spec.rb +14 -0
  159. data/spec/node/next_sibling_node_spec.rb +20 -0
  160. data/spec/node/parent_spec.rb +20 -0
  161. data/spec/node/previous_sibling_node_spec.rb +20 -0
  162. data/spec/shared/each_element.rb +35 -0
  163. data/spec/shared/elements_to_a.rb +35 -0
  164. data/spec/text/append_spec.rb +9 -0
  165. data/spec/text/clone_spec.rb +9 -0
  166. data/spec/text/comparison_spec.rb +24 -0
  167. data/spec/text/empty_spec.rb +11 -0
  168. data/spec/text/indent_text_spec.rb +23 -0
  169. data/spec/text/inspect_spec.rb +7 -0
  170. data/spec/text/new_spec.rb +48 -0
  171. data/spec/text/node_type_spec.rb +7 -0
  172. data/spec/text/normalize_spec.rb +7 -0
  173. data/spec/text/read_with_substitution_spec.rb +12 -0
  174. data/spec/text/to_s_spec.rb +17 -0
  175. data/spec/text/unnormalize_spec.rb +7 -0
  176. data/spec/text/value_spec.rb +36 -0
  177. data/spec/text/wrap_spec.rb +20 -0
  178. data/spec/text/write_with_substitution_spec.rb +32 -0
  179. metadata +385 -0
@@ -0,0 +1,24 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#delete_namespace" do
4
+
5
+ before :each do
6
+ @doc = REXML::Document.new "<a xmlns:foo='bar' xmlns='twiddle'/>"
7
+ end
8
+
9
+ it "deletes a namespace from the element" do
10
+ @doc.root.delete_namespace 'foo'
11
+ @doc.root.namespace("foo").should be_nil
12
+ @doc.root.to_s.should == "<a xmlns='twiddle'/>"
13
+ end
14
+
15
+ it "deletes default namespace when called with no args" do
16
+ @doc.root.delete_namespace
17
+ @doc.root.namespace.should be_empty
18
+ @doc.root.to_s.should == "<a xmlns:foo='bar'/>"
19
+ end
20
+
21
+ it "returns the element" do
22
+ @doc.root.delete_namespace.should == @doc.root
23
+ end
24
+ end
@@ -0,0 +1,17 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#document" do
4
+
5
+ it "returns the element's document" do
6
+ d = REXML::Document.new("<root><elem/></root>")
7
+ d << REXML::XMLDecl.new
8
+ d.root.document.should == d
9
+ d.root.document.to_s.should == d.to_s
10
+ end
11
+
12
+ it "returns nil if it belongs to no document" do
13
+ REXML::Element.new("standalone").document.should be_nil
14
+ end
15
+ end
16
+
17
+
@@ -0,0 +1,34 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#each_element_with_attributes" do
4
+ before :each do
5
+ @document = REXML::Element.new("people")
6
+ @father = REXML::Element.new("Person")
7
+ @father.attributes["name"] = "Joe"
8
+ @son = REXML::Element.new("Child")
9
+ @son.attributes["name"] = "Fred"
10
+ @document.root << @father
11
+ @document.root << @son
12
+ @childs = []
13
+ end
14
+
15
+ it "returns childs with attribute" do
16
+ @document.each_element_with_attribute("name") { |elem| @childs << elem }
17
+ @childs[0].should == @father
18
+ @childs[1].should == @son
19
+ end
20
+
21
+ it "takes attribute value as second argument" do
22
+ @document.each_element_with_attribute("name", "Fred"){ |elem| elem.should == @son }
23
+ end
24
+
25
+ it "takes max number of childs as third argument" do
26
+ @document.each_element_with_attribute("name", nil, 1) { |elem| @childs << elem }
27
+ @childs.size.should == 1
28
+ @childs[0].should == @father
29
+ end
30
+
31
+ it "takes XPath filter as fourth argument" do
32
+ @document.each_element_with_attribute("name", nil, 0, "Child"){ |elem| elem.should == @son}
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#each_element_with_text" do
4
+ before :each do
5
+ @document = REXML::Element.new("people")
6
+
7
+ @joe = REXML::Element.new("Person")
8
+ @joe.text = "Joe"
9
+ @fred = REXML::Element.new("Person")
10
+ @fred.text = "Fred"
11
+ @another = REXML::Element.new("AnotherPerson")
12
+ @another.text = "Fred"
13
+ @document.root << @joe
14
+ @document.root << @fred
15
+ @document.root << @another
16
+ @childs = []
17
+ end
18
+
19
+ it "returns childs with text" do
20
+ @document.each_element_with_text("Joe"){|c| c.should == @joe}
21
+ end
22
+
23
+ it "takes max as second argument" do
24
+ @document.each_element_with_text("Fred", 1){ |c| c.should == @fred}
25
+ end
26
+
27
+ it "takes XPath filter as third argument" do
28
+ @document.each_element_with_text("Fred", 0, "Person"){ |c| c.should == @fred}
29
+ end
30
+ end
@@ -0,0 +1,17 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#get_text" do
4
+ before :each do
5
+ @doc = REXML::Document.new "<p>some text<b>this is bold!</b> more text</p>"
6
+ end
7
+
8
+ it "returns the first text child node" do
9
+ @doc.root.get_text.value.should == "some text"
10
+ @doc.root.get_text.should be_kind_of(REXML::Text)
11
+ end
12
+
13
+ it "returns text from an element matching path" do
14
+ @doc.root.get_text("b").value.should == "this is bold!"
15
+ @doc.root.get_text("b").should be_kind_of(REXML::Text)
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#has_attributes?" do
4
+ before :each do
5
+ @e = REXML::Element.new("test_elem")
6
+ end
7
+
8
+ it "returns true when element has any attributes" do
9
+ @e.add_attribute("name", "Joe")
10
+ @e.has_attributes?.should be_true
11
+ end
12
+
13
+ it "returns false if element has no attributes" do
14
+ @e.has_attributes?.should be_false
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#has_elements?" do
4
+ before :each do
5
+ @e = REXML::Element.new("root")
6
+ end
7
+
8
+ it "returns true if element has child elements" do
9
+ child = REXML::Element.new("child")
10
+ @e << child
11
+ @e.has_elements?.should be_true
12
+ end
13
+
14
+ it "returns false if element doesn't have child elements" do
15
+ @e.has_elements?.should be_false
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#has_text?" do
4
+
5
+ it "returns true if element has a Text child" do
6
+ e = REXML::Element.new("Person")
7
+ e.text = "My text"
8
+ e.has_text?.should be_true
9
+ end
10
+
11
+ it "returns false if it has no Text childs" do
12
+ e = REXML::Element.new("Person")
13
+ e.has_text?.should be_false
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#inspect" do
4
+
5
+ before :each do
6
+ @name = REXML::Element.new "name"
7
+ end
8
+
9
+ it "returns the node as a string" do
10
+ @name.inspect.should == "<name/>"
11
+ end
12
+
13
+ it "inserts '...' if the node has children" do
14
+ e = REXML::Element.new "last_name"
15
+ @name << e
16
+ @name.inspect.should == "<name> ... </>"
17
+ # This might make more sense but differs from MRI's default behavior
18
+ # @name.inspect.should == "<name> ... </name>"
19
+ end
20
+
21
+ it "inserts the attributes in the string" do
22
+ @name.add_attribute "language"
23
+ @name.attributes["language"] = "english"
24
+ @name.inspect.should == "<name language='english'/>"
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#instructions" do
4
+ before :each do
5
+ @elem = REXML::Element.new("root")
6
+ end
7
+ it "returns the Instruction children nodes" do
8
+ inst = REXML::Instruction.new("xml-stylesheet", "href='headlines.css'")
9
+ @elem << inst
10
+ @elem.instructions.first.should == inst
11
+ end
12
+
13
+ it "returns an empty array if it has no Instruction children" do
14
+ @elem.instructions.should be_empty
15
+ end
16
+
17
+ it "freezes the returned array" do
18
+ @elem.instructions.frozen?.should be_true
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#namespace" do
4
+ before :each do
5
+ @doc = REXML::Document.new("<a xmlns='1' xmlns:y='2'><b/><c xmlns:z='3'/></a>")
6
+ @elem = @doc.elements["//b"]
7
+ end
8
+
9
+ it "returns the default namespace" do
10
+ @elem.namespace.should == "1"
11
+ end
12
+
13
+ it "accepts a namespace prefix" do
14
+ @elem.namespace("y").should == "2"
15
+ @doc.elements["//c"].namespace("z").should == "3"
16
+ end
17
+
18
+ it "returns an empty String if default namespace is not defined" do
19
+ e = REXML::Document.new("<a/>")
20
+ e.root.namespace.should be_empty
21
+ end
22
+
23
+ it "returns nil if namespace is not defined" do
24
+ @elem.namespace("z").should be_nil
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#namespaces" do
4
+ before :each do
5
+ doc = REXML::Document.new("<a xmlns='1' xmlns:y='2'><b/><c xmlns:z='3'/></a>")
6
+ @elem = doc.elements["//c"]
7
+ end
8
+
9
+ it "returns a hash of the namespaces" do
10
+ ns = {"y"=>"2", "z"=>"3", "xmlns"=>"1"}
11
+ @elem.namespaces.keys.sort.should == ns.keys.sort
12
+ @elem.namespaces.values.sort.should == ns.values.sort
13
+ end
14
+
15
+ it "returns an empty hash if no namespaces exist" do
16
+ e = REXML::Element.new "element"
17
+ e.namespaces.kind_of?(Hash).should == true
18
+ e.namespaces.should be_empty
19
+ end
20
+
21
+ it "uses namespace prefixes as keys" do
22
+ prefixes = ["y", "z", "xmlns"]
23
+ @elem.namespaces.keys.sort.should == prefixes.sort
24
+ end
25
+
26
+ it "uses namespace values as the hash values" do
27
+ values = ["2", "3", "1"]
28
+ @elem.namespaces.values.sort.should == values.sort
29
+ end
30
+
31
+ end
@@ -0,0 +1,34 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#new" do
4
+
5
+ it "creates element from tag name" do
6
+ REXML::Element.new("foo").name.should == "foo"
7
+ end
8
+
9
+ it "creates element with default attributes" do
10
+ e = REXML::Element.new
11
+ e.name.should == REXML::Element::UNDEFINED
12
+ e.context.should == nil
13
+ e.parent.should == nil
14
+ end
15
+
16
+ it "creates element from another element" do
17
+ e = REXML::Element.new "foo"
18
+ f = REXML::Element.new e
19
+ e.name.should == f.name
20
+ e.context.should == f.context
21
+ e.parent.should == f.parent
22
+ end
23
+
24
+ it "takes parent as second argument" do
25
+ parent = REXML::Element.new "foo"
26
+ child = REXML::Element.new "bar", parent
27
+ child.parent.should == parent
28
+ end
29
+
30
+ it "takes context as third argument" do
31
+ context = {"some_key" => "some_value"}
32
+ REXML::Element.new("foo", nil, context).context.should == context
33
+ end
34
+ end
@@ -0,0 +1,18 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#next_element" do
4
+ before :each do
5
+ @a = REXML::Element.new "a"
6
+ @b = REXML::Element.new "b"
7
+ @c = REXML::Element.new "c"
8
+ @a.root << @b
9
+ @a.root << @c
10
+ end
11
+ it "returns next existing element" do
12
+ @a.elements["b"].next_element.should == @c
13
+ end
14
+
15
+ it "returns nil on last element" do
16
+ @a.elements["c"].next_element.should == nil
17
+ end
18
+ end
@@ -0,0 +1,7 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#node_type" do
4
+ it "returns :element" do
5
+ REXML::Element.new("MyElem").node_type.should == :element
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#prefixes" do
4
+ before :each do
5
+ doc = REXML::Document.new("<a xmlns='1' xmlns:y='2'><b/><c xmlns:z='3'/></a>")
6
+ @elem = doc.elements["//c"]
7
+ end
8
+
9
+ it "returns an array of the prefixes of the namespaces" do
10
+ @elem.prefixes.should == ["y", "z"]
11
+ end
12
+
13
+ it "does not include the default namespace" do
14
+ @elem.prefixes.include?("xmlns").should == false
15
+ end
16
+
17
+ it "returns an empty array if no namespace was defined" do
18
+ doc = REXML::Document.new "<root><something/></root>"
19
+ root = doc.elements["//root"]
20
+ root.prefixes.should == []
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#previous_element" do
4
+ before :each do
5
+ @a = REXML::Element.new "a"
6
+ @b = REXML::Element.new "b"
7
+ @c = REXML::Element.new "c"
8
+ @a.root << @b
9
+ @a.root << @c
10
+ end
11
+
12
+ it "returns previous element" do
13
+ @a.elements["c"].previous_element.should == @b
14
+ end
15
+
16
+ it "returns nil on first element" do
17
+ @a.elements["b"].previous_element.should == nil
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#raw" do
4
+ it "returns true if raw mode is set to all" do
5
+ REXML::Element.new("MyElem", nil, {:raw => :all}).raw.should == true
6
+ end
7
+
8
+ it "returns true if raw mode is set to expanded_name" do
9
+ REXML::Element.new("MyElem", nil, {:raw => "MyElem"}).raw.should == true
10
+ end
11
+
12
+ it "returns false if raw mode is not set" do
13
+ REXML::Element.new("MyElem", nil, {:raw => ""}).raw.should == false
14
+ end
15
+
16
+ it "returns false if raw is not :all or expanded_name" do
17
+ REXML::Element.new("MyElem", nil, {:raw => "Something"}).raw.should == false
18
+ end
19
+
20
+ it "returns nil if context is not set" do
21
+ REXML::Element.new("MyElem").raw.should == nil
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ require 'rexml/document'
2
+
3
+ describe "REXML::Element#root" do
4
+ before :each do
5
+ @doc = REXML::Document.new
6
+ @root = REXML::Element.new "root"
7
+ @node = REXML::Element.new "node"
8
+ @doc << @root << @node
9
+ end
10
+
11
+ it "returns first child on documents" do
12
+ @doc.root.should == @root
13
+ end
14
+
15
+ it "returns self on root nodes" do
16
+ @root.root.should == @root
17
+ end
18
+
19
+ it "returns parent's root on child nodes" do
20
+ @node.root.should == @root
21
+ end
22
+
23
+ it "returns self on standalone nodes" do
24
+ e = REXML::Element.new "Elem" # Note that it doesn't have a parent node
25
+ e.root.should == e
26
+ end
27
+ end