summaryrefslogtreecommitdiffstats
path: root/src/php-gettext/tests/LocalesTest.php
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2011-04-06 19:13:19 +0200
committerChristian Weiske <cweiske@cweiske.de>2011-04-06 19:13:19 +0200
commit7379805565815c576723b888a20af080248222da (patch)
tree498c98e8b6c43c2729349b7680c6a20efcfb98f3 /src/php-gettext/tests/LocalesTest.php
parent1e3cd8bf6ee636a5af692b57906612d6109849cb (diff)
parent12c77161aca2c7d76fa5154fa1f4e214106d834b (diff)
downloadSemanticScuttle-origin/quickform.zip
SemanticScuttle-origin/quickform.tar.gz
SemanticScuttle-origin/quickform.tar.bz2
Merge branch 'master' into quickformorigin/quickform
Conflicts: data/templates/bookmarks.tpl.php data/templates/sidebar.block.search.php data/templates/top.inc.php doc/developers/TODO src/SemanticScuttle/header.php
Diffstat (limited to 'src/php-gettext/tests/LocalesTest.php')
-rw-r--r--src/php-gettext/tests/LocalesTest.php66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/php-gettext/tests/LocalesTest.php b/src/php-gettext/tests/LocalesTest.php
new file mode 100644
index 0000000..3000286
--- /dev/null
+++ b/src/php-gettext/tests/LocalesTest.php
@@ -0,0 +1,66 @@
+<?php
+require_once('PHPUnit/Framework.php');
+require_once('gettext.inc');
+
+class LocaleTest extends PHPUnit_Framework_TestCase
+{
+ public function test_setlocale()
+ {
+ // _setlocale defaults to a locale name from environment variable LANG.
+ putenv("LANG=sr_RS");
+ $this->assertEquals('sr_RS', _setlocale(LC_MESSAGES, 0));
+
+ // For an existing locale, it never needs emulation.
+ putenv("LANG=C");
+ _setlocale(LC_MESSAGES, "");
+ $this->assertEquals(0, locale_emulation());
+
+ // If we set it to a non-existent locale, it still works, but uses
+ // emulation.
+ _setlocale(LC_MESSAGES, "xxx_XXX");
+ $this->assertEquals('xxx_XXX', _setlocale(LC_MESSAGES, 0));
+ $this->assertEquals(1, locale_emulation());
+ }
+
+ public function test_get_list_of_locales()
+ {
+ // For a locale containing country code, we prefer
+ // full locale name, but if that's not found, fall back
+ // to the language only locale name.
+ $this->assertEquals(array("sr_RS", "sr"),
+ get_list_of_locales("sr_RS"));
+
+ // If language code is used, it's the only thing returned.
+ $this->assertEquals(array("sr"),
+ get_list_of_locales("sr"));
+
+ // There is support for language and charset only.
+ $this->assertEquals(array("sr.UTF-8", "sr"),
+ get_list_of_locales("sr.UTF-8"));
+
+ // It can also split out character set from the full locale name.
+ $this->assertEquals(array("sr_RS.UTF-8", "sr_RS", "sr"),
+ get_list_of_locales("sr_RS.UTF-8"));
+
+ // There is support for @modifier in locale names as well.
+ $this->assertEquals(array("sr_RS.UTF-8@latin", "sr_RS@latin", "sr@latin",
+ "sr_RS.UTF-8", "sr_RS", "sr"),
+ get_list_of_locales("sr_RS.UTF-8@latin"));
+
+ // We can pass in only language and modifier.
+ $this->assertEquals(array("sr@latin", "sr"),
+ get_list_of_locales("sr@latin"));
+
+
+ // If locale name is not following the regular POSIX pattern,
+ // it's used verbatim.
+ $this->assertEquals(array("something"),
+ get_list_of_locales("something"));
+
+ // Passing in an empty string returns an empty array.
+ $this->assertEquals(array(),
+ get_list_of_locales(""));
+ }
+}
+
+?>