Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
39 / 39
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
BrazilianState
100.00% covered (success)
100.00%
39 / 39
100.00% covered (success)
100.00%
4 / 4
7
100.00% covered (success)
100.00%
1 / 1
 label
100.00% covered (success)
100.00%
30 / 30
100.00% covered (success)
100.00%
1 / 1
2
 labelList
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toArray
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 toArrayWithLabels
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace DevToolbelt\Enums\Brazil;
6
7use DevToolbelt\Enums\EnumInterface;
8
9enum BrazilianState: string implements EnumInterface
10{
11    case AC = 'AC';
12    case AL = 'AL';
13    case AP = 'AP';
14    case AM = 'AM';
15    case BA = 'BA';
16    case CE = 'CE';
17    case DF = 'DF';
18    case ES = 'ES';
19    case GO = 'GO';
20    case MA = 'MA';
21    case MT = 'MT';
22    case MS = 'MS';
23    case MG = 'MG';
24    case PA = 'PA';
25    case PB = 'PB';
26    case PR = 'PR';
27    case PE = 'PE';
28    case PI = 'PI';
29    case RJ = 'RJ';
30    case RN = 'RN';
31    case RS = 'RS';
32    case RO = 'RO';
33    case RR = 'RR';
34    case SC = 'SC';
35    case SP = 'SP';
36    case SE = 'SE';
37    case TO = 'TO';
38
39    public function label(bool $toUppercase = false): string
40    {
41        $name = match ($this) {
42            self::AC => 'Acre',
43            self::AL => 'Alagoas',
44            self::AP => 'Amapá',
45            self::AM => 'Amazonas',
46            self::BA => 'Bahia',
47            self::CE => 'Ceará',
48            self::DF => 'Distrito Federal',
49            self::ES => 'Espírito Santo',
50            self::GO => 'Goiás',
51            self::MA => 'Maranhão',
52            self::MT => 'Mato Grosso',
53            self::MS => 'Mato Grosso do Sul',
54            self::MG => 'Minas Gerais',
55            self::PA => 'Pará',
56            self::PB => 'Paraíba',
57            self::PR => 'Paraná',
58            self::PE => 'Pernambuco',
59            self::PI => 'Piauí',
60            self::RJ => 'Rio de Janeiro',
61            self::RN => 'Rio Grande do Norte',
62            self::RS => 'Rio Grande do Sul',
63            self::RO => 'Rondônia',
64            self::RR => 'Roraima',
65            self::SC => 'Santa Catarina',
66            self::SP => 'São Paulo',
67            self::SE => 'Sergipe',
68            self::TO => 'Tocantins',
69        };
70
71        return $toUppercase ? mb_strtoupper($name) : $name;
72    }
73
74    /**
75     * @return string[]
76     */
77    public function labelList(): array
78    {
79        return array_map(fn (self $case) => $case->label(), self::cases());
80    }
81
82    /**
83     * @return array<string, string>
84     */
85    public static function toArray(): array
86    {
87        $result = [];
88
89        foreach (self::cases() as $state) {
90            $result[$state->value] = $state->value;
91        }
92
93        return $result;
94    }
95
96    /**
97     * @return array<string, string>
98     */
99    public static function toArrayWithLabels(bool $toUppercase = false): array
100    {
101        $result = [];
102
103        foreach (self::cases() as $state) {
104            $result[$state->value] = $state->label($toUppercase);
105        }
106
107        return $result;
108    }
109}