phony 1.9.0 → 2.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. data/README.textile +1 -1
  2. data/lib/phony.rb +28 -15
  3. data/lib/phony/countries.rb +609 -210
  4. data/lib/phony/countries/austria.rb +6 -1
  5. data/lib/phony/countries/bangladesh.rb +55 -0
  6. data/lib/phony/countries/belarus.rb +130 -0
  7. data/lib/phony/countries/georgia.rb +91 -0
  8. data/lib/phony/countries/germany.rb +20 -6
  9. data/lib/phony/countries/india.rb +50 -0
  10. data/lib/phony/countries/indonesia.rb +50 -0
  11. data/lib/phony/countries/italy.rb +38 -67
  12. data/lib/phony/countries/japan.rb +412 -0
  13. data/lib/phony/countries/kyrgyzstan.rb +118 -0
  14. data/lib/phony/countries/latvia.rb +40 -0
  15. data/lib/phony/countries/libya.rb +114 -0
  16. data/lib/phony/countries/malaysia.rb +7 -5
  17. data/lib/phony/countries/moldova.rb +50 -0
  18. data/lib/phony/countries/montenegro.rb +27 -0
  19. data/lib/phony/countries/namibia.rb +35 -0
  20. data/lib/phony/countries/nepal.rb +71 -0
  21. data/lib/phony/countries/netherlands.rb +3 -2
  22. data/lib/phony/countries/pakistan.rb +119 -0
  23. data/lib/phony/countries/paraguay.rb +145 -0
  24. data/lib/phony/countries/russia_kazakhstan_abhasia_south_osetia.rb +6 -6
  25. data/lib/phony/countries/serbia.rb +34 -0
  26. data/lib/phony/countries/somali.rb +22 -0
  27. data/lib/phony/countries/south_korea.rb +1 -1
  28. data/lib/phony/countries/sweden.rb +1 -1
  29. data/lib/phony/countries/taiwan.rb +51 -0
  30. data/lib/phony/countries/tajikistan.rb +76 -0
  31. data/lib/phony/countries/turkmenistan.rb +73 -0
  32. data/lib/phony/countries/ukraine.rb +614 -0
  33. data/lib/phony/countries/uruguay.rb +51 -0
  34. data/lib/phony/countries/zimbabwe.rb +37 -0
  35. data/lib/phony/country.rb +41 -0
  36. data/lib/phony/country_codes.rb +45 -18
  37. data/lib/phony/dsl.rb +33 -7
  38. data/lib/phony/local_splitters/fixed.rb +14 -1
  39. data/lib/phony/local_splitters/regex.rb +12 -1
  40. data/lib/phony/national_code.rb +7 -3
  41. data/lib/phony/national_splitters/default.rb +13 -1
  42. data/lib/phony/national_splitters/dsl.rb +9 -7
  43. data/lib/phony/national_splitters/fixed.rb +6 -0
  44. data/lib/phony/national_splitters/none.rb +6 -0
  45. data/lib/phony/national_splitters/regex.rb +6 -0
  46. data/lib/phony/national_splitters/variable.rb +7 -1
  47. data/spec/lib/phony/countries_spec.rb +684 -16
  48. data/spec/lib/phony/local_splitters/regex_spec.rb +41 -0
  49. data/spec/lib/phony/validations_spec.rb +542 -10
  50. data/spec/lib/phony_spec.rb +20 -6
  51. metadata +29 -9
  52. data/lib/phony/validator.rb +0 -26
  53. data/lib/phony/validators.rb +0 -88
@@ -9,15 +9,17 @@ module Phony
9
9
  #
10
10
  #
11
11
  def >> local_splitter
12
- country_for local_splitter, true
12
+ if local_splitter.respond_to? :split
13
+ country_for local_splitter, true
14
+ else
15
+ local_splitter.national_splitter = self
16
+ local_splitter
17
+ end
13
18
  end
14
19
 
15
- private
16
-
17
- def country_for local_splitter, with_zero
18
- national_code = Phony::NationalCode.new self, local_splitter, with_zero
19
- Phony::Country.new national_code
20
- end
20
+ def country_for local_splitter, with_zero, trunk = '0'
21
+ Phony::Country.new Phony::NationalCode.new(self, local_splitter, with_zero, trunk)
22
+ end
21
23
 
22
24
  end
23
25
 
@@ -30,6 +30,12 @@ module Phony
30
30
  [@zero, national_number.slice!(0...@size), national_number]
31
31
  end
32
32
 
33
+ # A valid length.
34
+ #
35
+ def length
36
+ @size
37
+ end
38
+
33
39
  end
34
40
 
35
41
  end
@@ -39,6 +39,12 @@ module Phony
39
39
  [nil, false, national_number]
40
40
  end
41
41
 
42
+ # A valid length.
43
+ #
44
+ def length
45
+ 0
46
+ end
47
+
42
48
  end
43
49
 
44
50
  end
@@ -42,6 +42,12 @@ module Phony
42
42
  super national_number
43
43
  end
44
44
 
45
+ # A valid length.
46
+ #
47
+ def length
48
+ # raise "#{self.class.name} has no length that can be automatically extracted."
49
+ end
50
+
45
51
  end
46
52
 
47
53
  end
@@ -37,6 +37,12 @@ module Phony
37
37
  super fallback_number
38
38
  end
39
39
 
40
+ # A valid length.
41
+ #
42
+ def length
43
+ (@mapped_ndc_min_length..@mapped_ndc_max_length)
44
+ end
45
+
40
46
  private
41
47
 
42
48
  # def restructure ndc_map
@@ -45,7 +51,7 @@ module Phony
45
51
 
46
52
  # Optimizes and restructures the given ndcs array.
47
53
  #
48
- def optimize(ndc_ary)
54
+ def optimize ndc_ary
49
55
  ndcs = {}
50
56
  ndc_ary.each do |ndc|
51
57
  ndcs[ndc.length] ||= []
@@ -26,6 +26,7 @@ describe 'country descriptions' do
26
26
  it_splits '5491112345678', ['54', '911', '1234', '5678']
27
27
  it_splits '5492201234567', ['54', '9220', '123', '4567']
28
28
  it_splits '5492221123456', ['54', '92221', '12', '3456']
29
+ it_splits '548001234567', ['54', '800', '123', '4567']
29
30
  end
30
31
  describe 'Austria' do
31
32
  it_splits '43198110', ['43', '1', '98110'] # Vienna
@@ -37,6 +38,32 @@ describe 'country descriptions' do
37
38
  it_splits '61512341234', ['61', '5', '1234', '1234'] # Landline
38
39
  it_splits '61423123123', ['61', '423', '123', '123'] # Mobile
39
40
  end
