From 7a52c1d823c408d1e4af0e042b0e61e1cee3152b Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Tue, 23 Jun 2020 12:06:25 +0000 Subject: [PATCH] [TESTS][I18N] Added test for I18n::_m and I18nHelper::formatICU --- tests/Core/I18n/I18nTest.php | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tests/Core/I18n/I18nTest.php diff --git a/tests/Core/I18n/I18nTest.php b/tests/Core/I18n/I18nTest.php new file mode 100644 index 0000000000..0d487d6588 --- /dev/null +++ b/tests/Core/I18n/I18nTest.php @@ -0,0 +1,93 @@ +. +// }}} + +namespace App\Tests\Core\I18n; + +// require_once '/home/hugo/software/social/config/bootstrap.php'; +// require_once '/home/hugo/software/social/src/Core/I18n/I18n.php'; + +use function App\Core\I18n\_m; +use App\Core\I18n\I18n; +use App\Core\I18n\I18nHelper; +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Contracts\Translation\TranslatorInterface; + +// use Jchook\AssertThrows\AssertThrows; + +class I18nTest extends WebTestCase +{ + // use AssertThrows; + + public function testM() + { + static::bootKernel(); + $translator = static::$container->get(TranslatorInterface::class); + I18nHelper::setTranslator($translator); + + static::assertSame('test string', _m('test string')); + + $apples = [1 => '1 apple', '# apples']; + static::assertSame('-42 apples', _m($apples, ['count' => -42])); + static::assertSame('0 apples', _m($apples, ['count' => 0])); + static::assertSame('1 apple', _m($apples, ['count' => 1])); + static::assertSame('2 apples', _m($apples, ['count' => 2])); + static::assertSame('42 apples', _m($apples, ['count' => 42])); + + $apples = [0 => 'no apples', 1 => '1 apple', '# apples']; + static::assertSame('no apples', _m($apples, ['count' => 0])); + static::assertSame('1 apple', _m($apples, ['count' => 1])); + static::assertSame('2 apples', _m($apples, ['count' => 2])); + static::assertSame('42 apples', _m($apples, ['count' => 42])); + + $pronouns = ['she' => 'her apple', 'he' => 'his apple', 'they' => 'their apple']; + static::assertSame('her apple', _m($pronouns, ['pronoun' => 'she'])); + static::assertSame('his apple', _m($pronouns, ['pronoun' => 'he'])); + static::assertSame('their apple', _m($pronouns, ['pronoun' => 'they'])); + // $this->assertThrows(\Exception::class, + // function () use ($pronouns) { _m($pronouns, ['pronoun' => 'unknown']); }); + + $pronouns = ['she' => 'her apple', 'he' => 'his apple', 'they' => 'their apple', 'someone\'s apple']; + static::assertSame('someone\'s apple', _m($pronouns, ['pronoun' => 'unknown'])); + + $complex = [ + 'she' => [1 => 'her apple', 'her # apples'], + 'he' => [1 => 'his apple', 'his # apples'], + ]; + + static::assertSame('her apple', _m($complex, ['pronoun' => 'she', 'count' => 1])); + static::assertSame('his apple', _m($complex, ['pronoun' => 'he', 'count' => 1])); + static::assertSame('her 2 apples', _m($complex, ['pronoun' => 'she', 'count' => 2])); + static::assertSame('his 2 apples', _m($complex, ['pronoun' => 'he', 'count' => 2])); + static::assertSame('her 42 apples', _m($complex, ['pronoun' => 'she', 'count' => 42])); + + $complex = [ + 'she' => [1 => 'her apple', 'her # apples'], + 'he' => [1 => 'his apple', 'his # apples'], + 'their' => [1 => 'their apple', 'their # apples'], + ]; + + static::assertSame('her apple', _m($complex, ['pronoun' => 'she', 'count' => 1])); + static::assertSame('his apple', _m($complex, ['pronoun' => 'he', 'count' => 1])); + static::assertSame('her 2 apples', _m($complex, ['pronoun' => 'she', 'count' => 2])); + static::assertSame('his 2 apples', _m($complex, ['pronoun' => 'he', 'count' => 2])); + static::assertSame('her 42 apples', _m($complex, ['pronoun' => 'she', 'count' => 42])); + static::assertSame('their apple', _m($complex, ['pronoun' => 'they', 'count' => 1])); + static::assertSame('their 3 apples', _m($complex, ['pronoun' => 'they', 'count' => 3])); + } +}