1ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia/*
2ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * Copyright (C) 2011 The Libphonenumber Authors
3ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia *
4ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * Licensed under the Apache License, Version 2.0 (the "License");
5ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * you may not use this file except in compliance with the License.
6ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * You may obtain a copy of the License at
7ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia *
8ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * http://www.apache.org/licenses/LICENSE-2.0
9ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia *
10ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * Unless required by applicable law or agreed to in writing, software
11ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * distributed under the License is distributed on an "AS IS" BASIS,
12ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * See the License for the specific language governing permissions and
14ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * limitations under the License.
15ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia */
16ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
17ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jiapackage com.android.i18n.phonenumbers;
18ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
19ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia/**
20a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia * Unit tests for ShortNumberUtil.java
21a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia *
22ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * @author Shaopeng Jia
23ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia */
24b0e21c22b1ca6b9aeb1426924cdf42a221c3d416Shaopeng Jiapublic class ShortNumberUtilTest extends TestMetadataTestCase {
25ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  private ShortNumberUtil shortUtil;
26ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
27ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  public ShortNumberUtilTest() {
28ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    shortUtil = new ShortNumberUtil(phoneUtil);
29ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  }
30ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
31ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  public void testConnectsToEmergencyNumber_US() {
32ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("911", RegionCode.US));
33ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("119", RegionCode.US));
34ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("999", RegionCode.US));
35ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  }
36ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
37ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  public void testConnectsToEmergencyNumberLongNumber_US() {
38ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("9116666666", RegionCode.US));
39ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("1196666666", RegionCode.US));
40ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("9996666666", RegionCode.US));
41ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  }
42ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
43ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  public void testConnectsToEmergencyNumberWithFormatting_US() {
44ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("9-1-1", RegionCode.US));
45ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("1-1-9", RegionCode.US));
46ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("9-9-9", RegionCode.US));
47ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  }
48ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
49ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  public void testConnectsToEmergencyNumberWithPlusSign_US() {
50ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("+911", RegionCode.US));
51ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("\uFF0B911", RegionCode.US));
52ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber(" +911", RegionCode.US));
53ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("+119", RegionCode.US));
54ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("+999", RegionCode.US));
55ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  }
56ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
57ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  public void testConnectsToEmergencyNumber_BR() {
58ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("911", RegionCode.BR));
59ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertTrue(shortUtil.connectsToEmergencyNumber("190", RegionCode.BR));
60ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("999", RegionCode.BR));
61ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  }
62ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia
63ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  public void testConnectsToEmergencyNumberLongNumber_BR() {
64ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    // Brazilian emergency numbers don't work when additional digits are appended.
65ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("9111", RegionCode.BR));
66ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("1900", RegionCode.BR));
67ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("9996", RegionCode.BR));
68ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia  }
69a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
70a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testConnectsToEmergencyNumber_AO() {
71a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    // Angola doesn't have any metadata for emergency numbers in the test metadata.
72a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("911", RegionCode.AO));
73a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("222123456", RegionCode.AO));
74a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("923123456", RegionCode.AO));
75a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
76a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
77a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testConnectsToEmergencyNumber_ZW() {
78a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    // Zimbabwe doesn't have any metadata in the test metadata.
79a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("911", RegionCode.ZW));
80a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("01312345", RegionCode.ZW));
81a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.connectsToEmergencyNumber("0711234567", RegionCode.ZW));
82a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
83a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
84a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumber_US() {
85a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("911", RegionCode.US));
86a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("119", RegionCode.US));
87a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("999", RegionCode.US));
88a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
89a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
90a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumberLongNumber_US() {
91a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("9116666666", RegionCode.US));
92a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("1196666666", RegionCode.US));
93a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("9996666666", RegionCode.US));
94a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
95a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
96a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumberWithFormatting_US() {
97a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("9-1-1", RegionCode.US));
98a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("*911", RegionCode.US));
99a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("1-1-9", RegionCode.US));
100a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("*119", RegionCode.US));
101a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("9-9-9", RegionCode.US));
102a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("*999", RegionCode.US));
103a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
104a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
105a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumberWithPlusSign_US() {
106a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("+911", RegionCode.US));
107a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("\uFF0B911", RegionCode.US));
108a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber(" +911", RegionCode.US));
109a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("+119", RegionCode.US));
110a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("+999", RegionCode.US));
111a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
112a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
113a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumber_BR() {
114a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("911", RegionCode.BR));
115a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertTrue(shortUtil.isEmergencyNumber("190", RegionCode.BR));
116a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("999", RegionCode.BR));
117a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
118a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
119a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumberLongNumber_BR() {
120a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("9111", RegionCode.BR));
121a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("1900", RegionCode.BR));
122a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("9996", RegionCode.BR));
123a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
124a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
125a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumber_AO() {
126a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    // Angola doesn't have any metadata for emergency numbers in the test metadata.
127a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("911", RegionCode.AO));
128a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("222123456", RegionCode.AO));
129a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("923123456", RegionCode.AO));
130a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
131a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia
132a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  public void testIsEmergencyNumber_ZW() {
133a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    // Zimbabwe doesn't have any metadata in the test metadata.
134a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("911", RegionCode.ZW));
135a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("01312345", RegionCode.ZW));
136a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia    assertFalse(shortUtil.isEmergencyNumber("0711234567", RegionCode.ZW));
137a48b2d221ba46df7446d1a87244efa985e8e292fShaopeng Jia  }
138ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia}
139