41
+
42
+ describe 'Bahrain' do
43
+ it_splits '97312345678', ['973', false, '1234', '5678']
44
+ end
45
+
46
+ describe 'Bangladesh' do
47
+ it_splits '88021234567', %w(880 2 1234567)
48
+ it_splits '8805112345', %w(880 51 12345)
49
+ it_splits '88031123456', %w(880 31 123456)
50
+ it_splits '88032112345', %w(880 321 12345)
51
+ it_splits '8804311234567', %w(880 431 1234567)
52
+ it_splits '880902012345', %w(880 9020 12345)
53
+ end
54
+
55
+ describe 'Belarus' do
56
+ it_splits '375152123456', %w(375 152 123456)
57
+ it_splits '375151512345', %w(375 1515 12345)
58
+ it_splits '375163423456', %w(375 163 423456)
59
+ it_splits '375163112345', %w(375 1631 12345)
60
+ it_splits '375291234567', %w(375 29 1234567)
61
+ it_splits '375800123', %w(375 800 123)
62
+ it_splits '3758001234', %w(375 800 1234)
63
+ it_splits '3758001234567', %w(375 800 1234567)
64
+ it_splits '37582012345678', %w(375 820 12345678)
65
+ end
66
+
40
67
  describe 'Belgium' do
41
68
  it_splits '3235551212', ['32', '3', '555', '1212'] # Antwerpen
42
69
  it_splits '32505551212', ['32', '50', '555', '1212'] # Brugge
@@ -47,6 +74,27 @@ describe 'country descriptions' do
47
74
  it_splits '32475279584', ['32', '475', '279584'] # mobile
48
75
  it_splits '3270123123', ['32', '70', '123', '123'] # Bus Service?
49
76
  end
77
+
78
+ describe 'Belize' do
79
+ it_splits '5012051234', %w(501 205 1234)
80
+ end
81
+
82
+ describe 'Benin' do
83
+ it_splits '22912345678', ['229', false, '1234', '5678']
84
+ end
85
+
86
+ describe 'Bolivia' do
87
+ it_splits '59122772266', %w(591 2 277 2266)
88
+ end
89
+
90
+ describe 'Botswana' do
91
+ it_splits '26780123456', %w(267 80 123 456)
92
+ it_splits '2672956789', %w(267 29 567 89)
93
+ it_splits '2674634567', %w(267 463 4567)
94
+ it_splits '2675812345', %w(267 58 123 45)
95
+ it_splits '26776712345', %w(267 7 6712 345)
96
+ it_splits '26781234567', %w(267 8 1234 567)
97
+ end
50
98
  describe 'Brazil' do
51
99
  it_splits '551112341234', ['55', '11', '1234', '1234']
52
100
  it_splits '5511981231234', ['55', '11', '9812', '31234'] # São Paulo's 9 digits mobile
@@ -67,6 +115,10 @@ describe 'country descriptions' do
67
115
  it_splits '862112345678', ['86', '21', '1234', '5678'] # Shanghai
68
116
  it_splits '8675582193447', ['86', '755', '8219', '3447'] # Shenzhen
69
117
  end
118
+ describe 'Colombia' do
119
+ it_splits '5711234567', ['57', '1', '123', '4567']
120
+ it_splits '573101234567', ['57', '310', '123', '4567'] # mobile
121
+ end
70
122
  describe 'Croatia' do
71
123
  it_splits '385112312345', ['385', '1', '123', '12345'] # Zagreb
72
124
  it_splits '385491231234', ['385', '49', '123', '1234'] # Krapina
@@ -89,6 +141,10 @@ describe 'country descriptions' do
89
141
  it_splits '20921234567', ['20', '92', '1234567']
90
142
  it_splits '20951234567', ['20', '95', '1234567']
91
143
  end
144
+ describe 'Equatorial Guinea' do
145
+ it_splits '240222201123', ['240', false, '222', '201', '123']
146
+ it_splits '240335201123', ['240', false, '335', '201', '123']
147
+ end
92
148
  describe 'Estonia' do
93
149
  it_splits '3723212345', ['372', '321', '2345'] # Landline
94
150
  it_splits '37251231234', ['372', '5123', '1234'] # Mobile
@@ -96,6 +152,7 @@ describe 'country descriptions' do
96
152
  it_splits '37281231234', ['372', '8123', '1234'] # Mobile
97
153
  it_splits '37282231234', ['372', '8223', '1234'] # Mobile
98
154
  it_splits '37283212345', ['372', '832', '12345'] # Mobile
155
+ it_splits '37270121234', ['372', '7012', '1234'] # Premium
99
156
  end
100
157
  describe 'Finland' do
101
158
  it_splits '3589123123', ['358', '9', '123', '123'] # Helsinki
@@ -107,6 +164,12 @@ describe 'country descriptions' do
107
164
  it_splits '33112345678', ['33', '1', '12','34','56','78'] # Paris
108
165
  it_splits '33812345678', ['33', '8', '12','34','56','78'] # Service number
109
166
  end
167
+ describe 'Georgia' do
168
+ it_splits '99522012345', %w(995 220 123 45)
169
+ it_splits '995321234567', %w(995 32 123 4567)
170
+ it_splits '995342123456', %w(995 342 123 456)
171
+ it_splits '995596123456', %w(995 596 123 456)
172
+ end
110
173
  describe 'Germany' do
111
174
  it_splits '493038625454', ['49', '30', '386', '25454'] # Berlin
112
175
  it_splits '4932221764542', ['49', '32', '221', '764542'] # Non-Geographical
@@ -116,6 +179,9 @@ describe 'country descriptions' do
116
179
  it_splits '493434144602', ['49', '34341', '446', '02'] # Geithain
117
180
  it_splits '491805878323', ['49', '180', '587', '8323'] # Service number
118
181
  it_splits '491815878323', ['49', '181', '587', '8323'] # Service number
182
+ it_splits '4915112312345', ['49', '151', '123', '12345'] # Mobile number
183
+ it_splits '49152112312345',['49', '1521', '123', '12345'] # Mobile number
184
+ it_splits '4916312312345', ['49', '163', '123', '12345'] # Mobile number
119
185
  end
120
186
  describe 'Ghana' do
121
187
  it_splits '233302123456', ['233', '30', '212', '3456'] # Mobile Vodafone, Accra
@@ -132,12 +198,27 @@ describe 'country descriptions' do
132
198
  it_splits '3508012', ['350', '8012', '' ] # Freephone
133
199
  end
134
200
  describe 'Greece' do
