# -*- coding: utf-8 -*-
require "helper"
module Nokogiri
module XML
module SAX
class TestParserText < Nokogiri::SAX::TestCase
def setup
super
@doc = DocWithOrderedItems.new
@parser = XML::SAX::Parser.new @doc
end
def test_texts_order
xml = <<-eoxml
text 0
text 1
text 2
text 3
text 4
eoxml
@parser.parse xml
items = @doc.items.get_root_content "root"
items = items.select_methods [
:start_element, :end_element,
:characters, :comment, :cdata_block
]
items.strip_text! [:characters, :comment, :cdata_block]
assert_equal [
[:characters, 'text 0'],
[:start_element, 'p', []],
[:characters, 'text 1'],
[:start_element, 'span', []],
[:characters, 'text 2'],
[:end_element, 'span'],
[:characters, 'text 3'],
[:end_element, 'p'],
[:characters, 'text 4'],
[:comment, 'text 5'],
[:characters, ''],
[:start_element, 'p', []],
[:characters, ''],
[:comment, 'text 6'],
[:characters, ''],
[:start_element, 'span', []],
[:comment, 'text 7'],
[:end_element, 'span'],
[:characters, ''],
[:comment, 'text 8'],
[:characters, ''],
[:end_element, 'p'],
[:characters, ''],
[:comment, 'text 9'],
[:characters, ''],
[:cdata_block, 'text 10'],
[:characters, ''],
[:start_element, 'p', []],
[:characters, ''],
[:cdata_block, 'text 11'],
[:characters, ''],
[:start_element, 'span', []],
[:cdata_block, 'text 12'],
[:end_element, 'span'],
[:characters, ''],
[:cdata_block, 'text 13'],
[:characters, ''],
[:end_element, 'p'],
[:characters, '']
], items
nil
end
def text_whitespace
xml = <<-eoxml
eoxml
@parser.parse xml
items = @doc.items.get_root_content "root"
items = items.select_methods [
:start_element, :end_element,
:characters, :comment, :cdata_block
]
items.strip_text! [:characters, :comment, :cdata_block]
assert_equal [
[:characters, ''],
[:start_element, 'p', []],
[:characters, ''],
[:start_element, 'span', []],
[:end_element, 'span'],
[:characters, ''],
[:start_element, 'span', []],
[:characters, ''],
[:end_element, 'span'],
[:characters, ''],
[:start_element, 'span', []],
[:characters, ''],
[:end_element, 'span'],
[:characters, ''],
[:end_element, 'p'],
[:characters, ''],
[:start_element, 'p', []],
[:characters, ''],
[:comment, ''],
[:characters, ''],
[:comment, ''],
[:characters, ''],
[:comment, ''],
[:characters, ''],
[:end_element, 'p'],
[:characters, ''],
[:start_element, 'p', []],
[:characters, ''],
[:cdata_block, ''],
[:characters, ''],
[:cdata_block, ''],
[:characters, ''],
[:cdata_block, ''],
[:characters, ''],
[:end_element, 'p'],
[:characters, '']
], items
nil
end
end
end
end
end