test/test_i18n.rb in review-2.0.0.beta1 vs test/test_i18n.rb in review-2.0.0

- old
+ new

@@ -1,98 +1,156 @@ # -*- coding: utf-8 -*- require 'test_helper' -require 'review/i18n' - -require 'review/compiler' -require 'review/book' -require 'review/htmlbuilder' +require 'review' require 'tmpdir' class I18nTest < Test::Unit::TestCase include ReVIEW - if RUBY_VERSION !~ /^1.8/ ## to avoid Travis error :-( - def test_load_locale_yml - Dir.mktmpdir do |dir| - Dir.chdir(dir) do - file = File.join(dir, "locale.yml") - File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} - I18n.setup - assert_equal "bar", I18n.t("foo") - end + def test_load_locale_yml + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "locale.yml") + File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} + I18n.setup + assert_equal "bar", I18n.t("foo") end end + end - def test_load_locale_yaml - Dir.mktmpdir do |dir| - Dir.chdir(dir) do - file = File.join(dir, "locale.yaml") - File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} + def test_load_locale_yaml + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "locale.yaml") + File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} + assert_raise ReVIEW::ConfigError do I18n.setup - assert_equal "bar", I18n.t("foo") end end end + end - def test_load_foo_yaml - Dir.mktmpdir do |dir| - Dir.chdir(dir) do - file = File.join(dir, "foo.yml") - File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} - I18n.setup("ja","foo.yml") - assert_equal "bar", I18n.t("foo") - end + def test_load_foo_yaml + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "foo.yml") + File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} + I18n.setup("ja","foo.yml") + assert_equal "bar", I18n.t("foo") end end + end - def test_update_foo_yaml - Dir.mktmpdir do |dir| - Dir.chdir(dir) do - file = File.join(dir, "foo.yml") - File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} - i18n = ReVIEW::I18n.new("ja") - i18n.update_localefile(File.join(Dir.pwd, "foo.yml")) - assert_equal "bar", i18n.t("foo") - end + def test_update_foo_yaml + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "foo.yml") + File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} + i18n = ReVIEW::I18n.new("ja") + i18n.update_localefile(File.join(Dir.pwd, "foo.yml")) + assert_equal "bar", i18n.t("foo") end end + end - def test_update_foo_yaml_i18nclass - Dir.mktmpdir do |dir| - Dir.chdir(dir) do - file = File.join(dir, "foo.yml") - File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} - I18n.setup("ja", "foo.yml") - assert_equal "bar", I18n.t("foo") - end + def test_update_foo_yaml_i18nclass + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "foo.yml") + File.open(file, "w"){|f| f.write("locale: ja\nfoo: \"bar\"\n")} + I18n.setup("ja", "foo.yml") + assert_equal "bar", I18n.t("foo") end end + end - def test_load_locale_yml_i18n - Dir.mktmpdir do |dir| - Dir.chdir(dir) do - file = File.join(dir, "locale.yml") - File.open(file, "w"){|f| f.write("ja:\n foo: \"bar\"\nen:\n foo: \"buz\"\n")} + def test_load_locale_yml_i18n + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "locale.yml") + File.open(file, "w"){|f| f.write("ja:\n foo: \"bar\"\nen:\n foo: \"buz\"\n")} + I18n.setup + assert_equal "bar", I18n.t("foo") + assert_equal "図", I18n.t("image") + I18n.setup("en") + assert_equal "buz", I18n.t("foo") + assert_equal "Figure ", I18n.t("image") + end + end + end + + def test_load_locale_invalid_yml + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "locale.yml") + File.open(file, "w"){|f| f.write("local: ja\nfoo: \"bar\"\n")} + assert_raises(ReVIEW::KeyError) do I18n.setup - assert_equal "bar", I18n.t("foo") - assert_equal "図", I18n.t("image") - I18n.setup("en") - assert_equal "buz", I18n.t("foo") - assert_equal "Figure ", I18n.t("image") end end end + end - def test_load_locale_invalid_yml - Dir.mktmpdir do |dir| - Dir.chdir(dir) do - file = File.join(dir, "locale.yml") - File.open(file, "w"){|f| f.write("local: ja\nfoo: \"bar\"\n")} - assert_raises(ReVIEW::KeyError) do - I18n.setup - end - end + def test_custom_format + Dir.mktmpdir do |dir| + Dir.chdir(dir) do + file = File.join(dir, "locale.yml") + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pa章")} + I18n.setup("ja") + assert_equal "第a章", I18n.t("chapter", 1) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pA章")} + I18n.setup("ja") + assert_equal "第B章", I18n.t("chapter", 2) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pAW章")} + I18n.setup("ja") + assert_equal "第B章", I18n.t("chapter", 2) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%paW章")} + I18n.setup("ja") + assert_equal "第b章", I18n.t("chapter", 2) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pR章")} + I18n.setup("ja") + assert_equal "第I章", I18n.t("chapter", 1) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pr章")} + I18n.setup("ja") + assert_equal "第ii章", I18n.t("chapter", 2) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pRW章")} + I18n.setup("ja") + assert_equal "第Ⅻ章", I18n.t("chapter", 12) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pJ章")} + I18n.setup("ja") + assert_equal "第二十七章", I18n.t("chapter", 27) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pdW章")} + I18n.setup("ja") + assert_equal "第1章", I18n.t("chapter", 1) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pdW章")} + I18n.setup("ja") + assert_equal "第27章", I18n.t("chapter", 27) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pDW章")} + I18n.setup("ja") + assert_equal "第1章", I18n.t("chapter", 1) + + File.open(file, "w"){|f| f.write("locale: ja\nchapter: 第%pDW章")} + I18n.setup("ja") + assert_equal "第27章", I18n.t("chapter", 27) + + File.open(file, "w"){|f| f.write("locale: ja\npart: Part %pRW")} + I18n.setup("ja") + assert_equal "Part 0", I18n.t("part", 0) + + File.open(file, "w"){|f| f.write("locale: ja\npart: 第%pJ部")} + I18n.setup("ja") + assert_equal "第一部", I18n.t("part", 1) end end end def test_ja @@ -134,17 +192,15 @@ end def _setup_htmlbuilder I18n.setup "en" @builder = HTMLBuilder.new() - @config = { - "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder - "inencoding" => "UTF-8", - "outencoding" => "UTF-8", - "stylesheet" => nil, # for HTMLBuilder + @config = ReVIEW::Configure[ + "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder + "stylesheet" => nil, # for HTMLBuilder "ext" => ".re" - } + ] @book = Book::Base.new(".") @book.config = @config @compiler = ReVIEW::Compiler.new(@builder) @chapter = Book::Chapter.new(@book, 1, '-', nil, StringIO.new) location = Location.new(nil, nil) @@ -162,9 +218,17 @@ i18n = ReVIEW::I18n.new("ja") hash = {"foo"=>"bar"} i18n.update(hash, "abc") i18n.locale = "abc" assert_equal "bar", i18n.t("foo") + end + + def test_ja_appendix_alphabet + i18n = I18n.new("ja") + i18n.update({"appendix" => "付録%pA"}, "ja") + assert_equal "付録A", i18n.t("appendix", 1) + assert_equal "付録B", i18n.t("appendix", 2) + assert_equal "付録C", i18n.t("appendix", 3) end def test_i18n_error I18n.setup assert_raises NotImplementedError do