Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
81.82% covered (warning)
81.82%
9 / 11
66.67% covered (warning)
66.67%
4 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
LanguageAndRegion
81.82% covered (warning)
81.82%
9 / 11
66.67% covered (warning)
66.67%
4 / 6
7.29
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLanguage
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getRegion
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 toPreferredValue
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 getSeparator
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createRandom
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2namespace Apie\IanaValueObjects;
3
4use Apie\Core\Attributes\FakeMethod;
5use Apie\Core\ValueObjects\SnowflakeIdentifier;
6use Apie\IanaValueObjects\LanguageTag\Language;
7use Apie\IanaValueObjects\LanguageTag\LanguageRegion;
8use Faker\Generator;
9
10#[FakeMethod('createRandom')]
11final class LanguageAndRegion extends SnowflakeIdentifier
12{
13    public function __construct(private Language $language, private ?LanguageRegion $region = null)
14    {
15    }
16
17    public function getLanguage(): Language
18    {
19        return $this->language;
20    }
21
22    public function getRegion(): ?LanguageRegion
23    {
24        return $this->region;
25    }
26
27    public function toPreferredValue(): static
28    {
29        $language = $this->language->toPreferredValue();
30        $region = $this->region?->toPreferredValue();
31        return new static($language, $region);
32    }
33
34    protected static function getSeparator(): string
35    {
36        return '-';
37    }
38
39    public static function createRandom(Generator $factory): LanguageAndRegion
40    {
41        return new LanguageAndRegion(
42            $factory->fakeClass(Language::class),
43            $factory->boolean(50) ? $factory->fakeClass(LanguageRegion::class) : null
44        );
45    }
46}