135
- it_splits '3021123456', ['30', '21', '123456'] # Athens
136
- it_splits '3069512345', ['30', '695', '12345'] # Mobile
137
- it_splits '302108131234', ['30', '21', '08131234'] # Long mobile, noted by vilcsak in pull request #26.
138
- it_splits '3025941234', ['30', '2594', '1234']
139
- it_splits '3022631234', ['30', '2263', '1234']
201
+ it_splits '302142345678', %w(30 21 4234 5678)
202
+ it_splits '302442345678', %w(30 24 4234 5678)
203
+ it_splits '305034571234', %w(30 50 3457 1234)
204
+ it_splits '306901234567', %w(30 69 0123 4567)
205
+ it_splits '307001234567', %w(30 70 0123 4567)
206
+ it_splits '308001001234', %w(30 800 100 1234)
207
+ it_splits '308011001234', %w(30 801 100 1234)
208
+ it_splits '308071001234', %w(30 807 100 1234)
209
+ it_splits '308961001234', %w(30 896 100 1234)
210
+ it_splits '309011234565', %w(30 901 123 4565)
211
+ it_splits '309091234565', %w(30 909 123 4565)
140
212
  end
213
+
214
+ describe 'Haiti' do
215
+ it_splits '50922121234', ['509', '22', '12', '1234']
216
+ end
217
+
218
+ describe 'Hong Kong' do
219
+ it_splits '85212341234', ['852', false, '1234', '1234'] #
220
+ end
221
+
141
222
  describe 'Hungary' do
142
223
  it_splits'3612345678', ['36', '1', '234', '5678']
143
224
  it_splits'3622123456', ['36', '22', '123', '456']
@@ -149,10 +230,51 @@ describe 'country descriptions' do
149
230
  it_splits '3545511234', ['354', false, '551', '1234'] # Reykjavík
150
231
  end
151
232
  describe 'Indonesia' do
152
- it_splits '6242323032', ['62', '423', '23032']
153
- it_splits '6285220119289', ['62', '852', '20119289']
154
- it_splits '62217815263', ['62', '21', '7815263']
233
+ it_splits '6242323032', ["62", "4", "2323", "032"]
234
+ it_splits '6285220119289', ['62', '852', '2011', '9289']
235
+ it_splits '62217815263', ['62', '21', '7815', '263']
236
+ it_splits '6213123', %w(62 13 123)
237
+ it_splits '6213123456', %w(62 13 123 456)
238
+ it_splits '6217412', %w(62 174 12)
239
+ it_splits '6217412345', %w(62 174 12 345)
240
+ it_splits '6217712', %w(62 177 12)
241
+ it_splits '6217712123456', %w(62 177 1212 3456)
242
+ it_splits '62178123', %w(62 178 123)
243
+ it_splits '6217812345', %w(62 178 123 45)
244
+ it_splits '622112345', %w(62 21 123 45)
245
+ it_splits '622112345567', %w(62 21 1234 5567)
246
+ it_splits '622212345', %w(62 22 123 45)
247
+ it_splits '62221234567', %w(62 22 123 4567)
248
+ it_splits '624311234', %w(62 4 311 234)
249
+ it_splits '62431123456', %w(62 4 3112 3456)
250
+ it_splits '6262212345', %w(62 6 221 2345)
251
+ it_splits '62622123456', %w(62 6 2212 3456)
252
+ it_splits '6270123456', %w(62 70 123 456)
253
+ it_splits '6271123456', %w(62 71 123 456)
254
+ it_splits '62711234567', %w(62 71 123 4567)
255
+ it_splits '62810123456', %w(62 810 123 456)
256
+ it_splits '6281012345678', %w(62 810 1234 5678)
257
+ it_splits '62820123456', %w(62 820 123 456)
258
+ it_splits '6287012345', %w(62 870 123 45)
259
+ it_splits '62877123456', %w(62 877 123 456)
260
+ it_splits '62881123456', %w(62 881 123 456)
261
+ it_splits '6288112345656', %w(62 881 1234 5656)
262
+ it_splits '6291234567', %w(62 9 1234 567)
263
+ it_splits '629123456789', %w(62 9 123 456 789)
264
+ end
265
+
266
+ describe 'India' do
267
+ it_splits '919911182111', ['91', '99', '111', '82', '111'] # mobile
268
+ it_splits '912212345678', ['91', '22', '123', '45', '678'] # New Delhi
269
+ it_splits '911411234567', ['91', '141', '123', '45', '67'] # Jaipur
270
+ it_splits '913525123456', ['91', '3525', '123', '456' ] # DALKHOLA
271
+ end
272
+
273
+ describe 'Iran' do
274
+ it_splits '982112341234', ['98', '21', '1234', '1234'] # Teheran
275
+ it_splits '989191231234', ['98', '919', '123', '1234'] # Example Cell Phone
155
276
  end
277
+
156
278
  describe 'Ireland' do
157
279
  it_splits '35311234567', ['353', '1', '123', '4567'] # Dublin, 7 digit subscriber #
158
280
  it_splits '3532212345', ['353', '22', '12345'] # Mallow, 5 digit subscriber #
@@ -162,16 +284,58 @@ describe 'country descriptions' do
162
284
  it_splits '353800123456', ['353', '800', '123456'] # Freefone
163
285
  it_splits '353000123456', ['353', '000', '123456'] # Default fixed 3 split for unrecognized
164
286
  end
287
+
288
+ describe 'Israel (972)' do
289
+ it_splits '972100', ['972', '1', '00'] # Police
290
+ it_splits '97221231234', ['972', '2', '123', '1234'] # Jerusalem Area
291
+ it_splits '97282411234', ['972', '8', '241', '1234'] # Gaza Strip (Palestine)
292
+ it_splits '97291231234', ['972', '9', '123', '1234'] # Sharon Area
293
+ it_splits '972501231234', ['972', '50', '123', '1234'] # Mobile (Pelephone)
294
+ it_splits '972591231234', ['972', '59', '123', '1234'] # Mobile Jawwal (Palestine)
295
+ it_splits '972771231234', ['972', '77', '123', '1234'] # Cable Phone Services
296
+ it_splits '9721700123123', ['972', '1', '700', '123', '123'] # Cable Phone Services
297
+ end
298
+ describe 'Israel (970)' do
299
+ it_splits '97021231234', ['970', '2', '123', '1234'] # Jerusalem Area
300
+ it_splits '97082411234', ['970', '8', '241', '1234'] # Gaza Strip (Palestine)
301
+ it_splits '97091231234', ['970', '9', '123', '1234'] # Sharon Area
302
+ it_splits '970501231234', ['970', '50', '123', '1234'] # Mobile (Pelephone)
303
+ it_splits '970591231234', ['970', '59', '123', '1234'] # Mobile Jawwal (Palestine)
304
+ it_splits '970771231234', ['970', '77', '123', '1234'] # Cable Phone Services
305
+ it_splits '9701700123123', ['970', '1', '700', '123', '123'] # Cable Phone Services
306
+ end
165
307
  describe 'Italy' do
166
- it_splits '3934869528', ['39', '3486', '952', '8'] # Mobile
308
+ it_splits '3934869528', ['39', '348', '695', '28'] # Mobile
309
+ it_splits '393357210488', ['39', '335', '721', '0488'] # Mobile
167
310
  it_splits '390612341234', ['39', '06', '1234', '1234'] # Roma
