Passed
Push — master ( c53aee...a01d4d )
by Alexander
07:37
created

LocaleTest::testScriptParsedCorrectly()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 5
rs 10
c 2
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yii\I18n\Tests;
6
7
use Yiisoft\I18n\Locale;
8
use PHPUnit\Framework\TestCase;
9
10
/**
11
 * @group i18n
12
 */
13
class LocaleTest extends Testcase
14
{
15
    public function testInvalidConstructorShouldThrowException()
16
    {
17
        $this->expectException(\InvalidArgumentException::class);
18
        new Locale('invalid-locale_zz-123');
19
    }
20
21
    public function testLanguageParsedCorrectly()
22
    {
23
        $locale = new Locale('en');
24
        $this->assertSame('en', $locale->language());
25
    }
26
27
    public function testRegionParsedCorrectly()
28
    {
29
        $locale = new Locale('fr-CA');
30
        $this->assertSame('fr', $locale->language());
31
        $this->assertSame('CA', $locale->region());
32
    }
33
34
    public function testScriptParsedCorrectly()
35
    {
36
        $locale = new Locale('zh-Hans');
37
        $this->assertSame('zh', $locale->language());
38
        $this->assertSame('Hans', $locale->script());
39
    }
40
41
    public function testVariantParsedCorrectly()
42
    {
43
        $locale = new Locale('de-DE-1901');
44
        $this->assertSame('de', $locale->language());
45
        $this->assertSame('DE', $locale->region());
46
        $this->assertSame('1901', $locale->variant());
47
    }
48
49
    public function testPrivateParsedCorrectly()
50
    {
51
        $locale = new Locale('x-fr-CH');
52
        $this->assertSame('fr-CH', $locale->private());
53
    }
54
55
    public function testAsString()
56
    {
57
        $localeString = 'en-GB-boont-r-extended-sequence-x-private';
58
        $locale = new Locale($localeString);
59
60
        $this->assertSame($localeString, $locale->asString());
61
    }
62
63
    public function testWithLanguage()
64
    {
65
        $locale = new Locale('ru-RU');
66
        $newLocale = $locale->withLanguage('en');
67
68
        $this->assertSame('ru', $locale->language());
69
        $this->assertSame('en', $newLocale->language());
70
    }
71
72
    public function testWithPrivate()
73
    {
74
        $locale = new Locale('en-GB-boont-x-private');
75
        $newLocale = $locale->withPrivate('newprivate');
76
77
        $this->assertSame('private', $locale->private());
78
        $this->assertSame('newprivate', $newLocale->private());
79
    }
80
81
    public function testFallback()
82
    {
83
        $locale = new Locale('en-GB-boont-x-private');
84
85
        $fallbackLocale = $locale->fallbackLocale();
86
        $this->assertSame('en-GB', $fallbackLocale->asString());
87
88
        $fallbackLocale = $fallbackLocale->fallbackLocale();
89
        $this->assertSame('en', $fallbackLocale->asString());
90
    }
91
}
92