# 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"
require "rast/filter"
module Rast
module Filter
load_mime_filter("html.rb")
class TextHtmlTest < Test::Unit::TestCase
def test_invoke
invoke_test_simple
invoke_test_with_meta_tag
invoke_test_with_address_tag
invoke_test_with_link_tag
invoke_test_with_encoding_convertion
end
def invoke_test_simple
filter = SpoofFilter.new("UTF-8")
brigade = Brigade.new
bucket = TransientBucket.new("
天気")
brigade.insert_tail(bucket)
bucket = TransientBucket.new("本日は晴天なり")
brigade.insert_tail(bucket)
bucket = TransientBucket.new("< > a =")
brigade.insert_tail(bucket)
brigade.insert_tail(EOSBucket.new)
filter_module = TextHtml.new
filter_module.invoke(filter, brigade, "text/html")
buf = ""
filter.passed[0].brigade.each do |bucket|
buf.concat(bucket.read)
end
assert_equal("本日は晴天なり< > a =", buf)
assert_equal("text/plain", filter.passed[0].mime_type)
assert_equal(1, filter.passed.length)
assert_equal("天気", filter.properties["title"])
assert_equal(1, filter.properties.length)
end
def invoke_test_with_meta_tag
filter = SpoofFilter.new("UTF-8")
brigade = Brigade.new
filename = File.join(MakeVariable::TOP_SRCDIR, "tests", "data",
"filter", "ja", "html-utf-8.html")
File.open(filename) do |f|
brigade.insert_tail(FileBucket.new(f))
brigade.insert_tail(EOSBucket.new)
filter_module = TextHtml.new
filter_module.invoke(filter, brigade, "text/html")
end
buf = ""
filter.passed[0].brigade.each do |bucket|
buf.concat(bucket.read)
end
assert_equal("\nこれは HTML ファイルです\n\n著者情報2\n\n", buf)
assert_equal("text/plain", filter.passed[0].mime_type)
assert_equal(1, filter.passed.length)
assert_equal("HTML テスト", filter.properties["title"])
assert_equal("著者情報1 author@example.org 著者情報2",
filter.properties["author"])
assert_equal("ユーザ定義のプロパティ値",
filter.properties["user-defined-property"])
assert_equal(3, filter.properties.length)
end
def invoke_test_with_address_tag
filter = SpoofFilter.new("UTF-8")
brigade = Brigade.new
html = ''
html.concat('天気')
html.concat('本日は晴天なり')
html.concat('著者')
html.concat('')
bucket = TransientBucket.new(html)
brigade.insert_tail(bucket)
brigade.insert_tail(EOSBucket.new)
filter_module = TextHtml.new
filter_module.invoke(filter, brigade, "text/html")
buf = ""
filter.passed[0].brigade.each do |bucket|
buf.concat(bucket.read)
end
assert_equal("本日は晴天なり著者", buf)
assert_equal("text/plain", filter.passed[0].mime_type)
assert_equal(1, filter.passed.length)
assert_equal("天気", filter.properties["title"])
assert_equal("著者", filter.properties["author"])
assert_equal(2, filter.properties.length)
end
def invoke_test_with_link_tag
filter = SpoofFilter.new("UTF-8")
brigade = Brigade.new
html = ''
html.concat('天気')
html.concat('')
html.concat('')
html.concat('')
html.concat('本日は晴天なり')
bucket = TransientBucket.new(html)
brigade.insert_tail(bucket)
brigade.insert_tail(EOSBucket.new)
filter_module = TextHtml.new
filter_module.invoke(filter, brigade, "text/html")
buf = ""
filter.passed[0].brigade.each do |bucket|
buf.concat(bucket.read)
end
assert_equal("本日は晴天なり", buf)
assert_equal("text/plain", filter.passed[0].mime_type)
assert_equal(1, filter.passed.length)
assert_equal("天気", filter.properties["title"])
assert_equal("author@somewhere.org", filter.properties["author"])
assert_equal(2, filter.properties.length)
end
def invoke_test_with_encoding_convertion
filter = SpoofFilter.new("UTF-8")
brigade = Brigade.new
filename = File.join(MakeVariable::TOP_SRCDIR, "tests", "data",
"filter", "ja", "html-euc-jp.html")
File.open(filename) do |f|
brigade.insert_tail(FileBucket.new(f))
brigade.insert_tail(EOSBucket.new)
filter_module = TextHtml.new
filter_module.invoke(filter, brigade, "text/html")
end
buf = ""
filter.passed[0].brigade.each do |bucket|
buf.concat(bucket.read)
end
assert_equal("\nこれは HTML ファイルです\n\n著者情報2\n\n", buf)
assert_equal("text/plain", filter.passed[0].mime_type)
assert_equal(1, filter.passed.length)
assert_equal("HTML テスト", filter.properties["title"])
assert_equal("著者情報1 author@example.org 著者情報2",
filter.properties["author"])
assert_equal("ユーザ定義のプロパティ値",
filter.properties["user-defined-property"])
assert_equal(3, filter.properties.length)
end
end
end
end