311
+ it_splits '390288838883', ['39', '02', '8883', '8883'] # Milano
312
+ it_splits '390141595661', ['39', '0141', '595', '661'] # Asti
313
+ it_splits '3903123391', ['39', '031', '233', '91'] # Como
168
314
  it_splits '390909709511', ['39', '090', '970', '9511'] # Barcellona
169
315
  end
316
+ describe 'Japan' do
317
+ it_splits '81312345678', %w(81 3 1234 5678)
318
+ it_splits '81120123456', %w(81 120 123 456)
319
+ it_splits '81111234567', %w(81 11 1234 567)
320
+ it_splits '81123123456', %w(81 123 123 456)
321
+ it_splits '81126712345', %w(81 1267 123 45)
322
+ it_splits '819012345678', %w(81 90 1234 5678)
323
+ end
170
324
  describe 'Kenya' do
171
325
  it_splits '254201234567', ['254', '20', '1234567'] # Nairobi
172
326
  it_splits '254111234567', ['254', '11', '1234567'] # Mombasa
173
327
  it_splits '254723100220', ['254', '723', '100220'] # Mombasa
174
328
  end
329
+ describe 'Kyrgyzstan' do
330
+ it_splits '996312212345', %w(996 312 212 345)
331
+ it_splits '996315212345', %w(996 315 212 345)
332
+ it_splits '996313121234', %w(996 3131 212 34)
333
+ it_splits '996394621234', %w(996 3946 212 34)
334
+ it_splits '996501234567', %w(996 50 123 4567)
335
+ it_splits '996521234567', %w(996 52 123 4567)
336
+ it_splits '996581234567', %w(996 58 123 4567)
337
+ it_splits '996800123456', %w(996 800 123 456)
338
+ end
175
339
  describe 'Lithuania' do
176
340
  it_splits '37070012123', ['370', '700', '12', '123'] # Service
177
341
  it_splits '37061212123', ['370', '612', '12', '123'] # Mobile
@@ -189,10 +353,13 @@ describe 'country descriptions' do
189
353
  it_splits '35227855', ['352', '27', '85', '5']
190
354
  end
191
355
  describe 'Malaysia' do
192
- it_splits '6082123456', ['60', '82', '123456'] # Kuching
193
- it_splits '60312345678', ['60', '3', '12345678'] # Kuala Lumpur
194
- it_splits '60212345678', ['60', '2', '12345678'] # Singapore
195
- end
356
+ it_splits '6082123456', ['60', '82', '123456'] # Kuching
357
+ it_splits '60312345678', ['60', '3', '12345678'] # Kuala Lumpur
358
+ it_splits '60212345678', ['60', '2', '12345678'] # Singapore
359
+ it_splits '60111231234', ['60', '11', '123', '1234'] # Mobile
360
+ it_splits '60800121234', ['60', '800', '12', '1234'] # Freephone
361
+ # it_splits '60112', ['60', '112'] # Service
362
+ end
196
363
  describe 'Malta' do
197
364
  it_splits '35621231234', ['356', '2123', '1234'] # Fixed
198
365
  it_splits '35677123456', ['356', '77', '123456'] # Mobile
@@ -207,13 +374,30 @@ describe 'country descriptions' do
207
374
  it_splits '37741123456', ['377', '41', '12', '34', '56'] # Mobile
208
375
  it_splits '377612345678', ['377', '6', '12', '34', '56', '78'] # Mobile
209
376
  end
377
+ describe 'Montenegro' do
378
+ it_splits '38280123456', %w(382 80 123 456)
379
+ it_splits '3822012345', %w(382 20 123 45)
380
+ it_splits '38220123456', %w(382 20 123 456)
381
+ it_splits '38232123456', %w(382 32 123 456)
382
+ it_splits '38278103456', %w(382 78 103 456)
383
+ it_splits '38263123', %w(382 63 123)
384
+ it_splits '382631234567890', %w(382 63 123 456 7890)
385
+ it_splits '38277103456', %w(382 77 103 456)
386
+ it_splits '38294103456', %w(382 94 103 456)
387
+ it_splits '38288103456', %w(382 88 103 456)
388
+ it_splits '3826812', %w(382 68 12)
389
+ it_splits '382681212345678', %w(382 68 12 1234 5678)
390
+ it_splits '38270123', %w(382 70 123)
391
+ it_splits '382701234567890', %w(382 70 123 456 7890)
392
+ end
210
393
  describe 'Morocco' do
211
394
  it_splits '212537718685', ['212', '53', '7718', '685']
395
+ it_splits '212612345678', ['212', '6', '12', '34', '56', '78']
212
396
  end
213
397
  describe 'The Netherlands' do
214
- it_splits '31612345678', ['31', '6', '12345678'] # mobile
215
- it_splits '31201234567', ['31', '20', '1234567']
216
- it_splits '31222123456', ['31', '222', '123456']
398
+ it_splits '31612345678', ['31', '6', '12', '34', '56', '78'] # mobile
399
+ it_splits '31201234567', ['31', '20', '123', '4567']
400
+ it_splits '31222123456', ['31', '222', '123', '456']
217
401
  end
218
402
  describe 'Norway' do
219
403
  it_splits '4721234567', ['47',false,'21','23','45','67']
@@ -225,11 +409,34 @@ describe 'country descriptions' do
225
409
  it_splits '4781234567', ['47',false,'812','34','567']
226
410
  it_splits '4791234567', ['47',false,'912','34','567']
227
411
  end
412
+ describe 'Oman' do
413
+ it_splits '96824423123', %w(968 24 423 123)
414
+ it_splits '96825423123', %w(968 25 423 123)
415
+ end
416
+ describe 'Pakistan' do
417
+ it_splits '922112345678', %w(92 21 1234 5678)
418
+ it_splits '92221234567', %w(92 22 1234 567)
419
+ it_splits '92232123456', %w(92 232 123 456)
420
+ it_splits '923012345678', %w(92 30 1234 5678)
421
+ end
422
+ describe 'Paraguay (Republic of)' do
423
+ it_splits '59521123456', %w(595 21 123 456)
424
+ it_splits '595211234567', %w(595 21 123 4567)
425
+ it_splits '595345123456', %w(595 345 123 456)
426
+ it_splits '595961611234', %w(595 96 161 1234)
427
+ end
228
428
  describe 'Peru' do
229
429
  it_splits '51112341234', ['51', '1', '1234', '1234'] # Lima
230
430
  it_splits '51912341234', ['51', '9', '1234', '1234'] # mobile
231
431
  it_splits '51841234123', ['51', '84', '1234', '123'] # Cuzco, best effort
232
432
  end
