File: tc_encoding_sax.rb

package info (click to toggle)
ruby-libxml 2.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,812 kB
  • sloc: xml: 9,628; ruby: 7,119; ansic: 6,665; makefile: 2
file content (116 lines) | stat: -rw-r--r-- 3,154 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# encoding: UTF-8
require './test_helper'
require 'test/unit'
require 'minitest/unit'

class SaxEncodingCallbacks
  attr_reader :encoding
  #include Test::Unit::Assertions
  include MiniTest::Assertions

  def initialize
    @encoding = Encoding::UTF_8
  end

  # Called for a CDATA block event.
  def on_cdata_block(cdata)
    assert_equal(self.encoding, cdata.encoding)
  end

  # Called for a characters event.
  def on_characters(chars)
    assert_equal(self.encoding, chars.encoding)
  end

  # Called for a comment event.
  def on_comment(msg)
    assert_equal(self.encoding, msg.encoding)
  end

  # Called for a end document event.
  def on_end_document
  end

  # Called for a end element event.
  def on_end_element_ns(name, prefix, uri)
    assert_equal(self.encoding, name.encoding)
    assert_equal(self.encoding, prefix.encoding) if prefix
    assert_equal(self.encoding, uri.encoding) if uri
  end

  # Called for parser errors.
  def on_error(msg)
    assert_equal(self.encoding, msg.encoding)
  end

  # Called for an external subset event.
  def on_external_subset(name, external_id, system_id)
    assert_equal(self.encoding, name.encoding)
    assert_equal(self.encoding, external_id.encoding)
    assert_equal(self.encoding, system_id.encoding)
  end

  # Called for an external subset notification event.
  def on_has_external_subset
  end

  # Called for an internal subset notification event.
  def on_has_internal_subset
  end

  # Called for an internal subset event.
  def on_internal_subset(name, external_id, system_id)
    assert_equal(self.encoding, name.encoding)
    assert_equal(self.encoding, external_id.encoding)
    assert_equal(self.encoding, system_id.encoding)
  end

  # Called for 'is standalone' event.
  def on_is_standalone
  end

  # Called for an processing instruction event.
  def on_processing_instruction(target, data)
    assert_equal(self.encoding, target.encoding)
    assert_equal(self.encoding, data.encoding)
  end

  # Called for a reference event.
  def on_reference(name)
    assert_equal(self.encoding, name.encoding)
  end

  # Called for a start document event.
  def on_start_document
  end

  # Called for a start element event.
  def on_start_element_ns(name, attributes, prefix, uri, namespaces)
    assert_equal(self.encoding, name.encoding) if name
    assert_equal(self.encoding, prefix.encoding) if prefix
    assert_equal(self.encoding, uri.encoding) if uri
  end
end

class TestEncodingSax < Test::Unit::TestCase
  def setup
    Encoding.default_internal = nil
  end

  def file_for_encoding(encoding)
    file_name = "model/bands.#{encoding.name.downcase}.xml"
    File.join(File.dirname(__FILE__), file_name)
  end

  def test_encoding_iso_8859_1
    parser = XML::SaxParser.file(file_for_encoding(Encoding::ISO_8859_1))
    parser.callbacks = SaxEncodingCallbacks.new
    parser.parse
  end

  def test_encoding_utf8
    parser = XML::SaxParser.file(file_for_encoding(Encoding::UTF_8))
    parser.callbacks = SaxEncodingCallbacks.new
    parser.parse
  end
end