From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/test/rexml/test_elements.rb | 118 +++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 jni/ruby/test/rexml/test_elements.rb (limited to 'jni/ruby/test/rexml/test_elements.rb') diff --git a/jni/ruby/test/rexml/test_elements.rb b/jni/ruby/test/rexml/test_elements.rb new file mode 100644 index 0000000..f253a75 --- /dev/null +++ b/jni/ruby/test/rexml/test_elements.rb @@ -0,0 +1,118 @@ +require 'test/unit/testcase' +require 'rexml/document' + +module REXMLTests + class ElementsTester < Test::Unit::TestCase + include REXML + def test_accessor + doc = Document.new '' + assert_equal 'b', doc.root.elements[1].name + assert_equal '1', doc.root.elements['c'].attributes['id'] + assert_equal '2', doc.root.elements[2,'c'].attributes['id'] + end + + def test_indexing + doc = Document.new '' + doc.root.elements[10] = Element.new('b') + assert_equal 'b', doc.root.elements[1].name + doc.root.elements[1] = Element.new('c') + assert_equal 'c', doc.root.elements[1].name + doc.root.elements['c'] = Element.new('d') + assert_equal 'd', doc.root.elements[1].name + end + + def test_delete + doc = Document.new '' + block = proc { |str| + out = '' + doc.write out + assert_equal str, out + } + b = doc.root.elements[1] + doc.root.elements.delete b + block.call( "" ) + doc.elements.delete("a/c[@id='1']") + block.call( '' ) + doc.root.elements.delete 1 + block.call( '' ) + end + + def test_delete_all + doc = Document.new '' + deleted = doc.elements.delete_all 'a/c' + assert_equal 4, deleted.size + end + + def test_ticket_36 + doc = Document.new( "" ) + + deleted = doc.root.elements.delete_all( "xi:c" ) + assert_equal( 1, deleted.size ) + + doc = Document.new( "" ) + deleted = doc.root.elements.delete_all( "//xi:c" ) + assert_equal( 2, deleted.size ) + end + + def test_add + a = Element.new 'a' + a.elements.add Element.new('b') + assert_equal 'b', a.elements[1].name + a.elements.add 'c' + assert_equal 'c', a.elements[2].name + end + + def test_size + doc = Document.new 'seanelliottrussell' + assert_equal 6, doc.root.size + assert_equal 3, doc.root.elements.size + end + + def test_each + doc = Document.new 'sean' + count = 0 + block = proc {|e| count += 1} + doc.root.elements.each(&block) + assert_equal 6, count + count = 0 + doc.root.elements.each('b', &block) + assert_equal 2, count + count = 0 + doc.root.elements.each('child::node()', &block) + assert_equal 6, count + count = 0 + XPath.each(doc.root, 'child::node()', &block) + assert_equal 7, count + end + + def test_each_with_frozen_condition + doc = Document.new('') + names = [] + doc.root.elements.each('book'.freeze) do |element| + names << element.attributes["name"] + end + assert_equal(["Ruby", "XML"], names) + end + + def test_to_a + doc = Document.new 'seanelliott' + assert_equal 2, doc.root.elements.to_a.size + assert_equal 2, doc.root.elements.to_a("child::node()").size + assert_equal 4, XPath.match(doc.root, "child::node()").size + end + + def test_collect + doc = Document.new( "" ) + r = doc.elements.collect( "/a/b" ) { |e| e.attributes["id"].to_i } + assert_equal( [1,2], r ) + end + + def test_inject + doc = Document.new( "" ) + r = doc.elements.inject( "/a/b", 3 ) { |s, e| + s + e.attributes["id"].to_i + } + assert_equal 6, r + end + end +end -- cgit v1.2.3