Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
LanguageAndRegionTest
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 6
42
0.00% covered (danger)
0.00%
0 / 1
 it_can_be_instantiated_with_a_valid_tag
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 it_can_be_instantiated_with_no_region
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 it_can_be_instantiated_from_a_string
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 it_can_be_instantiated_from_a_string_without_region
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 it_can_be_converted_to_a_preferred_value
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 provideInvalidTags
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2namespace Apie\Tests\IanaValueObjects;
3
4use Apie\IanaValueObjects\Language;
5use Apie\IanaValueObjects\LanguageAndRegion;
6use Apie\IanaValueObjects\LanguageRegion;
7use PHPUnit\Framework\Attributes\DataProvider;
8use PHPUnit\Framework\Attributes\Test;
9
10class LanguageAndRegionTest extends LanguageRegionTest
11{
12    #[Test]
13    public function it_can_be_instantiated_with_a_valid_tag()
14    {
15        $testItem = new LanguageAndRegion(new Language('en'), new LanguageRegion('US'));
16        $this->assertEquals('en-US', $testItem->toNative());
17    }
18
19    #[Test]
20    public function it_can_be_instantiated_with_no_region()
21    {
22        $testItem = new LanguageAndRegion(new Language('en'));
23        $this->assertEquals('en', $testItem->toNative());
24    }
25
26    #[Test]
27    public function it_can_be_instantiated_from_a_string()
28    {
29        $testItem = LanguageAndRegion::fromNative('en-US');
30        $expected = new LanguageAndRegion(new Language('en'), new LanguageRegion('US'));
31        $this->assertEquals($expected, $testItem);
32    }
33
34    #[Test]
35    public function it_can_be_instantiated_from_a_string_without_region()
36    {
37        $testItem = LanguageAndRegion::fromNative('en');
38        $expected = new LanguageAndRegion(new Language('en'));
39        $this->assertEquals($expected, $testItem);
40    }
41
42    #[Test]
43    #[DataProvider('provideInvalidTags')]
44    public function it_can_be_converted_to_a_preferred_value(string $expected, string $input)
45    {
46        $testItem = LanguageAndRegion::fromNative($input);
47        $preferredItem = $testItem->toPreferredValue();
48        $this->assertEquals($expected, $preferredItem->toNative());
49    }
50
51    public static function provideInvalidTags(): array
52    {
53        return [
54            ['en-US', 'en-us'],
55            ['nbr-MM', 'nns-BU'],
56        ];
57    }
58}