1/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.internal.telephony;
18
19import android.test.AndroidTestCase;
20import android.test.suitebuilder.annotation.SmallTest;
21
22import static com.android.internal.telephony.SmsUsageMonitor.CATEGORY_FREE_SHORT_CODE;
23import static com.android.internal.telephony.SmsUsageMonitor.CATEGORY_NOT_SHORT_CODE;
24import static com.android.internal.telephony.SmsUsageMonitor.CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE;
25import static com.android.internal.telephony.SmsUsageMonitor.CATEGORY_PREMIUM_SHORT_CODE;
26import static com.android.internal.telephony.SmsUsageMonitor.CATEGORY_STANDARD_SHORT_CODE;
27
28/**
29 * Test cases for SMS short code pattern matching in SmsUsageMonitor.
30 */
31public class SmsUsageMonitorShortCodeTest extends AndroidTestCase {
32
33    private static final class ShortCodeTest {
34        final String countryIso;
35        final String address;
36        final int category;
37
38        ShortCodeTest(String countryIso, String destAddress, int category) {
39            this.countryIso = countryIso;
40            this.address = destAddress;
41            this.category = category;
42        }
43    }
44
45    /**
46     * List of short code test cases.
47     */
48    private static final ShortCodeTest[] sShortCodeTests = new ShortCodeTest[] {
49            new ShortCodeTest("al", "112", CATEGORY_NOT_SHORT_CODE),
50            new ShortCodeTest("al", "4321", CATEGORY_NOT_SHORT_CODE),
51            new ShortCodeTest("al", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
52            new ShortCodeTest("al", "15191", CATEGORY_PREMIUM_SHORT_CODE),
53            new ShortCodeTest("al", "55500", CATEGORY_PREMIUM_SHORT_CODE),
54            new ShortCodeTest("al", "55600", CATEGORY_PREMIUM_SHORT_CODE),
55            new ShortCodeTest("al", "654321", CATEGORY_NOT_SHORT_CODE),
56
57            new ShortCodeTest("am", "112", CATEGORY_NOT_SHORT_CODE),
58            new ShortCodeTest("am", "101", CATEGORY_FREE_SHORT_CODE),
59            new ShortCodeTest("am", "102", CATEGORY_FREE_SHORT_CODE),
60            new ShortCodeTest("am", "103", CATEGORY_FREE_SHORT_CODE),
61            new ShortCodeTest("am", "222", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
62            new ShortCodeTest("am", "1111", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
63            new ShortCodeTest("am", "9999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
64            new ShortCodeTest("am", "1121", CATEGORY_PREMIUM_SHORT_CODE),
65            new ShortCodeTest("am", "1141", CATEGORY_PREMIUM_SHORT_CODE),
66            new ShortCodeTest("am", "1161", CATEGORY_PREMIUM_SHORT_CODE),
67            new ShortCodeTest("am", "3024", CATEGORY_PREMIUM_SHORT_CODE),
68
69            new ShortCodeTest("at", "112", CATEGORY_NOT_SHORT_CODE),
70            new ShortCodeTest("at", "116117", CATEGORY_FREE_SHORT_CODE),
71            new ShortCodeTest("at", "0901234", CATEGORY_PREMIUM_SHORT_CODE),
72            new ShortCodeTest("at", "0900666266", CATEGORY_PREMIUM_SHORT_CODE),
73
74            new ShortCodeTest("au", "112", CATEGORY_NOT_SHORT_CODE),
75            new ShortCodeTest("au", "180000", CATEGORY_NOT_SHORT_CODE),
76            new ShortCodeTest("au", "190000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
77            new ShortCodeTest("au", "1900000", CATEGORY_NOT_SHORT_CODE),
78            new ShortCodeTest("au", "19000000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
79            new ShortCodeTest("au", "19998882", CATEGORY_PREMIUM_SHORT_CODE),
80
81            new ShortCodeTest("az", "112", CATEGORY_NOT_SHORT_CODE),
82            new ShortCodeTest("az", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
83            new ShortCodeTest("az", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
84            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
85            new ShortCodeTest("az", "3301", CATEGORY_PREMIUM_SHORT_CODE),
86            new ShortCodeTest("az", "3302", CATEGORY_PREMIUM_SHORT_CODE),
87            new ShortCodeTest("az", "9012", CATEGORY_PREMIUM_SHORT_CODE),
88            new ShortCodeTest("az", "9014", CATEGORY_PREMIUM_SHORT_CODE),
89            new ShortCodeTest("az", "9394", CATEGORY_PREMIUM_SHORT_CODE),
90            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
91            new ShortCodeTest("az", "93101", CATEGORY_PREMIUM_SHORT_CODE),
92            new ShortCodeTest("az", "123456", CATEGORY_NOT_SHORT_CODE),
93
94            new ShortCodeTest("be", "112", CATEGORY_NOT_SHORT_CODE),
95            new ShortCodeTest("be", "116117", CATEGORY_FREE_SHORT_CODE),
96            new ShortCodeTest("be", "567890", CATEGORY_NOT_SHORT_CODE),
97            new ShortCodeTest("be", "8000", CATEGORY_FREE_SHORT_CODE),
98            new ShortCodeTest("be", "6566", CATEGORY_PREMIUM_SHORT_CODE),
99            new ShortCodeTest("be", "7777", CATEGORY_PREMIUM_SHORT_CODE),
100
101            new ShortCodeTest("bg", "112", CATEGORY_NOT_SHORT_CODE),
102            new ShortCodeTest("bg", "116117", CATEGORY_FREE_SHORT_CODE),
103            new ShortCodeTest("bg", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
104            new ShortCodeTest("bg", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
105            new ShortCodeTest("bg", "1816", CATEGORY_PREMIUM_SHORT_CODE),
106            new ShortCodeTest("bg", "1915", CATEGORY_PREMIUM_SHORT_CODE),
107            new ShortCodeTest("bg", "1916", CATEGORY_PREMIUM_SHORT_CODE),
108            new ShortCodeTest("bg", "1935", CATEGORY_PREMIUM_SHORT_CODE),
109            new ShortCodeTest("bg", "18423", CATEGORY_PREMIUM_SHORT_CODE),
110
111            new ShortCodeTest("by", "112", CATEGORY_NOT_SHORT_CODE),
112            new ShortCodeTest("by", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
113            new ShortCodeTest("by", "3336", CATEGORY_PREMIUM_SHORT_CODE),
114            new ShortCodeTest("by", "5013", CATEGORY_PREMIUM_SHORT_CODE),
115            new ShortCodeTest("by", "5014", CATEGORY_PREMIUM_SHORT_CODE),
116            new ShortCodeTest("by", "7781", CATEGORY_PREMIUM_SHORT_CODE),
117
118            new ShortCodeTest("ca", "911", CATEGORY_NOT_SHORT_CODE),
119            new ShortCodeTest("ca", "+18005551234", CATEGORY_NOT_SHORT_CODE),
120            new ShortCodeTest("ca", "8005551234", CATEGORY_NOT_SHORT_CODE),
121            new ShortCodeTest("ca", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
122            new ShortCodeTest("ca", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
123            new ShortCodeTest("ca", "2000000", CATEGORY_NOT_SHORT_CODE),
124            new ShortCodeTest("ca", "60999", CATEGORY_PREMIUM_SHORT_CODE),
125            new ShortCodeTest("ca", "88188", CATEGORY_PREMIUM_SHORT_CODE),
126
127            new ShortCodeTest("ch", "112", CATEGORY_NOT_SHORT_CODE),
128            new ShortCodeTest("ch", "123", CATEGORY_NOT_SHORT_CODE),
129            new ShortCodeTest("ch", "234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
130            new ShortCodeTest("ch", "3456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
131            new ShortCodeTest("ch", "98765", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
132            new ShortCodeTest("ch", "543", CATEGORY_PREMIUM_SHORT_CODE),
133            new ShortCodeTest("ch", "83111", CATEGORY_PREMIUM_SHORT_CODE),
134            new ShortCodeTest("ch", "234567", CATEGORY_NOT_SHORT_CODE),
135            new ShortCodeTest("ch", "87654321", CATEGORY_NOT_SHORT_CODE),
136
137            new ShortCodeTest("cn", "120", CATEGORY_NOT_SHORT_CODE),
138            new ShortCodeTest("cn", "1062503000", CATEGORY_NOT_SHORT_CODE),
139            new ShortCodeTest("cn", "1065123456", CATEGORY_FREE_SHORT_CODE),
140            new ShortCodeTest("cn", "1066335588", CATEGORY_PREMIUM_SHORT_CODE),
141
142            new ShortCodeTest("cy", "112", CATEGORY_NOT_SHORT_CODE),
143            new ShortCodeTest("cy", "116117", CATEGORY_FREE_SHORT_CODE),
144            new ShortCodeTest("cy", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
145            new ShortCodeTest("cy", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
146            new ShortCodeTest("cy", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
147            new ShortCodeTest("cy", "7510", CATEGORY_PREMIUM_SHORT_CODE),
148            new ShortCodeTest("cy", "987654321", CATEGORY_NOT_SHORT_CODE),
149
150            new ShortCodeTest("cz", "112", CATEGORY_NOT_SHORT_CODE),
151            new ShortCodeTest("cz", "116117", CATEGORY_FREE_SHORT_CODE),
152            new ShortCodeTest("cz", "9090150", CATEGORY_PREMIUM_SHORT_CODE),
153            new ShortCodeTest("cz", "90901599", CATEGORY_PREMIUM_SHORT_CODE),
154            new ShortCodeTest("cz", "987654321", CATEGORY_NOT_SHORT_CODE),
155
156            new ShortCodeTest("de", "112", CATEGORY_NOT_SHORT_CODE),
157            new ShortCodeTest("de", "116117", CATEGORY_FREE_SHORT_CODE),
158            new ShortCodeTest("de", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
159            new ShortCodeTest("de", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
160            new ShortCodeTest("de", "8888", CATEGORY_PREMIUM_SHORT_CODE),
161            new ShortCodeTest("de", "11111", CATEGORY_PREMIUM_SHORT_CODE),
162            new ShortCodeTest("de", "11886", CATEGORY_PREMIUM_SHORT_CODE),
163            new ShortCodeTest("de", "22022", CATEGORY_PREMIUM_SHORT_CODE),
164            new ShortCodeTest("de", "23300", CATEGORY_PREMIUM_SHORT_CODE),
165            new ShortCodeTest("de", "3434", CATEGORY_PREMIUM_SHORT_CODE),
166            new ShortCodeTest("de", "34567", CATEGORY_PREMIUM_SHORT_CODE),
167            new ShortCodeTest("de", "41414", CATEGORY_PREMIUM_SHORT_CODE),
168            new ShortCodeTest("de", "55655", CATEGORY_PREMIUM_SHORT_CODE),
169            new ShortCodeTest("de", "66766", CATEGORY_PREMIUM_SHORT_CODE),
170            new ShortCodeTest("de", "66777", CATEGORY_PREMIUM_SHORT_CODE),
171            new ShortCodeTest("de", "77677", CATEGORY_PREMIUM_SHORT_CODE),
172            new ShortCodeTest("de", "80888", CATEGORY_PREMIUM_SHORT_CODE),
173            new ShortCodeTest("de", "1232286", CATEGORY_PREMIUM_SHORT_CODE),
174            new ShortCodeTest("de", "987654321", CATEGORY_NOT_SHORT_CODE),
175
176            new ShortCodeTest("dk", "112", CATEGORY_NOT_SHORT_CODE),
177            new ShortCodeTest("dk", "116117", CATEGORY_FREE_SHORT_CODE),
178            new ShortCodeTest("dk", "1259", CATEGORY_PREMIUM_SHORT_CODE),
179            new ShortCodeTest("dk", "16123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
180            new ShortCodeTest("dk", "987654321", CATEGORY_NOT_SHORT_CODE),
181
182            new ShortCodeTest("ee", "112", CATEGORY_NOT_SHORT_CODE),
183            new ShortCodeTest("ee", "116117", CATEGORY_FREE_SHORT_CODE),
184            new ShortCodeTest("ee", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
185            new ShortCodeTest("ee", "1259", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
186            new ShortCodeTest("ee", "15330", CATEGORY_PREMIUM_SHORT_CODE),
187            new ShortCodeTest("ee", "17999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
188            new ShortCodeTest("ee", "17010", CATEGORY_PREMIUM_SHORT_CODE),
189            new ShortCodeTest("ee", "17013", CATEGORY_PREMIUM_SHORT_CODE),
190            new ShortCodeTest("ee", "9034567", CATEGORY_PREMIUM_SHORT_CODE),
191            new ShortCodeTest("ee", "34567890", CATEGORY_NOT_SHORT_CODE),
192
193            new ShortCodeTest("es", "112", CATEGORY_NOT_SHORT_CODE),
194            new ShortCodeTest("es", "116117", CATEGORY_FREE_SHORT_CODE),
195            new ShortCodeTest("es", "25165", CATEGORY_PREMIUM_SHORT_CODE),
196            new ShortCodeTest("es", "27333", CATEGORY_PREMIUM_SHORT_CODE),
197            new ShortCodeTest("es", "995399", CATEGORY_PREMIUM_SHORT_CODE),
198            new ShortCodeTest("es", "87654321", CATEGORY_NOT_SHORT_CODE),
199
200            new ShortCodeTest("fi", "112", CATEGORY_NOT_SHORT_CODE),
201            new ShortCodeTest("fi", "116117", CATEGORY_FREE_SHORT_CODE),
202            new ShortCodeTest("fi", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
203            new ShortCodeTest("fi", "123456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
204            new ShortCodeTest("fi", "17159", CATEGORY_PREMIUM_SHORT_CODE),
205            new ShortCodeTest("fi", "17163", CATEGORY_PREMIUM_SHORT_CODE),
206            new ShortCodeTest("fi", "0600123", CATEGORY_PREMIUM_SHORT_CODE),
207            new ShortCodeTest("fi", "070012345", CATEGORY_PREMIUM_SHORT_CODE),
208            new ShortCodeTest("fi", "987654321", CATEGORY_NOT_SHORT_CODE),
209
210            new ShortCodeTest("fr", "112", CATEGORY_NOT_SHORT_CODE),
211            new ShortCodeTest("fr", "116117", CATEGORY_FREE_SHORT_CODE),
212            new ShortCodeTest("fr", "34567", CATEGORY_FREE_SHORT_CODE),
213            new ShortCodeTest("fr", "45678", CATEGORY_PREMIUM_SHORT_CODE),
214            new ShortCodeTest("fr", "81185", CATEGORY_PREMIUM_SHORT_CODE),
215            new ShortCodeTest("fr", "87654321", CATEGORY_NOT_SHORT_CODE),
216
217            new ShortCodeTest("gb", "112", CATEGORY_NOT_SHORT_CODE),
218            new ShortCodeTest("gb", "999", CATEGORY_NOT_SHORT_CODE),
219            new ShortCodeTest("gb", "116117", CATEGORY_FREE_SHORT_CODE),
220            new ShortCodeTest("gb", "4567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
221            new ShortCodeTest("gb", "45678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
222            new ShortCodeTest("gb", "56789", CATEGORY_PREMIUM_SHORT_CODE),
223            new ShortCodeTest("gb", "79067", CATEGORY_PREMIUM_SHORT_CODE),
224            new ShortCodeTest("gb", "80079", CATEGORY_PREMIUM_SHORT_CODE),
225            new ShortCodeTest("gb", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
226            new ShortCodeTest("gb", "7654321", CATEGORY_NOT_SHORT_CODE),
227
228            new ShortCodeTest("ge", "112", CATEGORY_NOT_SHORT_CODE),
229            new ShortCodeTest("ge", "8765", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
230            new ShortCodeTest("ge", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
231            new ShortCodeTest("ge", "8012", CATEGORY_PREMIUM_SHORT_CODE),
232            new ShortCodeTest("ge", "8013", CATEGORY_PREMIUM_SHORT_CODE),
233            new ShortCodeTest("ge", "8014", CATEGORY_PREMIUM_SHORT_CODE),
234            new ShortCodeTest("ge", "8889", CATEGORY_PREMIUM_SHORT_CODE),
235
236            new ShortCodeTest("gr", "112", CATEGORY_NOT_SHORT_CODE),
237            new ShortCodeTest("gr", "116117", CATEGORY_FREE_SHORT_CODE),
238            new ShortCodeTest("gr", "54321", CATEGORY_PREMIUM_SHORT_CODE),
239            new ShortCodeTest("gr", "19567", CATEGORY_PREMIUM_SHORT_CODE),
240            new ShortCodeTest("gr", "19678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
241            new ShortCodeTest("gr", "87654321", CATEGORY_NOT_SHORT_CODE),
242
243            new ShortCodeTest("hu", "112", CATEGORY_NOT_SHORT_CODE),
244            new ShortCodeTest("hu", "116117", CATEGORY_FREE_SHORT_CODE),
245            new ShortCodeTest("hu", "012", CATEGORY_NOT_SHORT_CODE),
246            new ShortCodeTest("hu", "0123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
247            new ShortCodeTest("hu", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
248            new ShortCodeTest("hu", "1784", CATEGORY_PREMIUM_SHORT_CODE),
249            new ShortCodeTest("hu", "2345", CATEGORY_NOT_SHORT_CODE),
250            new ShortCodeTest("hu", "01234", CATEGORY_NOT_SHORT_CODE),
251            new ShortCodeTest("hu", "012345678", CATEGORY_NOT_SHORT_CODE),
252            new ShortCodeTest("hu", "0123456789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
253            new ShortCodeTest("hu", "1234567890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
254            new ShortCodeTest("hu", "0691227910", CATEGORY_PREMIUM_SHORT_CODE),
255            new ShortCodeTest("hu", "2345678901", CATEGORY_NOT_SHORT_CODE),
256            new ShortCodeTest("hu", "01234567890", CATEGORY_NOT_SHORT_CODE),
257
258            new ShortCodeTest("ie", "112", CATEGORY_NOT_SHORT_CODE),
259            new ShortCodeTest("ie", "116117", CATEGORY_FREE_SHORT_CODE),
260            new ShortCodeTest("ie", "50123", CATEGORY_FREE_SHORT_CODE),
261            new ShortCodeTest("ie", "51234", CATEGORY_STANDARD_SHORT_CODE),
262            new ShortCodeTest("ie", "52345", CATEGORY_STANDARD_SHORT_CODE),
263            new ShortCodeTest("ie", "57890", CATEGORY_PREMIUM_SHORT_CODE),
264            new ShortCodeTest("ie", "67890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
265            new ShortCodeTest("ie", "87654321", CATEGORY_NOT_SHORT_CODE),
266
267            new ShortCodeTest("il", "112", CATEGORY_NOT_SHORT_CODE),
268            new ShortCodeTest("il", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
269            new ShortCodeTest("il", "4422", CATEGORY_PREMIUM_SHORT_CODE),
270            new ShortCodeTest("il", "4545", CATEGORY_PREMIUM_SHORT_CODE),
271            new ShortCodeTest("il", "98765", CATEGORY_NOT_SHORT_CODE),
272
273            new ShortCodeTest("it", "112", CATEGORY_NOT_SHORT_CODE),
274            new ShortCodeTest("it", "116117", CATEGORY_FREE_SHORT_CODE),
275            new ShortCodeTest("it", "4567", CATEGORY_NOT_SHORT_CODE),
276            new ShortCodeTest("it", "48000", CATEGORY_PREMIUM_SHORT_CODE),
277            new ShortCodeTest("it", "45678", CATEGORY_PREMIUM_SHORT_CODE),
278            new ShortCodeTest("it", "56789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
279            new ShortCodeTest("it", "456789", CATEGORY_NOT_SHORT_CODE),
280
281            new ShortCodeTest("kg", "112", CATEGORY_NOT_SHORT_CODE),
282            new ShortCodeTest("kg", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
283            new ShortCodeTest("kg", "4152", CATEGORY_PREMIUM_SHORT_CODE),
284            new ShortCodeTest("kg", "4157", CATEGORY_PREMIUM_SHORT_CODE),
285            new ShortCodeTest("kg", "4449", CATEGORY_PREMIUM_SHORT_CODE),
286            new ShortCodeTest("kg", "98765", CATEGORY_NOT_SHORT_CODE),
287
288            new ShortCodeTest("kz", "112", CATEGORY_NOT_SHORT_CODE),
289            new ShortCodeTest("kz", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
290            new ShortCodeTest("kz", "9194", CATEGORY_PREMIUM_SHORT_CODE),
291            new ShortCodeTest("kz", "7790", CATEGORY_PREMIUM_SHORT_CODE),
292            new ShortCodeTest("kz", "98765", CATEGORY_NOT_SHORT_CODE),
293
294            new ShortCodeTest("lt", "112", CATEGORY_NOT_SHORT_CODE),
295            new ShortCodeTest("lt", "116117", CATEGORY_FREE_SHORT_CODE),
296            new ShortCodeTest("lt", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
297            new ShortCodeTest("lt", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
298            new ShortCodeTest("lt", "1381", CATEGORY_PREMIUM_SHORT_CODE),
299            new ShortCodeTest("lt", "1394", CATEGORY_PREMIUM_SHORT_CODE),
300            new ShortCodeTest("lt", "1645", CATEGORY_PREMIUM_SHORT_CODE),
301            new ShortCodeTest("lt", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
302            new ShortCodeTest("lt", "123456", CATEGORY_NOT_SHORT_CODE),
303
304            new ShortCodeTest("lu", "112", CATEGORY_NOT_SHORT_CODE),
305            new ShortCodeTest("lu", "116117", CATEGORY_FREE_SHORT_CODE),
306            new ShortCodeTest("lu", "1234", CATEGORY_NOT_SHORT_CODE),
307            new ShortCodeTest("lu", "12345", CATEGORY_NOT_SHORT_CODE),
308            new ShortCodeTest("lu", "64747", CATEGORY_PREMIUM_SHORT_CODE),
309            new ShortCodeTest("lu", "678901", CATEGORY_NOT_SHORT_CODE),
310
311            new ShortCodeTest("lv", "112", CATEGORY_NOT_SHORT_CODE),
312            new ShortCodeTest("lv", "116117", CATEGORY_FREE_SHORT_CODE),
313            new ShortCodeTest("lv", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
314            new ShortCodeTest("lv", "1819", CATEGORY_PREMIUM_SHORT_CODE),
315            new ShortCodeTest("lv", "1863", CATEGORY_PREMIUM_SHORT_CODE),
316            new ShortCodeTest("lv", "1874", CATEGORY_PREMIUM_SHORT_CODE),
317            new ShortCodeTest("lv", "98765", CATEGORY_NOT_SHORT_CODE),
318
319            new ShortCodeTest("mx", "112", CATEGORY_NOT_SHORT_CODE),
320            new ShortCodeTest("mx", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
321            new ShortCodeTest("mx", "7766", CATEGORY_PREMIUM_SHORT_CODE),
322            new ShortCodeTest("mx", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
323            new ShortCodeTest("mx", "53035", CATEGORY_PREMIUM_SHORT_CODE),
324
325            new ShortCodeTest("my", "112", CATEGORY_NOT_SHORT_CODE),
326            new ShortCodeTest("my", "1234", CATEGORY_NOT_SHORT_CODE),
327            new ShortCodeTest("my", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
328            new ShortCodeTest("my", "32298", CATEGORY_PREMIUM_SHORT_CODE),
329            new ShortCodeTest("my", "33776", CATEGORY_PREMIUM_SHORT_CODE),
330            new ShortCodeTest("my", "345678", CATEGORY_NOT_SHORT_CODE),
331
332            new ShortCodeTest("nl", "112", CATEGORY_NOT_SHORT_CODE),
333            new ShortCodeTest("nl", "116117", CATEGORY_FREE_SHORT_CODE),
334            new ShortCodeTest("nl", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
335            new ShortCodeTest("nl", "4466", CATEGORY_PREMIUM_SHORT_CODE),
336            new ShortCodeTest("nl", "5040", CATEGORY_PREMIUM_SHORT_CODE),
337            new ShortCodeTest("nl", "23456", CATEGORY_NOT_SHORT_CODE),
338
339            new ShortCodeTest("no", "112", CATEGORY_NOT_SHORT_CODE),
340            new ShortCodeTest("no", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
341            new ShortCodeTest("no", "2201", CATEGORY_PREMIUM_SHORT_CODE),
342            new ShortCodeTest("no", "2226", CATEGORY_PREMIUM_SHORT_CODE),
343            new ShortCodeTest("no", "2227", CATEGORY_PREMIUM_SHORT_CODE),
344            new ShortCodeTest("no", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
345            new ShortCodeTest("no", "234567", CATEGORY_NOT_SHORT_CODE),
346
347            new ShortCodeTest("nz", "112", CATEGORY_NOT_SHORT_CODE),
348            new ShortCodeTest("nz", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
349            new ShortCodeTest("nz", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
350            new ShortCodeTest("nz", "3903", CATEGORY_PREMIUM_SHORT_CODE),
351            new ShortCodeTest("nz", "8995", CATEGORY_PREMIUM_SHORT_CODE),
352            new ShortCodeTest("nz", "23456", CATEGORY_NOT_SHORT_CODE),
353
354            new ShortCodeTest("pl", "112", CATEGORY_NOT_SHORT_CODE),
355            new ShortCodeTest("pl", "116117", CATEGORY_FREE_SHORT_CODE),
356            new ShortCodeTest("pl", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
357            new ShortCodeTest("pl", "34567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
358            new ShortCodeTest("pl", "7910", CATEGORY_PREMIUM_SHORT_CODE),
359            new ShortCodeTest("pl", "74240", CATEGORY_PREMIUM_SHORT_CODE),
360            new ShortCodeTest("pl", "79866", CATEGORY_PREMIUM_SHORT_CODE),
361            new ShortCodeTest("pl", "92525", CATEGORY_PREMIUM_SHORT_CODE),
362            new ShortCodeTest("pl", "87654321", CATEGORY_NOT_SHORT_CODE),
363
364            new ShortCodeTest("pt", "112", CATEGORY_NOT_SHORT_CODE),
365            new ShortCodeTest("pt", "116117", CATEGORY_FREE_SHORT_CODE),
366            new ShortCodeTest("pt", "61000", CATEGORY_PREMIUM_SHORT_CODE),
367            new ShortCodeTest("pt", "62345", CATEGORY_PREMIUM_SHORT_CODE),
368            new ShortCodeTest("pt", "68304", CATEGORY_PREMIUM_SHORT_CODE),
369            new ShortCodeTest("pt", "69876", CATEGORY_PREMIUM_SHORT_CODE),
370            new ShortCodeTest("pt", "87654321", CATEGORY_NOT_SHORT_CODE),
371
372            new ShortCodeTest("ro", "112", CATEGORY_NOT_SHORT_CODE),
373            new ShortCodeTest("ro", "116117", CATEGORY_FREE_SHORT_CODE),
374            new ShortCodeTest("ro", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
375            new ShortCodeTest("ro", "1263", CATEGORY_PREMIUM_SHORT_CODE),
376            new ShortCodeTest("ro", "1288", CATEGORY_PREMIUM_SHORT_CODE),
377            new ShortCodeTest("ro", "1314", CATEGORY_PREMIUM_SHORT_CODE),
378            new ShortCodeTest("ro", "1380", CATEGORY_PREMIUM_SHORT_CODE),
379            new ShortCodeTest("ro", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
380            new ShortCodeTest("ro", "12345", CATEGORY_NOT_SHORT_CODE),
381
382            new ShortCodeTest("ru", "112", CATEGORY_NOT_SHORT_CODE),
383            new ShortCodeTest("ru", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
384            new ShortCodeTest("ru", "1161", CATEGORY_PREMIUM_SHORT_CODE),
385            new ShortCodeTest("ru", "2097", CATEGORY_PREMIUM_SHORT_CODE),
386            new ShortCodeTest("ru", "3933", CATEGORY_PREMIUM_SHORT_CODE),
387            new ShortCodeTest("ru", "7781", CATEGORY_PREMIUM_SHORT_CODE),
388            new ShortCodeTest("ru", "98765", CATEGORY_NOT_SHORT_CODE),
389
390            new ShortCodeTest("se", "112", CATEGORY_NOT_SHORT_CODE),
391            new ShortCodeTest("se", "116117", CATEGORY_FREE_SHORT_CODE),
392            new ShortCodeTest("se", "1234", CATEGORY_NOT_SHORT_CODE),
393            new ShortCodeTest("se", "72345", CATEGORY_PREMIUM_SHORT_CODE),
394            new ShortCodeTest("se", "72999", CATEGORY_PREMIUM_SHORT_CODE),
395            new ShortCodeTest("se", "123456", CATEGORY_NOT_SHORT_CODE),
396            new ShortCodeTest("se", "87654321", CATEGORY_NOT_SHORT_CODE),
397
398            new ShortCodeTest("sg", "112", CATEGORY_NOT_SHORT_CODE),
399            new ShortCodeTest("sg", "1234", CATEGORY_NOT_SHORT_CODE),
400            new ShortCodeTest("sg", "70000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
401            new ShortCodeTest("sg", "79999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
402            new ShortCodeTest("sg", "73800", CATEGORY_PREMIUM_SHORT_CODE),
403            new ShortCodeTest("sg", "74688", CATEGORY_STANDARD_SHORT_CODE),
404            new ShortCodeTest("sg", "987654", CATEGORY_NOT_SHORT_CODE),
405
406            new ShortCodeTest("si", "112", CATEGORY_NOT_SHORT_CODE),
407            new ShortCodeTest("si", "116117", CATEGORY_FREE_SHORT_CODE),
408            new ShortCodeTest("si", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
409            new ShortCodeTest("si", "3838", CATEGORY_PREMIUM_SHORT_CODE),
410            new ShortCodeTest("si", "72999", CATEGORY_NOT_SHORT_CODE),
411
412            new ShortCodeTest("sk", "112", CATEGORY_NOT_SHORT_CODE),
413            new ShortCodeTest("sk", "116117", CATEGORY_FREE_SHORT_CODE),
414            new ShortCodeTest("sk", "1234", CATEGORY_PREMIUM_SHORT_CODE),
415            new ShortCodeTest("sk", "6674", CATEGORY_PREMIUM_SHORT_CODE),
416            new ShortCodeTest("sk", "7604", CATEGORY_PREMIUM_SHORT_CODE),
417            new ShortCodeTest("sk", "72999", CATEGORY_NOT_SHORT_CODE),
418
419            new ShortCodeTest("tj", "112", CATEGORY_NOT_SHORT_CODE),
420            new ShortCodeTest("tj", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
421            new ShortCodeTest("tj", "1161", CATEGORY_PREMIUM_SHORT_CODE),
422            new ShortCodeTest("tj", "1171", CATEGORY_PREMIUM_SHORT_CODE),
423            new ShortCodeTest("tj", "4161", CATEGORY_PREMIUM_SHORT_CODE),
424            new ShortCodeTest("tj", "4449", CATEGORY_PREMIUM_SHORT_CODE),
425            new ShortCodeTest("tj", "98765", CATEGORY_NOT_SHORT_CODE),
426
427            new ShortCodeTest("ua", "112", CATEGORY_NOT_SHORT_CODE),
428            new ShortCodeTest("ua", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
429            new ShortCodeTest("ua", "4448", CATEGORY_PREMIUM_SHORT_CODE),
430            new ShortCodeTest("ua", "7094", CATEGORY_PREMIUM_SHORT_CODE),
431            new ShortCodeTest("ua", "7540", CATEGORY_PREMIUM_SHORT_CODE),
432            new ShortCodeTest("ua", "98765", CATEGORY_NOT_SHORT_CODE),
433
434            new ShortCodeTest("us", "911", CATEGORY_NOT_SHORT_CODE),
435            new ShortCodeTest("us", "+18005551234", CATEGORY_NOT_SHORT_CODE),
436            new ShortCodeTest("us", "8005551234", CATEGORY_NOT_SHORT_CODE),
437            new ShortCodeTest("us", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
438            new ShortCodeTest("us", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
439            new ShortCodeTest("us", "2000000", CATEGORY_NOT_SHORT_CODE),
440            new ShortCodeTest("us", "20433", CATEGORY_PREMIUM_SHORT_CODE),
441            new ShortCodeTest("us", "21472", CATEGORY_PREMIUM_SHORT_CODE),
442            new ShortCodeTest("us", "23333", CATEGORY_PREMIUM_SHORT_CODE),
443            new ShortCodeTest("us", "99807", CATEGORY_PREMIUM_SHORT_CODE),
444
445            // generic rules for other countries: 5 digits or less considered potential short code
446            new ShortCodeTest("zz", "2000000", CATEGORY_NOT_SHORT_CODE),
447            new ShortCodeTest("zz", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
448            new ShortCodeTest("zz", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
449            new ShortCodeTest("zz", "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
450            new ShortCodeTest("zz", "112", CATEGORY_NOT_SHORT_CODE),
451            new ShortCodeTest(null, "2000000", CATEGORY_NOT_SHORT_CODE),
452            new ShortCodeTest(null, "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
453            new ShortCodeTest(null, "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
454            new ShortCodeTest(null, "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
455            new ShortCodeTest(null, "112", CATEGORY_NOT_SHORT_CODE),
456    };
457
458    @SmallTest
459    public void testSmsUsageMonitor() {
460        SmsUsageMonitor monitor = new SmsUsageMonitor(getContext());
461        for (ShortCodeTest test : sShortCodeTests) {
462            assertEquals("country: " + test.countryIso + " number: " + test.address,
463                    test.category, monitor.checkDestination(test.address, test.countryIso));
464        }
465    }
466}
467