summaryrefslogtreecommitdiff
path: root/test/rexml/test_encoding_2.rb
blob: 5dbe46801b634ba52d01de437de2b70e752d91fe (plain)
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
require "test/unit/testcase"

require "rexml/document"
require "rexml/parseexception"

=begin
# THIS DOESN'T WORK
begin
	require 'iconv'

	UnixCharsets = open("| iconv -l") do |f|
		 f.readlines[5..-1].collect { |x| x.sub(/\/\/\n/,"").delete(' ') }
	end

	DATA = <<END
<?xml version="1.0" encoding='ENC'?>
<Ruby xmlns="http://www.ruby-lang.org/ruby/1.8">
</Ruby>
END


	class IConvTester < Test::Unit::TestCase

		def test_iconv
			broken_encodings = 0
			UnixCharsets.each do |enc|
				begin
					puts "Testing encoding #{enc}"
					data = DATA.dup
					data[/ENC/] = enc
					REXML::Document.new(data).root
				rescue REXML::ParseException => e
					broken_encodings += 1
					fail "Encoding #{enc} does not work with REXML: #{e.message}"
				rescue Errno::EINVAL => e
					broken_encodings += 1
					fail "Encoding #{enc} does not work with REXML: #{e.message}"
				rescue ArgumentError => e
					broken_encodings += 1
					fail "Encoding #{enc} does not work with REXML: #{e.message}"
				rescue
					broken_encodings += 1
					fail "Encoding #{enc} does not work with REXML: #{$!.message}"
				end
			end

			if broken_encodings > 0 
				fail "There were #{broken_encodings} encoding failures out of #{UnixCharsets.size} plus some REXML internal encodings"
			else
				fail "There were no encoding failures"
			end

			puts "Full list of registered encodings in REXML:"
			puts REXML::Encoding::ENCODING_CLAIMS.values.join(', ')
		end
	end
rescue LoadError
end
=end