433
+ describe 'Philippines' do
434
+ it_splits '6321234567', ['63', '2', '1234567']
435
+ it_splits '6321234567890', ['63', '2', '1234567890']
436
+ it_splits '632123456789012', ['63', '2', '123456789012']
437
+ it_splits '639121234567', ['63', '912', '1234567']
438
+ it_splits '63881234567', ['63', '88', '1234567']
439
+ end
233
440
  describe 'Poland' do
234
441
  it_splits '48123456789', ['48', '12', '345', '67', '89'] # Landline
235
442
  it_splits '48501123456', ['48', '501', '123', '456'] # Mobile
@@ -242,6 +449,16 @@ describe 'country descriptions' do
242
449
  it_splits '351241123123', ['351', '241', '123', '123'] # Abrantes
243
450
  it_splits '351931231234', ['351', '93', '123', '1234'] # mobile
244
451
  end
452
+ describe 'Qatar' do
453
+ it_splits '9741245123456', %w(974 1245 123 456)
454
+ it_splits '9742613456', %w(974 26 134 56)
455
+ it_splits '97433123456', %w(974 33 123 456)
456
+ it_splits '97444412456', %w(974 44 412 456)
457
+ it_splits '9748001234', %w(974 800 12 34)
458
+ it_splits '9749001234', %w(974 900 12 34)
459
+ it_splits '97492123', %w(974 92 123)
460
+ it_splits '97497123', %w(974 97 123)
461
+ end
245
462
  describe 'Romania' do
246
463
  it_splits '40211231234', ['40', '21', '123', '1234'] # Bucureşti
247
464
  it_splits '40721231234', ['40', '72', '123', '1234'] # mobile
@@ -263,23 +480,37 @@ describe 'country descriptions' do
263
480
  it_splits '250251234567', ['250', '25', '1234567'] # fixed
264
481
  it_splits '25006123456', ['250', '06', '123456'] # fixed
265
482
  end
483
+ describe 'Sao Tome and Principe' do
484
+ it_splits '2392220012', %w(239 2 220 012)
485
+ it_splits '2399920012', %w(239 9 920 012)
486
+ end
266
487
  describe 'South Korea' do
267
488
  it { Phony.split('82212345678').should == ['82', '2', '1234', '5678'] } # Seoul
268
489
  it { Phony.split('825112345678').should == ['82', '51', '1234', '5678'] } # Busan
269
490
  it { Phony.split('821027975588').should == ['82', '10', '2797', '5588'] } # mobile
270
491
  it { Phony.split('821087971234').should == ['82', '10', '8797', '1234'] } # mobile
271
492
  end
493
+ describe 'South Sudan' do
494
+ it_splits '211123212345', ['211', '123', '212', '345']
495
+ it_splits '211973212345', ['211', '973', '212', '345']
496
+ end
272
497
  describe 'Sudan' do
273
498
  it_splits '249187171100', ['249', '18', '717', '1100']
274
499
  end
275
500
  describe 'Thailand' do
276
501
  it { Phony.split('6621231234').should == ['66', '2', '123', '1234'] } # Bangkok
277
502
  it { Phony.split('6636123123').should == ['66', '36', '123', '123'] } # Lop Buri
503
+ it { Phony.split('66851234567').should == ['66', '851', '234', '567'] } # Lop Buri
278
504
  end
279
505
  describe 'Tunesia' do
280
506
  it { Phony.split('21611231234').should == ['216', '1', '123', '1234'] } # Ariana
281
507
  it { Phony.split('21621231234').should == ['216', '2', '123', '1234'] } # Bizerte
282
508
  end
509
+ describe 'Salvador (El)' do
510
+ it { Phony.split('50321121234').should == ['503', '2112', '1234'] } # Fixed number
511
+ it { Phony.split('50361121234').should == ['503', '6112', '1234'] } # Mobile number
512
+ end
513
+
283
514
  describe 'Singapore' do
284
515
  it { Phony.split('6561231234').should == ['65', false, '6123', '1234'] } # Fixed line
285
516
  end
@@ -288,9 +519,15 @@ describe 'country descriptions' do
288
519
  it { Phony.split('421212345678').should == ['421', '2', '12345678'] } # Bratislava
289
520
  it { Phony.split('421371234567').should == ['421', '37', '1234567'] } # Nitra / Other
290
521
  end
522
+
523
+ describe 'Sri Lanka' do
524
+ it { Phony.split('94711231212').should == ['94', '71', '123', '12', '12'] } # Mobile
525
+ end
526
+
291
527
  describe 'Sweden' do
292
528
  it { Phony.split('46812345678').should == ['46', '8', '12345678'] } # Stockholm
293
529
  it { Phony.split('46111234567').should == ['46', '11', '1234567'] }
530
+ it { Phony.split('46721234567').should == ['46', '72', '1234567'] } # mobile
294
531
  it { Phony.split('46125123456').should == ['46', '125', '123456'] }
295
532
  end
296
533
  describe 'Switzerland' do
@@ -356,6 +593,437 @@ describe 'country descriptions' do
356
593
  describe 'New Zealand' do
357
594
  it { Phony.split('6491234567').should == ['64', '9', '123', '4567'] }
358
595
  end
