# -*- coding: utf-8 -*- require "helper" module Nokogiri module XML if RUBY_VERSION =~ /^1\.9/ class TestReaderEncoding < Nokogiri::TestCase def setup super @reader = Nokogiri::XML::Reader( File.read(XML_FILE), XML_FILE, 'UTF-8' ) end def test_attribute_at @reader.each do |node| next unless attribute = node.attribute_at(0) assert_equal @reader.encoding, attribute.encoding.name end end def test_attributes @reader.each do |node| node.attributes.each do |k,v| assert_equal @reader.encoding, k.encoding.name assert_equal @reader.encoding, v.encoding.name end end end def test_attribute xml = <<-eoxml snuggles! eoxml reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8') reader.each do |node| next unless attribute = node.attribute('awesome') assert_equal reader.encoding, attribute.encoding.name end end def test_xml_version @reader.each do |node| next unless version = node.xml_version assert_equal @reader.encoding, version.encoding.name end end def test_lang xml = <<-eoxml

The quick brown fox jumps over the lazy dog.

日本語が上手です

eoxml reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8') reader.each do |node| next unless lang = node.lang assert_equal reader.encoding, lang.encoding.name end end def test_value called = false @reader.each do |node| next unless value = node.value assert_equal @reader.encoding, value.encoding.name called = true end assert called end def test_prefix xml = <<-eoxml hello eoxml reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8') reader.each do |node| next unless prefix = node.prefix assert_equal reader.encoding, prefix.encoding.name end end def test_ns_uri xml = <<-eoxml hello eoxml reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8') reader.each do |node| next unless uri = node.namespace_uri assert_equal reader.encoding, uri.encoding.name end end def test_local_name xml = <<-eoxml hello eoxml reader = Nokogiri::XML::Reader(xml, nil, 'UTF-8') reader.each do |node| next unless lname = node.local_name assert_equal reader.encoding, lname.encoding.name end end def test_name @reader.each do |node| next unless name = node.name assert_equal @reader.encoding, name.encoding.name end end def test_value_lookup_segfault skip("JRuby doesn't do GC.") if Nokogiri.jruby? stress_memory_while do while node = @reader.read nodes = node.send(:attr_nodes) nodes.first.name if nodes.first end end end end end end end