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 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