596
+ describe 'Bhutan (Kingdom of)' do
597
+ it_splits '9759723642', %w(975 9 723 642)
598
+ end
599
+ describe 'Brunei Darussalam' do
600
+ it_splits '6737932744', %w(673 7 932 744)
601
+ end
602
+ describe 'Burkina Faso' do
603
+ it_splits '22667839323', ['226', false, '6783', '9323']
604
+ end
605
+ describe 'Burundi' do
606
+ it_splits '25712345678', ['257', false, '1234', '5678']
607
+ end
608
+ describe 'Cameroon' do
609
+ it_splits '23727659381', ['237', false, '2765', '9381']
610
+ end
611
+ describe 'Cape Verde' do
612
+ it_splits '2385494177', ['238', false, '549', '4177']
613
+ end
614
+ describe 'Central African Republic' do
615
+ it_splits '23612345678', ['236', false, '1234', '5678']
616
+ end
617
+ describe 'Chad' do
618
+ it_splits '23512345678', ['235', false, '1234', '5678']
619
+ end
620
+ describe 'Comoros' do
621
+ it_splits '2693901234', ['269', false, '3901', '234']
622
+ it_splits '2693401234', ['269', false, '3401', '234']
623
+ end
624
+ describe 'Congo' do
625
+ it_splits '242123456789', ['242', false, '1234', '56789']
626
+ end
627
+ describe 'Cook Islands' do
628
+ it_splits '68251475', ['682', false, '51', '475']
629
+ end
630
+ describe 'Costa Rica' do
631
+ it_splits '50622345678', %w(506 2 234 5678)
632
+ end
633
+ describe "Côte d'Ivoire" do
634
+ it_splits '22537335518', ['225', false, '3733', '5518']
635
+ end
636
+ describe 'Democratic Republic of Timor-Leste' do
637
+ it_splits '6701742945', ['670', false, '174', '2945']
638
+ end
639
+ describe 'Democratic Republic of the Congo' do
640
+ it_splits '24311995381', %w(243 1 199 5381)
641
+ end
642
+ describe 'Diego Garcia' do
643
+ it_splits '2461234683', ['246', false, '123', '4683']
644
+ end
645
+ describe 'Djibouti' do
646
+ it_splits '25349828978', ['253', false, '4982', '8978']
647
+ end
648
+ describe 'Ecuador' do
649
+ it_splits '593445876756', %w(593 44 587 6756)
650
+ end
651
+ describe 'Eritrea' do
652
+ it_splits '2916537192', %w(291 6 537 192)
653
+ end
654
+ describe 'Ethiopia' do
655
+ it_splits '251721233486', %w(251 72 123 3486)
656
+ end
657
+ describe 'Falkland Islands (Malvinas)' do
658
+ it_splits '50014963', ['500', false, '14', '963']
659
+ end
660
+ describe 'Faroe Islands' do
661
+ it_splits '298997986', ['298', false, '997', '986']
662
+ end
663
+ describe 'Fiji (Republic of)' do
664
+ it_splits '6798668123', ['679', false, '866', '8123']
665
+ end
666
+ describe 'French Guiana (French Department of)' do
667
+ it_splits '594594123456', %w(594 594 123 456)
668
+ end
669
+ describe "French Polynesia (Territoire français d'outre-mer)" do
670
+ it_splits '689219889', ['689', false, '219', '889']
671
+ end
672
+ describe 'Gabonese Republic' do
673
+ it_splits '2411834375', ['241', '1', '834', '375']
674
+ end
675
+ describe 'Gambia' do
676
+ it_splits '2206683355', ['220', false, '668', '3355']
677
+ end
678
+ describe 'Greenland' do
679
+ it_splits '299314185', ['299', '31', '4185']
680
+ it_splits '299691123', ['299', '691', '123']
681
+ end
682
+ describe 'Guadeloupe (French Department of)' do
683
+ it_splits '590123456789', %w(590 123 456 789)
684
+ end
685
+ describe 'Guatemala (Republic of)' do
686
+ it_splits '50219123456789', ['502', '19', '123', '456', '789']
687
+ it_splits '50221234567', ['502', '2', '123', '4567']
688
+ end
689
+ describe 'Guinea' do
690
+ it_splits '22412345678', ['224', false, '1234', '5678']
691
+ end
692
+ describe 'Guinea-Bissau' do
693
+ it_splits '2453837652', ['245', false, '383', '7652']
694
+ end
695
+ describe 'Guyana' do
696
+ it_splits '5922631234', %w(592 263 1234)
697
+ end
698
+ describe 'Honduras (Republic of)' do
699
+ it_splits '50412961637', %w(504 12 961 637)
700
+ end
701
+ describe 'Iraq' do
702
+ it_splits '96411234567', %w(964 1 123 4567)
703
+ it_splits '96421113456', %w(964 21 113 456)
704
+ it_splits '9647112345678', %w(964 71 1234 5678)
705
+ end
706
+ describe 'Jordan (Hashemite Kingdom of)' do
707
+ it_splits '96280012345', %w(962 800 123 45)
708
+ it_splits '96226201234', %w(962 2 620 1234)
709
+ it_splits '962712345678', %w(962 7 1234 5678)
710
+ it_splits '962746612345', %w(962 7 4661 2345)
711
+ it_splits '96290012345', %w(962 900 123 45)
712
+ it_splits '96285123456', %w(962 85 123 456)
713
+ it_splits '96270123456', %w(962 70 123 456)
714
+ it_splits '96262501456', %w(962 6250 1456)
715
+ it_splits '96287901456', %w(962 8790 1456)
716
+ end
717
+ describe 'Kiribati (Republic of)' do
718
+ it_splits '68634814', ['686', false, '34', '814']
719
+ end
720
+ describe "Democratic People's Republic of Korea" do
721
+ it_splits '850212345', %w(850 2 123 45)
722
+ it_splits '8502123456789', %w(850 2 123 456 789)
723
+ it_splits '85023812356', %w(850 2 381 2356)
724
+ #it_splits '85028801123456781256', %w(850 2 8801 1234 5678 1256)
725
+ it_splits '8501911234567', %w(850 191 123 4567)
726
+ end
727
+ describe 'Kuwait (State of)' do
728
+ it_splits '96523456789', ['965', false, '2345', '6789']
729
+ it_splits '9651812345', ['965', false, '181', '2345']
730
+ end
731
+ describe "Lao People's Democratic Republic" do
732
+ it_splits '85697831195', %w(856 97 831 195)
733
+ end
734
+ describe 'Latvia' do
735
+ it_splits '37180123456', %w(371 801 234 56)
736
+ it_splits '37163723456', %w(371 637 234 56)
737
+ it_splits '37129412345', %w(371 294 123 45)
738
+ end
739
+ describe 'Lebanon' do
740
+ it_splits '9611123456', %w(961 1 123 456)
741
+ it_splits '9614123456', %w(961 4 123 456)
742
+ it_splits '9613123456', %w(961 3 123 456)
743
+ it_splits '96170123456', %w(961 70 123 456)
744
+ it_splits '96190123456', %w(961 90 123 456)
745
+ it_splits '96181123456', %w(961 81 123 456)
746
+ end
747
+ describe 'Lesotho' do
748
+ it_splits '26623592495', ['266', false, '2359', '2495']
749
+ end
750
+ describe 'Liberia' do
751
+ it_splits '23121234567', ['231', false, '2123', '4567']
752
+ it_splits '2314123456', ['231', false, '4123', '456']
753
+ end
754
+ describe 'Libya' do
755
+ it_splits '21820512345', %w(218 205 123 45)
756
+ it_splits '21822123456', %w(218 22 123 456)
757
+ it_splits '218211234456', %w(218 21 1234 456)
758
+ it_splits '218911234456', %w(218 91 1234 456)
759
+ end
760
+ describe 'Madagascar' do
761
+ it_splits '26120012345678', ['261', false, '20', '012', '345', '678']
762
+ it_splits '261201243456', ['261', false, *%w(20 124 3456)]
763
+ it_splits '261512345678', ['261', false, *%w(512 345 678)]
764
+ end
765
+ describe 'Malawi' do
766
+ it_splits '2651725123', ['265', false, '1725', '123']
767
+ it_splits '265213456789',[ '265', false, '213', '456', '789']
768
+ it_splits '2659123456', ['265', false, '9123', '456']
769
+ it_splits '265991123456', ['265', false, '991', '123', '456']
770
+ end
771
+ describe 'Maldives (Republic of)' do
772
+ it_splits '9606568279', ['960', '656', '8279']
773
+ end
774
+ describe 'Mali' do
775
+ it_splits '22379249349', ['223', false, '7924', '9349']
776
+ end
777
+ describe 'Marshall Islands (Republic of the)' do
778
+ it_splits '6924226536', ['692', false, '422', '6536']
779
+ end
780
+ describe 'Martinique (French Department of)' do
781
+ it_splits '596596123456', %w(596 596 123 456)
782
+ end
783
+ describe 'Mauritania' do
784
+ it_splits '22212345678', ['222', false, '1234', '5678']
785
+ end
786
+ describe 'Mauritius' do
787
+ it_splits '2309518919', ['230', false, '951', '8919']
788
+ end
789
+ describe 'Micronesia (Federated States of)' do
790
+ it_splits '6911991754', ['691', false, '199', '1754']
791
+ end
792
+ describe 'Moldova' do
793
+ it_splits '37380012345', %w(373 800 123 45)
794
+ it_splits '37322123345', %w(373 22 123 345)
795
+ it_splits '37324112345', %w(373 241 123 45)
796
+ it_splits '37360512345', %w(373 605 123 45)
797
+ it_splits '37380312345', %w(373 803 123 45)
798
+ end
799
+ describe 'Mongolia' do
800
+ it_splits '9761112345', %w(976 11 123 45)
801
+ it_splits '9761211234', %w(976 121 12 34)
802
+ it_splits '97612112345', %w(976 121 12 345)
803
+ it_splits '97670123456', %w(976 70 123 456)
804
+ it_splits '97675123456', %w(976 75 123 456)
805
+ it_splits '97688123456', %w(976 88 123 456)
806
+ it_splits '97650123456', %w(976 50 123 456)
807
+ end
808
+ describe 'Mozambique' do
809
+ it_splits '258600123456', %w(258 600 123 456)
810
+ it_splits '25825112345', %w(258 251 123 45)
811
+ it_splits '258821234456', %w(258 82 1234 456)
812
+ it_splits '258712344567', %w(258 7 1234 4567)
813
+ end
814
+ describe 'Namibia' do
815
+ it_splits '264675161324', %w(264 6751 613 24)
816
+ it_splits '26467175890', %w(264 67 175 890)
817
+ it_splits '26463088612345', %w(264 63 088 612 345)
818
+ it_splits '264851234567', %w(264 85 1234 567)
819
+ end
820
+ describe 'Nauru (Republic of)' do
821
+ it_splits '6741288739', ['674', false, '128', '8739']
822
+ end
823
+ describe 'Nepal' do
824
+ it_splits '97714345678', %w(977 1 434 5678)
825
+ it_splits '97710123456', %w(977 10 123 456)
826
+ it_splits '9779812345678', %w(977 98 1234 5678)
827
+ end
828
+ describe "New Caledonia (Territoire français d'outre-mer)" do
829
+ it_splits '687747184', ['687', false, '747', '184']
830
+ end
831
+ describe 'Nicaragua' do
832
+ it_splits '50512345678', ['505', '12', '345', '678']
833
+ end
834
+ describe 'Niger' do
835
+ it_splits '22712345678', ['227', false, '1234', '5678']
836
+ end
837
+ describe 'Niue' do
838
+ it_splits '6833651', ['683', false, '3651']
839
+ end
840
+ describe 'Palau (Republic of)' do
841
+ it_splits '6804873653', ['680', false, '487', '3653']
842
+ end
843
+ describe 'Panama (Republic of)' do
844
+ it_splits '5078001234', %w(507 800 1234)
845
+ it_splits '50761234567', %w(507 6 123 4567)
846
+ it_splits '5072123456', %w(507 2 123 456)
847
+ end
848
+ describe 'Papua New Guinea' do
849
+ it_splits '6753123567', %w(675 3 123 567)
850
+ it_splits '6751801234', %w(675 180 1234)
851
+ it_splits '67580123456', %w(675 80 123 456)
852
+ it_splits '67591123456', %w(675 91 123 456)
853
+ it_splits '6751612345', %w(675 16 123 45)
854
+ it_splits '67518412345678', %w(675 184 1234 5678)
855
+ it_splits '67517012', %w(675 170 12)
856
+ it_splits '6751891', %w(675 189 1)
857
+ it_splits '6752701234', %w(675 270 1234)
858
+ it_splits '6752751234', %w(675 275 1234)
859
+ it_splits '67527912', %w(675 279 12)
860
+ it_splits '67511512345678', %w(675 115 1234 5678)
861
+ end
862
+ describe 'Reunion / Mayotte (new)' do
863
+ it_splits '2625943992657', ['262', false, '59439', '92657']
864
+ end
865
+ describe 'Saint Helena' do
866
+ it_splits '2903614', ['290', false, '3614']
867
+ end
868
+ describe 'Saint Pierre and Miquelon (Collectivité territoriale de la République française)' do
869
+ it_splits '508418826', ['508', false, '418', '826']
870
+ end
871
+ describe 'Samoa (Independent State of)' do
872
+ it_splits '685800123', ['685', false, '800', '123']
873
+ it_splits '68561123', ['685', false, '61', '123']
874
+ it_splits '6857212345', ['685', false, '721', '2345']
875
+ it_splits '685830123', ['685', false, '830', '123']
876
+ it_splits '685601234', ['685', false, '601', '234']
877
+ it_splits '6858412345', ['685', false, '841', '2345']
878
+ end
879
+ describe 'San Marino' do
880
+ it_splits '378800123', ['378', false, '800', '123']
881
+ it_splits '3788001234567', ['378', false, '800', '123', '4567']
882
+ it_splits '378012345', ['378', false, '012', '345']
883
+ it_splits '3780123456789', ['378', false, '012', '345', '6789']
884
+ it_splits '378512345', ['378', false, '512', '345']
885
+ it_splits '3785123456789', ['378', false, '512', '345', '6789']
886
+ end
887
+ describe 'Saudi Arabia (Kingdom of)' do
888
+ it_splits '96628528423', %w(966 2 852 8423)
889
+ end
890
+ describe 'Senegal' do
891
+ it_splits '221123456789', ['221', false, '1234', '56789']
892
+ end
893
+ describe 'Serbia' do
894
+ it_splits '38180012345', %w(381 800 123 45)
895
+ it_splits '3811012345', %w(381 10 123 45)
896
+ it_splits '38110123456', %w(381 10 123 456)
897
+ it_splits '38111123456', %w(381 11 123 456)
898
+ it_splits '381111234567', %w(381 11 123 4567)
899
+ it_splits '381721234567', %w(381 72 123 4567)
900
+ it_splits '38160123', %w(381 60 123)
901
+ it_splits '381601234567', %w(381 60 123 4567)
902
+ it_splits '38142123456', %w(381 42 123 456)
903
+ it_splits '38191234567', %w(381 9 123 4567)
904
+ it_splits '38160123', %w(381 60 123)
905
+ it_splits '381601234567890', %w(381 60 123 456 7890)
906
+ it_splits '38170123456', %w(381 70 123 456)
907
+ end
908
+ describe 'Sierra Leone' do
909
+ it_splits '23264629769', %w(232 64 629 769)
910
+ end
911
+ describe 'Solomon Islands' do
912
+ it_splits '67754692', ['677', false, '54', '692']
913
+ it_splits '6777546921', ['677', false, '7546', '921']
914
+ end
915
+ describe 'Somali Democratic Republic' do
916
+ it_splits '252103412345', %w(252 1034 123 45)
917
+ it_splits '2521313123', %w(252 1313 123)
918
+ it_splits '2521601234', %w(252 160 12 34)
919
+ it_splits '25250012345', %w(252 500 123 45)
920
+ it_splits '252671234567', %w(252 67 1234 567)
921
+ end
922
+ describe 'Suriname (Republic of)' do
923
+ it_splits '597958434', ['597', false, '958', '434']
924
+
925
+ it_splits '597212345', ['597', false, '212', '345']
926
+ it_splits '5976123456', ['597', false, '612', '3456']
927
+ end
928
+ describe 'Swaziland' do
929
+ it_splits '26822071234', ['268', false, '2207', '1234']
930
+ it_splits '2685501234', ['268', false, '550', '1234']
931
+ end
932
+ describe 'Syrian Arab Republic' do
933
+ it_splits '963111234567', %w(963 11 123 4567)
934
+ it_splits '963311234567', %w(963 31 123 4567)
935
+ it_splits '96315731234', %w(963 15 731 234)
936
+ it_splits '963912345678', %w(963 9 1234 5678)
937
+ end
938
+ describe 'Taiwan' do
939
+ it_splits '88618123456', %w(886 18 123 456)
940
+ it_splits '8866121234567', %w(886 612 123 4567)
941
+ it_splits '886212345678', %w(886 2 1234 5678)
942
+ it_splits '88631234567', %w(886 3 123 4567)
943
+ it_splits '88633123456', %w(886 33 123 456)
944
+ it_splits '88682712345', %w(886 827 123 45)
945
+ it_splits '8864121234', %w(886 412 1234)
946
+ it_splits '88690123456', %w(886 90 123 456)
947
+ it_splits '886901234567', %w(886 90 123 4567)
948
+ it_splits '88694991345', %w(886 94 991 345)
949
+ end
950
+ describe 'Togolese Republic' do
951
+ it_splits '22812345678', ['228', false, '1234', '5678']
952
+ end
953
+ describe 'Tajikistan' do
954
+ it_splits '992313012345', %w(992 3130 123 45)
955
+ it_splits '992331700123', %w(992 331700 123)
956
+ it_splits '992372123345', %w(992 372 123 345)
957
+ it_splits '992505123456', %w(992 505 123 456)
958
+ it_splits '992973123456', %w(992 973 123 456)
959
+ it_splits '992474456123', %w(992 474 456 123)
960
+ end
961
+ describe 'Tokelau' do
962
+ it_splits '6901371', %w(690 1 371)
963
+ end
964
+ describe 'Tonga (Kingdom of)' do
965
+ it_splits '67620123', ['676', false, '20', '123']
966
+ it_splits '67684123', ['676', false, '84', '123']
967
+ it_splits '6767712345', ['676', false, '77', '123', '45']
968
+ it_splits '6768912345', ['676', false, '89', '123', '45']
969
+ end
970
+ describe 'Tuvalu' do
971
+ it_splits '68893741', ['688', false, '93741']
972
+ end
973
+ describe 'Turkmenistan' do
974
+ it_splits '99312456789', %w(993 12 456 789)
975
+ it_splits '99313145678', %w(993 131 456 78)
976
+ it_splits '99313924567', %w(993 1392 4567)
977
+ it_splits '99361234567', %w(993 6 123 4567)
978
+ end
979
+ describe 'Ukraine' do
980
+ it_splits '380800123456', %w(380 800 123 456)
981
+ it_splits '380312123456', %w(380 312 123 456)
982
+ it_splits '380320123456', %w(380 32 0123 456)
983
+ it_splits '380325912345', %w(380 3259 123 45)
984
+ it_splits '380326061234', %w(380 32606 1234)
985
+ it_splits '380981234567', %w(380 981 234 567)
986
+ end
987
+ describe 'United Arab Emirates' do
988
+ it_splits '97180012', %w(971 800 12)
989
+ it_splits '971800123456789', %w(971 800 12 345 6789)
990
+ it_splits '97121234567', %w(971 2 123 4567)
991
+ it_splits '971506412345', %w(971 50 641 2345)
992
+ it_splits '971600641234', %w(971 600 641 234)
993
+ it_splits '971500641234', %w(971 500 641 234)
994
+ it_splits '971200641234', %w(971 200 641 234)
995
+ end
996
+ describe 'Uruguay (Eastern Republic of)' do
997
+ it_splits '59880012345', %w(598 800 123 45)
998
+ it_splits '59820123456', %w(598 2 012 3456)
999
+ it_splits '59821123456', %w(598 21 123 456)
1000
+ it_splits '59890912345', %w(598 909 123 45)
1001
+ it_splits '59893123456', %w(598 93 123 456)
1002
+ it_splits '59890812345', %w(598 908 123 45)
1003
+ it_splits '59880512345', %w(598 805 123 45)
1004
+ end
1005
+ describe 'Uzbekistan (Republic of)' do
1006
+ it_splits '998433527869', %w(998 43 352 7869)
1007
+ end
1008
+ describe 'Vanuatu (Republic of)' do
1009
+ it_splits '67889683', ['678', false, '89', '683']
1010
+ end
1011
+ describe 'Yemen' do
1012
+ it_splits '9671234567', %w(967 1 234 567)
1013
+ it_splits '96712345678', %w(967 1 234 5678)
1014
+ it_splits '9677234567', %w(967 7 234 567)
1015
+ it_splits '967771234567', %w(967 77 123 4567)
1016
+ it_splits '967581234', %w(967 58 1234)
1017
+ end
1018
+ describe 'Zimbabwe' do
1019
+ it_splits '2632582123456', %w(263 2582 123 456)
1020
+ it_splits '2632582123', %w(263 2582 123)
1021
+ it_splits '263147123456', %w(263 147 123 456)
1022
+ it_splits '263147123', %w(263 147 123)
1023
+ it_splits '263270123456', %w(263 270 123 456)
1024
+ it_splits '26327012345', %w(263 270 123 45)
1025
+ it_splits '2638612354567', %w(263 86 1235 4567)
1026
+ end
359
1027
  end
360
1028
 
361
1029
  end