require 'xml'
require 'test/unit'
class TestReader < Test::Unit::TestCase
SIMPLE_XML = File.join(File.dirname(__FILE__), 'model/simple.xml')
def verify_simple(reader)
node_types = []
19.times do
assert_equal(1, reader.read)
node_types << reader.node_type
end
assert_equal(0, reader.read)
assert_equal(node_types,
[XML::Reader::TYPE_ELEMENT,
XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
XML::Reader::TYPE_ELEMENT,
XML::Reader::TYPE_TEXT,
XML::Reader::TYPE_END_ELEMENT,
XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
XML::Reader::TYPE_ELEMENT,
XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
XML::Reader::TYPE_ELEMENT,
XML::Reader::TYPE_TEXT,
XML::Reader::TYPE_END_ELEMENT,
XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
XML::Reader::TYPE_ELEMENT,
XML::Reader::TYPE_TEXT,
XML::Reader::TYPE_END_ELEMENT,
XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
XML::Reader::TYPE_END_ELEMENT,
XML::Reader::TYPE_SIGNIFICANT_WHITESPACE,
XML::Reader::TYPE_END_ELEMENT])
end
# def test_file
# reader = XML::Reader.file(SIMPLE_XML)
# verify_simple(reader)
# end
#
# def test_invalid_file
# assert_raises(RuntimeError) do
# XML::Reader.file('/does/not/exist')
# end
# end
#
# def test_string
# reader = XML::Reader.string(File.read(SIMPLE_XML))
# verify_simple(reader)
# end
#
# def test_io
# File.open(SIMPLE_XML, 'rb') do |io|
# reader = XML::Reader.io(io)
# verify_simple(reader)
# end
# end
#
# def test_string_io
# data = File.read(SIMPLE_XML)
# string_io = StringIO.new(data)
# reader = XML::Reader.io(string_io)
# verify_simple(reader)
# end
#
# def test_new_walker
# reader = XML::Reader.walker(XML::Document.file(SIMPLE_XML))
# verify_simple(reader)
# end
#
# def test_deprecated_error_handler
# called = false
# reader = XML::Reader.new('")
# assert_equal(1, parser.read)
# assert_equal('foo', parser.name)
# assert_equal('1', parser['x'])
# assert_equal('1', parser[0])
# assert_equal('2', parser['y'])
# assert_equal('2', parser[1])
# assert_equal(nil, parser['z'])
# assert_equal(nil, parser[2])
# end
def test_value
parser = XML::Reader.new("123")
assert_equal(1, parser.read)
assert_equal('foo', parser.name)
assert_equal(nil, parser.value)
3.times do |i|
assert_equal(1, parser.read)
assert_equal(XML::Reader::TYPE_ELEMENT, parser.node_type)
assert_equal('bar', parser.name)
assert_equal(1, parser.read)
assert_equal(XML::Reader::TYPE_TEXT, parser.node_type)
assert_equal((i + 1).to_s, parser.value)
assert_equal(1, parser.read)
assert_equal(XML::Reader::TYPE_END_ELEMENT, parser.node_type)
end
end
# def test_expand
# reader = XML::Reader.file(SIMPLE_XML)
# reader.read
# node = reader.expand
# doc = node.doc
# reader.close
# GC.start
#
# doc.standalone?
# end
#
# def test_mode
# reader = XML::Reader.string('')
# assert_equal(XML::Reader::MODE_INITIAL, reader.read_state)
# reader.read
# assert_equal(XML::Reader::MODE_EOF, reader.read_state)
# end
end