# Copyright (C) 2005 Network Applied Communication Laboratory Co., Ltd. # # This file is part of Rast. # See the file COPYING for redistribution information. # require "test/unit" require "nkf" require "rast" module Rast class EncodingConverterTest < Test::Unit::TestCase def test_s_guess text = "本日は晴天なり" result = EncodingConverter.guess(text, Rast::JAPANESE_ENCODINGS) assert_equal("UTF-8", result) result = EncodingConverter.guess(NKF.nkf("-Ws", text), Rast::JAPANESE_ENCODINGS) assert_equal("Shift_JIS", result) result = EncodingConverter.guess(NKF.nkf("-We", text), Rast::JAPANESE_ENCODINGS) assert_equal("EUC-JP", result) result = EncodingConverter.guess(NKF.nkf("-Wj", text), Rast::JAPANESE_ENCODINGS) assert_equal("ISO-2022-JP", result) result = EncodingConverter.guess(text[0 .. -2], Rast::JAPANESE_ENCODINGS) assert_equal("UTF-8", result) result = EncodingConverter.guess(text, []) assert_equal(nil, result) result = EncodingConverter.guess(text, ["EUC-JP"]) assert_equal(nil, result) assert_raise(AprError) do EncodingConverter.guess(text, ["not-exist-encoding"]) end end def test_convert convert_test_shift_jis_to_utf_8 convert_test_utf_8_to_euc_jp end def convert_test_shift_jis_to_utf_8 from = "Shift_JIS" to = ["UTF-8"] converter = EncodingConverter.new(from, to) text = "本日は晴天なり" shift_jis_text = NKF.nkf("-Ws", text) result = converter.convert(shift_jis_text) assert_equal(text, result) result_1 = converter.convert(shift_jis_text[0, 3]) result_2 = converter.convert(shift_jis_text[3 .. -1]) assert_equal(text, result_1 + result_2) result = converter.convert("") assert_equal("", result) result_1 = converter.convert(shift_jis_text[0, 1]) assert_equal("", result_1) result_2 = converter.convert(shift_jis_text[1 .. -1]) assert_equal(text, result_2) end def convert_test_utf_8_to_euc_jp from = "UTF-8" to = ["EUC-JP"] converter = EncodingConverter.new(from, to) text = "本日は晴天なり" euc_jp_text = NKF.nkf("-We", text) result = converter.convert(text) assert_equal(euc_jp_text, result) result_1 = converter.convert(text[0, 4]) result_2 = converter.convert(text[4 .. -1]) assert_equal(euc_jp_text, result_1 + result_2) result = converter.convert("") assert_equal("", result) result_1 = converter.convert(text[0, 1]) assert_equal("", result_1) result_2 = converter.convert(text[1 .. -1]) assert_equal(euc_jp_text, result_2) end end end