From 91ed484f92040e5c2006a3a00ec77a54d552cf37 Mon Sep 17 00:00:00 2001 From: kou Date: Fri, 17 Sep 2010 13:14:14 +0000 Subject: * test/rexml/: import REXML tests from http://www.germane-software.com/repos/rexml/trunk/test/. Many tests are failed temporary. I'll fix them quickly. Sorry. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rexml/test_pullparser.rb | 100 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 test/rexml/test_pullparser.rb (limited to 'test/rexml/test_pullparser.rb') diff --git a/test/rexml/test_pullparser.rb b/test/rexml/test_pullparser.rb new file mode 100644 index 0000000000..1c9bcc0045 --- /dev/null +++ b/test/rexml/test_pullparser.rb @@ -0,0 +1,100 @@ +require "test/unit/testcase" + +require 'rexml/parsers/pullparser' + +class PullParserTester < Test::Unit::TestCase + include REXML + def test_basics + source = ' + + foo <bar nooo' + parser = REXML::Parsers::PullParser.new(source) + res = { :text=>0 } + until parser.empty? + results = parser.pull + res[ :xmldecl ] = true if results.xmldecl? + res[ :doctype ] = true if results.doctype? + res[ :a ] = true if results.start_element? and results[0] == 'a' + if results.start_element? and results[0] == 'b' + res[ :b ] = true + assert_equal 'value', results[1]['attribute'] + end + res[ :text ] += 1 if results.text? + end + [ :xmldecl, :doctype, :a, :b ].each { |tag| + assert res[tag] , "#{tag} wasn't processed" + } + assert_equal 4, res[ :text ] + rescue ParseException + puts $! + end + + def test_bad_document + source = "" + parser = REXML::Parsers::PullParser.new(source) + assert_raise(ParseException, "Parsing should have failed") { + results = parser.pull while parser.has_next? + } + end + + def test_entity_replacement + source = ' + + + ]>&la;&lala;' + pp = REXML::Parsers::PullParser.new( source ) + el_name = '' + while pp.has_next? + event = pp.pull + case event.event_type + when :start_element + el_name = event[0] + when :text + case el_name + when 'la' + assert_equal('1234', event[1]) + when 'lala' + assert_equal('--1234--', event[1]) + end + end + end + end + + def test_peek_unshift + source = "" + pp = REXML::Parsers::PullParser.new(source) + # FINISH ME! + end + + def test_inspect + xml = 'Hey' + parser = Parsers::PullParser.new( xml ) + while parser.has_next? + pull_event = parser.pull + if pull_event.start_element? + peek = parser.peek() + peek.inspect + end + end + end + + def test_peek + xml = 'Hey' + parser = Parsers::PullParser.new( xml ) + names = %w{ a b } + while parser.has_next? + pull_event = parser.pull + if pull_event.start_element? + assert_equal( :start_element, pull_event.event_type ) + assert_equal( names.shift, pull_event[0] ) + if names[0] == 'b' + peek = parser.peek() + assert_equal( :start_element, peek.event_type ) + assert_equal( names[0], peek[0] ) + end + end + end + assert_equal( 0, names.length ) + end +end -- cgit v1.2.3