Passed
Pull Request — master (#237)
by Joshua
43:42 queued 36:26
created

PrefixTimeZonesMapTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 116
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 3
dl 0
loc 116
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace libphonenumber\Tests\timezone;
4
5
use libphonenumber\PhoneNumber;
6
use libphonenumber\prefixmapper\PrefixTimeZonesMap;
7
8
class PrefixTimeZonesMapTest extends \PHPUnit_Framework_TestCase
9
{
10
    // US time zones
11
    const CHICAGO_TZ = "America/Chicago";
12
    const DENVER_TZ = "America/Denver";
13
    const LOS_ANGELES_TZ = "America/Los_Angeles";
14
    const NEW_YORK_TZ = "America/New_York";
15
16
    // Russian time zones
17
    const IRKUTSK_TZ = "Asia/Irkutsk";
18
    const MOSCOW_TZ = "Europe/Moscow";
19
    const VLADIVOSTOK_TZ = "Asia/Vladivostok";
20
    const YEKATERINBURG_TZ = "Asia/Yekaterinburg";
21
    /**
22
     * @var PrefixTimeZonesMap
23
     */
24
    private static $prefixTimeZonesMapForUS;
25
    /**
26
     * @var PrefixTimeZonesMap
27
     */
28
    private static $prefixTimeZonesMapForRU;
29
30
    public static function setUpBeforeClass()
31
    {
32
        $sortedMapForUS = array();
33
        $sortedMapForUS[1] = self::NEW_YORK_TZ . "&" . self::CHICAGO_TZ . "&" . self::LOS_ANGELES_TZ . "&" . self::DENVER_TZ;
34
        $sortedMapForUS[1201] = self::NEW_YORK_TZ;
35
        $sortedMapForUS[1205] = self::CHICAGO_TZ;
36
        $sortedMapForUS[1208292] = self::LOS_ANGELES_TZ;
37
        $sortedMapForUS[1208234] = self::DENVER_TZ;
38
        $sortedMapForUS[1541367] = self::LOS_ANGELES_TZ;
39
        $sortedMapForUS[1423843] = self::NEW_YORK_TZ;
40
        $sortedMapForUS[1402721] = self::CHICAGO_TZ;
41
        $sortedMapForUS[1208888] = self::DENVER_TZ;
42
43
        self::$prefixTimeZonesMapForUS = new PrefixTimeZonesMap($sortedMapForUS);
44
45
        $sortedMapForRU = array();
46
        $sortedMapForRU[7421] = self::VLADIVOSTOK_TZ;
47
        $sortedMapForRU[7879] = self::MOSCOW_TZ;
48
        $sortedMapForRU[7342] = self::YEKATERINBURG_TZ;
49
        $sortedMapForRU[7395] = self::IRKUTSK_TZ;
50
51
        self::$prefixTimeZonesMapForRU = new PrefixTimeZonesMap($sortedMapForRU);
52
    }
53
54
    public function testLookupTimeZonesForNumberCountryLevel_US()
55
    {
56
        $number = new PhoneNumber();
57
        $number->setCountryCode(1)->setNationalNumber(1000000000);
58
59
        $this->assertEquals(
60
            array(
61
                self::NEW_YORK_TZ,
62
                self::CHICAGO_TZ,
63
                self::LOS_ANGELES_TZ,
64
                self::DENVER_TZ,
65
            ),
66
            self::$prefixTimeZonesMapForUS->lookupTimeZonesForNumber($number)
67
        );
68
    }
69
70
    public function testLookupTimeZonesForNumber_ValidNumber_Chicago()
71
    {
72
        $number = new PhoneNumber();
73
        $number->setCountryCode(1)->setNationalNumber(2051235458);
74
75
        $this->assertEquals(array(self::CHICAGO_TZ), self::$prefixTimeZonesMapForUS->lookupTimeZonesForNumber($number));
76
    }
77
78
    public function testLookupTimeZonesForNumber_LA()
79
    {
80
        $number = new PhoneNumber();
81
        $number->setCountryCode(1)->setNationalNumber(2082924565);
82
83
        $this->assertEquals(array(self::LOS_ANGELES_TZ), self::$prefixTimeZonesMapForUS->lookupTimeZonesForNumber($number));
84
    }
85
86
    public function testLookupTimeZonesForNumber_NY()
87
    {
88
        $number = new PhoneNumber();
89
        $number->setCountryCode(1)->setNationalNumber(2016641234);
90
91
        $this->assertEquals(array(self::NEW_YORK_TZ), self::$prefixTimeZonesMapForUS->lookupTimeZonesForNumber($number));
92
    }
93
94
    public function testLookupTimeZonesForNumber_CH()
95
    {
96
        $number = new PhoneNumber();
97
        $number->setCountryCode(41)->setNationalNumber(446681300);
98
99
        $this->assertEquals(array(), self::$prefixTimeZonesMapForUS->lookupTimeZonesForNumber($number));
100
    }
101
102
    public function testLookupTimeZonesForNumber_RU()
103
    {
104
        $number = new PhoneNumber();
105
        $number->setCountryCode(7)->setNationalNumber(87945154);
106
107
        $this->assertEquals(array(self::MOSCOW_TZ), self::$prefixTimeZonesMapForRU->lookupTimeZonesForNumber($number));
108
109
        $number->setNationalNumber(421548578);
110
        $this->assertEquals(array(self::VLADIVOSTOK_TZ), self::$prefixTimeZonesMapForRU->lookupTimeZonesForNumber($number));
111
112
        $number->setNationalNumber(342457897);
113
        $this->assertEquals(array(self::YEKATERINBURG_TZ), self::$prefixTimeZonesMapForRU->lookupTimeZonesForNumber($number));
114
115
        // A mobile number
116
        $number->setNationalNumber(9342457897);
117
        $this->assertEquals(array(), self::$prefixTimeZonesMapForRU->lookupTimeZonesForNumber($number));
118
119
        // An invalid number (too short)
120
        $number->setNationalNumber(3951);
121
        $this->assertEquals(array(self::IRKUTSK_TZ), self::$prefixTimeZonesMapForRU->lookupTimeZonesForNumber($number));
122
    }
123
}
124