summaryrefslogtreecommitdiff
path: root/test/rdoc/test_rdoc_i18n_locale.rb
blob: 69de88a9f2289fa27d6deeb172ee462da910add5 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
require 'rdoc/test_case'

class TestRDocI18nLocale < RDoc::TestCase

  def setup
    super
    @locale = locale('fr')

    @tmpdir = File.join Dir.tmpdir, "test_rdoc_i18n_locale_#{$$}"
    FileUtils.mkdir_p @tmpdir

    @locale_dir = @tmpdir
  end

  def teardown
    FileUtils.rm_rf @tmpdir
    super
  end

  def test_name
    assert_equal 'fr', locale('fr').name
  end

  def test_load_nonexistent_po
    File.stub(:exist?, false) do
      refute @locale.load('nonexsitent-locale')
    end
  end

  def test_load_existent_po
    begin
      require 'gettext/po_parser'
    rescue LoadError
      skip 'gettext gem is not found'
    end

    fr_locale_dir = File.join @locale_dir, 'fr'
    FileUtils.mkdir_p fr_locale_dir
    File.open File.join(fr_locale_dir, 'rdoc.po'), 'w' do |po|
      po.puts <<-PO
msgid ""
msgstr ""
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "Hello"
msgstr "Bonjour"
      PO
    end

    assert @locale.load(@locale_dir)
    assert_equal 'Bonjour', @locale.translate('Hello')
  end

  def test_translate_existent_message
    messages = @locale.instance_variable_get(:@messages)
    messages['Hello'] = 'Bonjour'
    assert_equal 'Bonjour', @locale.translate('Hello')
  end

  def test_translate_nonexistent_message
    assert_equal 'Hello', @locale.translate('Hello')
  end

  private

  def locale(name)
    RDoc::I18n::Locale.new(name)
  end

end