NormalizerTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 23
dl 0
loc 55
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testNormalizeList() 0 9 1
A testNormalize() 0 5 1
A normalizeProvider() 0 22 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lochmueller\LanguageDetection\Tests\Unit\Service;
6
7
use Lochmueller\LanguageDetection\Domain\Collection\LocaleCollection;
8
use Lochmueller\LanguageDetection\Service\Normalizer;
9
use Lochmueller\LanguageDetection\Tests\Unit\AbstractUnitTest;
10
11
/**
12
 * @internal
13
 *
14
 * @coversNothing
15
 */
16
class NormalizerTest extends AbstractUnitTest
17
{
18
    /**
19
     * @dataProvider normalizeProvider
20
     *
21
     * @covers \Lochmueller\LanguageDetection\Service\Normalizer
22
     */
23
    public function testNormalize(string $base, string $result): void
24
    {
25
        $normalizer = new Normalizer();
26
27
        self::assertEquals($result, $normalizer->normalize($base));
28
    }
29
30
    /**
31
     * @covers \Lochmueller\LanguageDetection\Domain\Collection\LocaleCollection
32
     * @covers \Lochmueller\LanguageDetection\Domain\Model\Dto\LocaleValueObject
33
     * @covers \Lochmueller\LanguageDetection\Service\Normalizer
34
     */
35
    public function testNormalizeList(): void
36
    {
37
        $normalizer = new Normalizer();
38
39
        $base = array_map(fn($item): string => $item[0], $this->normalizeProvider());
40
41
        $result = array_map(fn($item): string => $item[1], $this->normalizeProvider());
42
43
        self::assertEquals(array_values($result), $normalizer->normalizeList(LocaleCollection::fromArray(array_values($base)))->toArray());
44
    }
45
46
    /**
47
     * @return array<string, array<int, string>>
48
     */
49
    public static function normalizeProvider(): array
50
    {
51
        return [
52
            'default' => [
53
                'de-de',
54
                'de_DE',
55
            ],
56
            'default with encoding' => [
57
                'de_DE.UTF-8',
58
                'de_DE',
59
            ],
60
            'lower and upper wrong in country' => [
61
                'en-gB',
62
                'en_GB',
63
            ],
64
            'lower and upper wrong in language' => [
65
                'EN-us',
66
                'en_US',
67
            ],
68
            'lower and upper wrong in language and language only' => [
69
                'EN',
70
                'en',
71
            ],
72
        ];
73
    }
74
}
75