summaryrefslogtreecommitdiff
path: root/test/rexml/xpath
diff options
context:
space:
mode:
Diffstat (limited to 'test/rexml/xpath')
-rw-r--r--test/rexml/xpath/test_attribute.rb92
1 files changed, 17 insertions, 75 deletions
diff --git a/test/rexml/xpath/test_attribute.rb b/test/rexml/xpath/test_attribute.rb
index 9af83a3081..81a39bb9d2 100644
--- a/test/rexml/xpath/test_attribute.rb
+++ b/test/rexml/xpath/test_attribute.rb
@@ -2,84 +2,26 @@ require 'test/unit'
require 'rexml/document'
class TestXPathAttribute < Test::Unit::TestCase
-
- # xmlstr1 and xmlstr2 only differ in the second line - namespaces in the root element
- @@xmlstr1 = '<?xml version="1.0" encoding="UTF-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:gCal="http://schemas.google.com/gCal/2005">
- <id>http://www.google.com/calendar/feeds/me%40gmail.com</id>
- <entry>
- <id>http://www.google.com/calendar/feeds/me%40gmail.com/me%40gmail.com</id>
- <published>2007-05-16T13:42:27.942Z</published>
- <updated>2007-05-15T03:29:28.000Z</updated>
- <title type="text">My Calendar</title>
- <link rel="alternate" type="application/atom+xml" href="http://www.google.com/calendar/feeds/me%40gmail.com/private/full"/>
- <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml" href="http://www.google.com/calendar/feeds/me%40gmail.com/acl/full"/>
- <link rel="self" type="application/atom+xml" href="http://www.google.com/calendar/feeds/me%40gmail.com/me%40gmail.com"/>
- <author>
- <name>Me</name>
- <email>me@gmail.com</email>
- </author>
- </entry>
-</feed>'
-
-
- @@xmlstr2 = '<?xml version="1.0" encoding="UTF-8"?>
-<feed>
- <id>http://www.google.com/calendar/feeds/me%40gmail.com</id>
- <entry>
- <id>http://www.google.com/calendar/feeds/me%40gmail.com/me%40gmail.com</id>
- <published>2007-05-16T13:42:27.942Z</published>
- <updated>2007-05-15T03:29:28.000Z</updated>
- <title type="text">My Calendar</title>
- <link rel="alternate" type="application/atom+xml" href="http://www.google.com/calendar/feeds/me%40gmail.com/private/full"/>
- <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml" href="http://www.google.com/calendar/feeds/me%40gmail.com/acl/full"/>
- <link rel="self" type="application/atom+xml" href="http://www.google.com/calendar/feeds/me%40gmail.com/me%40gmail.com"/>
- <author>
- <name>Me</name>
- <email>me@gmail.com</email>
- </author>
- </entry>
-</feed>'
-
- # Fails
- def test_xpath_query
- do_test @@xmlstr1
+ def setup
+ @xml = <<-XML
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+ <child name="one">child1</child>
+ <child name="two">child2</child>
+ <child name="three">child3</child>
+</root>
+ XML
+ @document = REXML::Document.new(@xml)
end
- # Passes
- def test_xpath_query_no_namespace
- do_test @@xmlstr2
+ def test_elements
+ root = @document.elements["root"]
+ second_child = root.elements["child[@name='two']"]
+ assert_equal("child2", second_child.text)
end
- def do_test(xmlString)
- hrefs = [
- "http://www.google.com/calendar/feeds/me%40gmail.com/private/full",
- "http://www.google.com/calendar/feeds/me%40gmail.com/acl/full",
- "http://www.google.com/calendar/feeds/me%40gmail.com/me%40gmail.com"
- ]
- ctr=0
- REXML::Document.new(xmlString).elements.each("feed/entry") do |element|
- @alternate_link = element.elements["link[@rel='alternate']"]
- assert_not_nil( @alternate_link )
- assert_equal( hrefs[ctr], @alternate_link.attributes['href'])
- ctr += 1
- end
- end
-
-
- def test_another_way
- doc = REXML::Document.new(@@xmlstr1)
- hrefs = [
- "http://www.google.com/calendar/feeds/me%40gmail.com/private/full",
- "http://www.google.com/calendar/feeds/me%40gmail.com/acl/full",
- "http://www.google.com/calendar/feeds/me%40gmail.com/me%40gmail.com"
- ]
- ctr=0
- REXML::XPath.each(doc, "//link[@rel='alternate']") do |element|
- @alternate_link = element
- assert_not_nil @alternate_link
- assert_equal( hrefs[ctr], @alternate_link.attributes['href'])
- ctr += 1
- end
+ def test_xpath_each
+ children = REXML::XPath.each(@document, "/root/child[@name='two']")
+ assert_equal(["child2"], children.collect(&:text))
end
end