From 36a2f1f3c085dd81171cf7d8220770d4ff921ab3 Mon Sep 17 00:00:00 2001 From: hukl Date: Sat, 7 Feb 2009 15:50:40 +0100 Subject: added globalize2 plugin as well as some modifications which use the new translation facilities. backend mostly. --- .../globalize2/test/locale/fallbacks_test.rb | 154 +++++++++++++++++++++ .../globalize2/test/locale/language_tag_test.rb | 130 +++++++++++++++++ 2 files changed, 284 insertions(+) create mode 100644 vendor/plugins/globalize2/test/locale/fallbacks_test.rb create mode 100644 vendor/plugins/globalize2/test/locale/language_tag_test.rb (limited to 'vendor/plugins/globalize2/test/locale') diff --git a/vendor/plugins/globalize2/test/locale/fallbacks_test.rb b/vendor/plugins/globalize2/test/locale/fallbacks_test.rb new file mode 100644 index 00000000..304d3da0 --- /dev/null +++ b/vendor/plugins/globalize2/test/locale/fallbacks_test.rb @@ -0,0 +1,154 @@ +require File.join( File.dirname(__FILE__), '..', 'test_helper' ) +require 'globalize/locale/fallbacks' + +include Globalize::Locale +I18n.default_locale = :'en-US' # This has to be set explicitly, no longer default for I18n + +class FallbacksTest < ActiveSupport::TestCase + def setup + I18n.fallbacks = Fallbacks.new + end + + def teardown + I18n.default_locale = :'en-US' + end + + test "#[] caches computed results" do + I18n.fallbacks['en'] + assert_equal( { :en => [:en, :"en-US", :root] }, I18n.fallbacks ) + end + + test "#defaults always reflect the I18n.default_locale if no default has been set manually" do + I18n.default_locale = :'en-US' + assert_equal( [:'en-US', :en, :root], I18n.fallbacks.defaults ) + end + + test "#defaults always reflect a manually passed default locale if any" do + I18n.fallbacks = Fallbacks.new(:'fi-FI') + assert_equal( [:'fi-FI', :fi, :root], I18n.fallbacks.defaults ) + I18n.default_locale = :'de-DE' + assert_equal( [:'fi-FI', :fi, :root], I18n.fallbacks.defaults ) + end + + test "#defaults allows to set multiple defaults" do + I18n.fallbacks = Fallbacks.new(:'fi-FI', :'se-FI') + assert_equal( [:'fi-FI', :fi, :'se-FI', :se, :root], I18n.fallbacks.defaults ) + end +end + +class NoMappingFallbacksTest < ActiveSupport::TestCase + def setup + @fallbacks = Fallbacks.new(:'en-US') + end + + test "returns [:es, :en-US, :root] for :es" do + assert_equal [:es, :"en-US", :en, :root], @fallbacks[:es] + end + + test "returns [:es-ES, :es, :en-US, :root] for :es-ES" do + assert_equal [:"es-ES", :es, :"en-US", :en, :root], @fallbacks[:"es-ES"] + end + + test "returns [:es-MX, :es, :en-US, :root] for :es-MX" do + assert_equal [:"es-MX", :es, :"en-US", :en, :root], @fallbacks[:"es-MX"] + end + + test "returns [:es-Latn-ES, :es-Latn, :es, :en-US, :root] for :es-Latn-ES" do + assert_equal [:"es-Latn-ES", :"es-Latn", :es, :"en-US", :en, :root], @fallbacks[:'es-Latn-ES'] + end + + test "returns [:en, :en-US, :root] for :en" do + assert_equal [:en, :"en-US", :root], @fallbacks[:en] + end + + test "returns [:en-US, :en, :root] for :en-US (special case: locale == default)" do + assert_equal [:"en-US", :en, :root], @fallbacks[:"en-US"] + end +end + +class CaMappingFallbacksTest < ActiveSupport::TestCase + # Most people who speak Catalan also live in Spain, so test is safe to assume + # that they also speak Spanish as spoken in Spain. + def setup + @fallbacks = Fallbacks.new(:'en-US') + @fallbacks.map :ca => :"es-ES" + end + + test "returns [:ca, :es-ES, :es, :en-US, :root] for :ca" do + assert_equal [:ca, :"es-ES", :es, :"en-US", :en, :root], @fallbacks[:ca] + end + + test "returns [:ca-ES, :ca, :es-ES, :es, :en-US, :root] for :ca-ES" do + assert_equal [:"ca-ES", :ca, :"es-ES", :es, :"en-US", :en, :root], @fallbacks[:"ca-ES"] + end +end + +class ArMappingFallbacksTest < ActiveSupport::TestCase + # People who speak Arabic as spoken in Palestine often times also speak + # Hebrew as spoken in Israel. However test is in no way safe to assume that + # everybody who speaks Arabic also speaks Hebrew. + def setup + @fallbacks = Fallbacks.new(:'en-US') + @fallbacks.map :"ar-PS" => :"he-IL" + end + + test "returns [:ar, :en-US, :root] for :ar" do + assert_equal [:ar, :"en-US", :en, :root], @fallbacks[:ar] + end + + test "returns [:ar-EG, :ar, :en-US, :root] for :ar-EG" do + assert_equal [:"ar-EG", :ar, :"en-US", :en, :root], @fallbacks[:"ar-EG"] + end + + test "returns [:ar-PS, :ar, :he-IL, :he, :en-US, :root] for :ar-PS" do + assert_equal [:"ar-PS", :ar, :"he-IL", :he, :"en-US", :en, :root], @fallbacks[:"ar-PS"] + end +end + +class SmsMappingFallbacksTest < ActiveSupport::TestCase + # Sami people live in several scandinavian countries. In Finnland many people + # know Swedish and Finnish. Thus, test can be assumed that Sami living in + # Finnland also speak Swedish and Finnish. + def setup + @fallbacks = Fallbacks.new(:'en-US') + @fallbacks.map :sms => [:"se-FI", :"fi-FI"] + end + + test "returns [:sms-FI, :sms, :se-FI, :se, :fi-FI, :fi, :en-US, :root] for :sms-FI" do + assert_equal [:"sms-FI", :sms, :"se-FI", :se, :"fi-FI", :fi, :"en-US", :en, :root], @fallbacks[:"sms-FI"] + end +end + +class DeAtMappingFallbacksTest < ActiveSupport::TestCase + def setup + @fallbacks = Fallbacks.new(:'en-US') + @fallbacks.map :"de-AT" => :"de-DE" + end + + test "returns [:de, :en-US, :root] for de" do + assert_equal [:de, :"en-US", :en, :root], @fallbacks[:"de"] + end + + test "returns [:de-DE, :de, :en-US, :root] for de-DE" do + assert_equal [:"de-DE", :de, :"en-US", :en, :root], @fallbacks[:"de-DE"] + end + + test "returns [:de-AT, :de, :de-DE, :en-US, :root] for de-AT" do + assert_equal [:"de-AT", :de, :"de-DE", :"en-US", :en, :root], @fallbacks[:"de-AT"] + end +end + +class DeMappingFallbacksTest < ActiveSupport::TestCase + def setup + @fallbacks = Fallbacks.new(:'en-US') + @fallbacks.map :de => :en, :he => :en + end + + test "returns [:de, :en, :root] for :de" do + assert_equal [:de, :en, :"en-US", :root], @fallbacks[:de] + end + + test "returns [:he, :en, :root] for :de" do + assert_equal [:he, :en, :"en-US", :root], @fallbacks[:he] + end +end diff --git a/vendor/plugins/globalize2/test/locale/language_tag_test.rb b/vendor/plugins/globalize2/test/locale/language_tag_test.rb new file mode 100644 index 00000000..2448af12 --- /dev/null +++ b/vendor/plugins/globalize2/test/locale/language_tag_test.rb @@ -0,0 +1,130 @@ +require File.join( File.dirname(__FILE__), '..', 'test_helper' ) +require 'globalize/locale/language_tag' + +include Globalize::Locale + +class LanguageTagTest < ActiveSupport::TestCase + test "given a valid tag 'de' returns an LanguageTag from #tag" do + assert_instance_of LanguageTag, LanguageTag.tag('de') + end + + test "given a valid tag 'de' returns an array of subtags" do + assert_equal ['de', nil, nil, nil, nil, nil, nil], LanguageTag::SimpleParser.match('de') + end + + test "given a valid tag 'de-DE' returns an array of subtags" do + assert_equal ['de', nil, 'DE', nil, nil, nil, nil], LanguageTag::SimpleParser.match('de-DE') + end + + test "given a valid lowercase tag 'de-latn-de-variant-x-phonebk' returns an array of subtags" do + assert_equal ['de', 'latn', 'de', 'variant', nil, 'x-phonebk', nil], + LanguageTag::SimpleParser.match('de-latn-de-variant-x-phonebk') + end + + test "given a valid uppercase tag 'DE-LATN-DE-VARIANT-X-PHONEBK' returns an array of subtags" do + assert_equal ['DE', 'LATN', 'DE', 'VARIANT', nil, 'X-PHONEBK', nil], + LanguageTag::SimpleParser.match('DE-LATN-DE-VARIANT-X-PHONEBK') + end + + test "given an invalid tag 'a-DE' test returns false" do + assert !LanguageTag::SimpleParser.match('a-DE') + end + + test "given an invalid tag 'de-419-DE' test returns false" do + assert !LanguageTag::SimpleParser.match('de-419-DE') + end +end + +class DeLatnLanguageTagTest < ActiveSupport::TestCase + def setup + subtags = %w(de Latn DE variant a-ext x-phonebk i-klingon) + @tag = LanguageTag.new *subtags + end + + test "returns 'de' as the language subtag in lowercase" do + assert_equal 'de', @tag.language + end + + test "returns 'Latn' as the script subtag in titlecase" do + assert_equal 'Latn', @tag.script + end + + test "returns 'DE' as the region subtag in uppercase" do + assert_equal 'DE', @tag.region + end + + test "returns 'variant' as the variant subtag in lowercase" do + assert_equal 'variant', @tag.variant + end + + test "returns 'a-ext' as the extension subtag" do + assert_equal 'a-ext', @tag.extension + end + + test "returns 'x-phonebk' as the privateuse subtag" do + assert_equal 'x-phonebk', @tag.privateuse + end + + test "returns 'i-klingon' as the grandfathered subtag" do + assert_equal 'i-klingon', @tag.grandfathered + end + + test "returns a formatted tag string from #to_s" do + assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon', @tag.to_s + end + + test "returns an array containing the formatted subtags from #to_a" do + assert_equal %w(de Latn DE variant a-ext x-phonebk i-klingon), @tag.to_a + end +end + +class InheritanceLanguageTagTest < ActiveSupport::TestCase + test "returns 'de-Latn-DE-variant-a-ext-x-phonebk' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do + tag = LanguageTag.new *%w(de Latn DE variant a-ext x-phonebk i-klingon) + assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk', tag.parent.to_s + end + + test "returns 'de-Latn-DE-variant-a-ext' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk'" do + tag = LanguageTag.new *%w(de Latn DE variant a-ext x-phonebk) + assert_equal 'de-Latn-DE-variant-a-ext', tag.parent.to_s + end + + test "returns 'de-Latn-DE-variant' as the parent of 'de-Latn-DE-variant-a-ext'" do + tag = LanguageTag.new *%w(de Latn DE variant a-ext) + assert_equal 'de-Latn-DE-variant', tag.parent.to_s + end + + test "returns 'de-Latn-DE' as the parent of 'de-Latn-DE-variant'" do + tag = LanguageTag.new *%w(de Latn DE variant) + assert_equal 'de-Latn-DE', tag.parent.to_s + end + + test "returns 'de-Latn' as the parent of 'de-Latn-DE'" do + tag = LanguageTag.new *%w(de Latn DE) + assert_equal 'de-Latn', tag.parent.to_s + end + + test "returns 'de' as the parent of 'de-Latn'" do + tag = LanguageTag.new *%w(de Latn) + assert_equal 'de', tag.parent.to_s + end + + # TODO RFC4647 says: "If no language tag matches the request, the "default" value is returned." + # where should we set the default language? + # test "returns '' as the parent of 'de'" do + # tag = LanguageTag.new *%w(de) + # assert_equal '', tag.parent.to_s + # end + + test "returns an array of 5 parents for 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do + parents = %w(de-Latn-DE-variant-a-ext-x-phonebk-i-klingon + de-Latn-DE-variant-a-ext-x-phonebk + de-Latn-DE-variant-a-ext + de-Latn-DE-variant + de-Latn-DE + de-Latn + de) + tag = LanguageTag.new *%w(de Latn DE variant a-ext x-phonebk i-klingon) + assert_equal parents, tag.parents.map{|tag| tag.to_s} + end +end -- cgit v1.3