phonie 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/.gitignore +1 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +10 -0
  4. data/LICENSE +20 -0
  5. data/Rakefile +13 -0
  6. data/Readme.rdoc +153 -0
  7. data/lib/phonie.rb +7 -0
  8. data/lib/phonie/country.rb +120 -0
  9. data/lib/phonie/data/phone_countries.yml +1683 -0
  10. data/lib/phonie/phone.rb +215 -0
  11. data/lib/phonie/support.rb +78 -0
  12. data/lib/phonie/version.rb +3 -0
  13. data/phonie.gemspec +18 -0
  14. data/test/countries/ae_test.rb +15 -0
  15. data/test/countries/af_test.rb +12 -0
  16. data/test/countries/al_test.rb +12 -0
  17. data/test/countries/ar_test.rb +12 -0
  18. data/test/countries/at_test.rb +14 -0
  19. data/test/countries/au_test.rb +48 -0
  20. data/test/countries/ba_test.rb +9 -0
  21. data/test/countries/bd_test.rb +17 -0
  22. data/test/countries/be_test.rb +120 -0
  23. data/test/countries/bg_test.rb +13 -0
  24. data/test/countries/bo_test.rb +12 -0
  25. data/test/countries/br_test.rb +12 -0
  26. data/test/countries/bt_test.rb +9 -0
  27. data/test/countries/by_test.rb +12 -0
  28. data/test/countries/bz_test.rb +12 -0
  29. data/test/countries/ca_test.rb +20 -0
  30. data/test/countries/cr_test.rb +12 -0
  31. data/test/countries/cy_test.rb +12 -0
  32. data/test/countries/cz_test.rb +12 -0
  33. data/test/countries/de_test.rb +18 -0
  34. data/test/countries/dk_test.rb +12 -0
  35. data/test/countries/dz_test.rb +12 -0
  36. data/test/countries/ec_test.rb +12 -0
  37. data/test/countries/ee_test.rb +12 -0
  38. data/test/countries/eg_test.rb +9 -0
  39. data/test/countries/et_test.rb +11 -0
  40. data/test/countries/fi_test.rb +12 -0
  41. data/test/countries/fr_test.rb +22 -0
  42. data/test/countries/gb_test.rb +262 -0
  43. data/test/countries/ge_test.rb +12 -0
  44. data/test/countries/gh_test.rb +9 -0
  45. data/test/countries/gr_test.rb +9 -0
  46. data/test/countries/gt_test.rb +12 -0
  47. data/test/countries/gu_test.rb +9 -0
  48. data/test/countries/gy_test.rb +9 -0
  49. data/test/countries/hr_test.rb +75 -0
  50. data/test/countries/hu_test.rb +12 -0
  51. data/test/countries/il_test.rb +12 -0
  52. data/test/countries/in_test.rb +45 -0
  53. data/test/countries/ir_test.rb +13 -0
  54. data/test/countries/ke_test.rb +12 -0
  55. data/test/countries/lk_test.rb +9 -0
  56. data/test/countries/ng_test.rb +9 -0
  57. data/test/countries/nl_test.rb +383 -0
  58. data/test/countries/no_test.rb +12 -0
  59. data/test/countries/np_test.rb +15 -0
  60. data/test/countries/ph_test.rb +9 -0
  61. data/test/countries/pk_test.rb +9 -0
  62. data/test/countries/pt_test.rb +129 -0
  63. data/test/countries/qa_test.rb +9 -0
  64. data/test/countries/rs_test.rb +15 -0
  65. data/test/countries/sa_test.rb +9 -0
  66. data/test/countries/se_test.rb +478 -0
  67. data/test/countries/si_test.rb +19 -0
  68. data/test/countries/sv_test.rb +12 -0
  69. data/test/countries/to_test.rb +12 -0
  70. data/test/countries/ua_test.rb +17 -0
  71. data/test/countries/us_test.rb +24 -0
  72. data/test/countries/uy_test.rb +20 -0
  73. data/test/countries/za_test.rb +19 -0
  74. data/test/countries/zw_test.rb +12 -0
  75. data/test/country_test.rb +27 -0
  76. data/test/extension_test.rb +30 -0
  77. data/test/phone_test.rb +137 -0
  78. data/test/test_helper.rb +37 -0
  79. data/test_usa_phones_with_extensions.csv +99 -0
  80. metadata +130 -0
@@ -0,0 +1,12 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Norway
4
+ class NOTest < Phonie::TestCase
5
+ def test_local
6
+ parse_test('+4737123456', '47', "37", '123456', 'Norway', false)
7
+ end
8
+
9
+ def test_mobile
10
+ parse_test('+4741234567', '47', '4', '1234567', 'Norway', true)
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Nepal
4
+ class NPTest < Phonie::TestCase
5
+ def test_local
6
+ parse_test('9779812345678', '977', '98', '12345678', "Nepal", true)
7
+ parse_test('97711234567', '977', '1', '1234567', "Nepal", false)
8
+ parse_test('97761123456', '977', '61', '123456')
9
+ # TODO: Enforce number lengths, as many countries have variable area code lengths, but the total number lenght is always the same
10
+ phone = Phonie::Phone.parse("977611234567")
11
+ assert_nil phone
12
+ phone = Phonie::Phone.parse("9771123456")
13
+ assert_nil phone
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Philippines
4
+ class PHTest < Phonie::TestCase
5
+ def test_local
6
+ parse_test('639164285503', '63', '916', '4285503', "Philippines", true)
7
+ parse_test('63364285503', '63', '36', '4285503', "Philippines", false)
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Pakistan
4
+ class PKTest < Phonie::TestCase
5
+ def test_local
6
+ parse_test('92627414433', '92', '62', '7414433', "Pakistan", false)
7
+ parse_test('923627414433', '92', '362', '7414433', "Pakistan", true)
8
+ end
9
+ end
@@ -0,0 +1,129 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Portugal
4
+ # source 1: http://pt.wikipedia.org/wiki/N%C3%BAmeros_de_telefone_em_Portugal
5
+ # source 2: http://www.anacom.pt/render.jsp?categoryId=279035
6
+
7
+ class PTTest < Phonie::TestCase
8
+
9
+ ### Prefixes followed by corresponding tests
10
+
11
+ ## 01-09: reserved for future use
12
+ ## 1: Short Numbers
13
+
14
+ ## 2: Landline / fixed numbers
15
+
16
+ ## two digits landlines
17
+ # 21: Lisbon (Lisboa)
18
+ def test_lisbon
19
+ parse_test('+351 21 123 4567', '351', '21', '1234567')
20
+ end
21
+ # 22: Oporto (Porto)
22
+ def test_oporto
23
+ parse_test('+351 22 123 4567', '351', '22', '1234567')
24
+ end
25
+
26
+ ## three digits landlines
27
+ # 231: Mealhada
28
+ def test_mealhada
29
+ parse_test('+351 231 123456', '351', '231', '123456')
30
+ end
31
+
32
+ # 232-295 (Viseu - Angra do Heroismo)
33
+ def test_viseu
34
+ parse_test('+351 232 123456', '351', '232', '123456')
35
+ end
36
+ def test_angra
37
+ parse_test('+351 295 123456', '351', '295', '123456')
38
+ end
39
+
40
+ # 296: Ponta Delgada
41
+ def test_pontadelgada
42
+ parse_test('+351 296 123456', '351', '296', '123456')
43
+ end
44
+
45
+ ## 3: Nomad services
46
+ ## 4: Not used
47
+ ## 5: Free
48
+ ## 6: Audiotext service, data network access...
49
+
50
+ ## 7: Premium numbers ("Universal access numbers")
51
+
52
+ # 707-708: Premium Numbers
53
+ def test_707
54
+ Phonie::Phone.default_country_code = '351'
55
+ parse_test('707 123 456', '351', '707', '123456')
56
+ end
57
+
58
+ ## 8: Free toll numbers
59
+
60
+ # 800: Numero verde ("Green Number")
61
+ def test_800
62
+ Phonie::Phone.default_country_code = '351'
63
+ parse_test('800 123 456', '351', '800', '123456')
64
+ end
65
+ # 808: Numero azul ("Blue Number")
66
+ def test_808
67
+ Phonie::Phone.default_country_code = '351'
68
+ parse_test('808 123 456', '351', '808', '123456')
69
+ end
70
+ # 809: Custo partilhado ("Shared cost")
71
+ def test_809
72
+ Phonie::Phone.default_country_code = '351'
73
+ parse_test('809 123 456', '351', '809', '123456', 'Portugal', false)
74
+ end
75
+
76
+ ## 9: Mobile networks
77
+
78
+ ## two-digits mobile networks
79
+ # 91: Vodafone
80
+ def test_vodafone
81
+ parse_test('+351 91 1234567', '351', '91', '1234567', 'Portugal', true)
82
+ end
83
+ # 93: Optimus
84
+ def test_optimus
85
+ parse_test('+351 93 1234567', '351', '93', '1234567')
86
+ end
87
+ # 96: TMN two-digits
88
+ def test_tmn
89
+ parse_test('+351 96 1234567', '351', '96', '1234567')
90
+ end
91
+
92
+ ## three-digits mobile networks
93
+ # 921: TMN three-digits
94
+ def test_tmn921
95
+ parse_test('+351 921 123456', '351', '921', '123456')
96
+ end
97
+ # 923-926: TMN three-digits (corporate networks)
98
+ def test_tmn923
99
+ parse_test('+351 925 123456', '351', '925', '123456')
100
+ end
101
+ # 922: Phone-ix
102
+ def test_phoneix
103
+ parse_test('+351 922 123456', '351', '922', '123456')
104
+ end
105
+ # 929: Zon Mobile
106
+ def test_zonmobile
107
+ parse_test('+351 929 123456', '351', '929', '123456')
108
+ end
109
+
110
+ def test_validates
111
+ Phonie::Phone.default_country_code = nil
112
+ assert_equal Phonie::Phone.valid?('00351211234567'), true
113
+ assert_equal Phonie::Phone.valid?('00351911234567'), true
114
+ assert_equal Phonie::Phone.valid?('+351931234567'), true
115
+ assert_equal Phonie::Phone.valid?('+351 (911) 123 456'), true
116
+ assert_equal Phonie::Phone.valid?('+351921123456'), true
117
+
118
+ Phonie::Phone.default_country_code = '351'
119
+ assert_equal Phonie::Phone.valid?('(931) 234-567'), true
120
+ assert_equal Phonie::Phone.valid?('(211) 234 567'), true
121
+ assert_equal Phonie::Phone.valid?('232-123-456'), true
122
+ assert_equal Phonie::Phone.valid?('232123456'), true
123
+ assert_equal Phonie::Phone.valid?('92 212 34 56'), true
124
+ assert_equal Phonie::Phone.valid?('221234567'), true
125
+ assert_equal Phonie::Phone.valid?('708123456'), true
126
+ assert_equal Phonie::Phone.valid?('800 123 456'), true
127
+ end
128
+
129
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Qatar
4
+ class QATest < Phonie::TestCase
5
+ def test_local
6
+ parse_test('97444123456', '974', '44', '123456', "Qatar", false)
7
+ parse_test('97433123456', '974', '33', '123456', "Qatar", true)
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Serbia
4
+ class RSTest < Phonie::TestCase
5
+
6
+ def test_local
7
+ # Beograd
8
+ parse_test('+381 11 24 33 836', '381', '11', '2433836', "Serbia", false)
9
+ end
10
+
11
+ def test_mobile
12
+ # mts
13
+ parse_test('+381 648542987', '381', '64', '8542987', "Serbia", true)
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Saudi Arabia
4
+ class SATest < Phonie::TestCase
5
+ def test_local
6
+ parse_test('96641234567', '966', '4', '1234567', "Saudi Arabia", false)
7
+ parse_test('966512345678', '966', '5', '12345678', "Saudi Arabia", true)
8
+ end
9
+ end
@@ -0,0 +1,478 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ ## Sweden
4
+ class SETest < Phonie::TestCase
5
+
6
+ # 08 Greater Stockholm
7
+ def test_stockholm
8
+ parse_test('+4685555555', '46', '8', '5555555')
9
+ end
10
+
11
+ ## two digit codes
12
+
13
+ # 010 Geographically Independent Numbers / VOIP services
14
+ def test_independent_numbers
15
+ parse_test('+46105555555', '46', '10', '5555555')
16
+ end
17
+
18
+ # 011 Norrköping
19
+ def test_norrkoping
20
+ parse_test('+46115555555', '46', '11', '5555555')
21
+ end
22
+
23
+ # 013 Linköping
24
+ def test_linkoping
25
+ parse_test('+46135555555', '46', '13', '5555555')
26
+ end
27
+
28
+ # 016 Eskilstuna-Torshälla
29
+ def test_eskilstuna
30
+ parse_test('+46165555555', '46', '16', '5555555')
31
+ end
32
+
33
+ # 018 Uppsala
34
+ def test_uppsala
35
+ parse_test('+46185555555', '46', '18', '5555555')
36
+ end
37
+
38
+ # 019 Örebro-Kumla
39
+ def test_orebro
40
+ parse_test('+46195555555', '46', '19', '5555555')
41
+ end
42
+
43
+ # 020 toll-free
44
+ def test_toll_free
45
+ parse_test('+46205555555', '46', '20', '5555555')
46
+ end
47
+
48
+ # 021 Västerås
49
+ def test_vasteras
50
+ parse_test('+46215555555', '46', '21', '5555555')
51
+ end
52
+
53
+ # 023 Falun
54
+ def test_falun
55
+ parse_test('+46235555555', '46', '23', '5555555')
56
+ end
57
+
58
+ # 026 Gävle-Sandviken
59
+ def test_gavle
60
+ parse_test('+46265555555', '46', '26', '5555555')
61
+ end
62
+
63
+ # 031 Göteborg
64
+ def test_goteborg
65
+ parse_test('+46315555555', '46', '31', '5555555')
66
+ end
67
+
68
+ # 033 Borås
69
+ def test_boras
70
+ parse_test('+46335555555', '46', '33', '5555555')
71
+ end
72
+
73
+ # 035 Halmstad
74
+ def test_halmstad
75
+ parse_test('+46355555555', '46', '35', '5555555')
76
+ end
77
+
78
+ # 036 Jönköping-Huskvarna
79
+ def test_jonkoping
80
+ parse_test('+46365555555', '46', '36', '5555555')
81
+ end
82
+
83
+ # 040 Malmö
84
+ def test_malmo
85
+ parse_test('+46405555555', '46', '40', '5555555')
86
+ end
87
+
88
+ # 042 Helsingborg-Höganäs
89
+ def test_helsingborg
90
+ parse_test('+46425555555', '46', '42', '5555555')
91
+ end
92
+
93
+ # 044 Kristianstad
94
+ def test_kristianstad
95
+ parse_test('+46445555555', '46', '44', '5555555')
96
+ end
97
+
98
+ # 046 Lund
99
+ def test_lund
100
+ parse_test('+46465555555', '46', '46', '5555555')
101
+ end
102
+
103
+ # 054 Karlstad
104
+ def test_karlstad
105
+ parse_test('+46545555555', '46', '54', '5555555')
106
+ end
107
+
108
+ # 060 Sundsvall-Timrå
109
+ def test_sundsvall
110
+ parse_test('+46605555555', '46', '60', '5555555')
111
+ end
112
+
113
+ # 063 Östersund
114
+ def test_ostersund
115
+ parse_test('+46635555555', '46', '63', '5555555', "Sweden", false)
116
+ end
117
+
118
+ # 070,
119
+ def test_mobile_70
120
+ parse_test('+46705555555', '46', '70', '5555555', "Sweden", true)
121
+ end
122
+
123
+ # 071 Telematics in Mobile Networks (used to be Premium rate numbers)
124
+ def test_telematics
125
+ parse_test('+46715555555', '46', '71', '5555555')
126
+ end
127
+
128
+ # 072,
129
+ def test_mobile_72
130
+ parse_test('+46725555555', '46', '72', '5555555')
131
+ end
132
+
133
+ # 073,
134
+ def test_mobile_73
135
+ parse_test('+46735555555', '46', '73', '5555555')
136
+ end
137
+
138
+ # 076 Mobile networks
139
+ def test_mobile_76
140
+ parse_test('+46765555555', '46', '76', '5555555')
141
+ end
142
+
143
+ # 090 Umeå
144
+ def test_umea
145
+ parse_test('+46905555555', '46', '90', '5555555')
146
+ end
147
+
148
+ # 099 Premium rate calls
149
+ def test_premium_99
150
+ parse_test('+46995555555', '46', '99', '5555555')
151
+ end
152
+
153
+ ## three digit codes
154
+
155
+ # 0120 Åtvidaberg
156
+ def test_atvidaberg
157
+ parse_test('+46120555555', '46', '120', '555555')
158
+ end
159
+ # 0121 Söderköping
160
+ # 0122 Finspång
161
+ # 0123 Valdemarsvik
162
+ # 0125 Vikbolandet
163
+ # 0140 Tranås
164
+ # 0141 Motala
165
+ # 0142 Mjölby-Skänninge-Boxholm
166
+ # 0143 Vadstena
167
+ # 0144 Ödeshög
168
+ # 0150 Katrineholm
169
+ # 0151 Vingåker
170
+ # 0152 Strängnäs
171
+ # 0155 Nyköping-Oxelösund
172
+ # 0156 Trosa-Vagnhärad
173
+ # 0157 Flen-Malmköping
174
+ # 0158 Gnesta
175
+ # 0159 Mariefred
176
+ # 0171 Enköping
177
+ def test_enkoping
178
+ parse_test('+461715555555', '46', '171', '5555555')
179
+ end
180
+ # 0173 Öregrund-Östhammar
181
+ # 0174 Alunda
182
+ # 0175 Hallstavik-Rimbo
183
+ # 0176 Norrtälje
184
+
185
+ # 0220 Hallstahammar-Surahammar
186
+ def test_hallstahammar
187
+ parse_test('+462205555555', '46', '220', '5555555')
188
+ end
189
+ # 0221 Köping
190
+ # 0222 Skinnskatteberg
191
+ # 0223 Fagersta-Norberg
192
+ # 0224 Sala-Heby
193
+ # 0225 Hedemora-Säter
194
+ # 0226 Avesta-Krylbo
195
+ # 0227 Kungsör
196
+ # 0240 Ludvika-Smedjebacken
197
+ # 0241 Gagnef-Floda
198
+ # 0243 Borlänge
199
+ # 0246 Svärdsjö-Enviken
200
+ # 0247 Leksand-Insjön
201
+ # 0248 Rättvik
202
+ def test_rattvik
203
+ parse_test('+462485555555', '46', '248', '5555555')
204
+ end
205
+ # 0250 Mora-Orsa
206
+ # 0251 Älvdalen
207
+ # 0253 Idre-Särna
208
+ # 0258 Furudal
209
+ # 0270 Söderhamn
210
+ # 0271 Alfta-Edsbyn
211
+ # 0278 Bollnäs
212
+ # 0280 Malung
213
+ # 0281 Vansbro
214
+ # 0290 Hofors-Storvik
215
+ # 0291 Hedesunda-Österfärnebo
216
+ # 0292 Tärnsjö-Östervåla
217
+ # 0293 Tierp-Söderfors
218
+ # 0294 Karlholmsbruk-Skärplinge
219
+ # 0295 Örbyhus-Dannemora
220
+ # 0297 Ockelbo-Hamrånge
221
+ def test_ockelbo
222
+ parse_test('+462975555555', '46', '297', '5555555')
223
+ end
224
+
225
+ # 0300 Kungsbacka
226
+ def test_kungsbacka
227
+ parse_test('+463005555555', '46', '300', '5555555')
228
+ end
229
+ # 0301 Hindås
230
+ # 0302 Lerum
231
+ # 0303 Kungälv
232
+ # 0304 Orust-Tjörn
233
+ # 0320 Kinna
234
+ # 0321 Ulricehamn
235
+ # 0322 Alingsås-Vårgårda
236
+ # 0325 Svenljunga-Tranemo
237
+ # 0340 Varberg
238
+ def test_varberg
239
+ parse_test('+463405555555', '46', '340', '5555555')
240
+ end
241
+ # 0345 Hyltebruk-Torup
242
+ # 0346 Falkenberg
243
+ # 0370 Värnamo
244
+ # 0371 Gislaved-Anderstorp
245
+ # 0372 Ljungby
246
+ # 0380 Nässjö
247
+ # 0381 Eksjö
248
+ # 0382 Sävsjö
249
+ # 0383 Vetlanda
250
+ # 0390 Gränna
251
+ # 0392 Mullsjö
252
+ # 0393 Vaggeryd
253
+
254
+ # 0410 Trelleborg
255
+ def test_trelleborg
256
+ parse_test('+464105555555', '46', '410', '5555555')
257
+ end
258
+ # 0411 Ystad
259
+ # 0413 Eslöv-Höör
260
+ # 0414 Simrishamn
261
+ # 0415 Hörby
262
+ # 0416 Sjöbo
263
+ # 0417 Tomelilla
264
+ # 0418 Landskrona-Svalöv
265
+ # 0430 Laholm
266
+ def test_lanholm
267
+ parse_test('+464305555555', '46', '430', '5555555')
268
+ end
269
+ # 0431 Ängelholm-Båstad
270
+ # 0433 Markaryd-Strömsnäsbruk
271
+ # 0435 Klippan-Perstorp
272
+ # 0451 Hässleholm
273
+ # 0454 Karlshamn-Olofström
274
+ # 0455 Karlskrona
275
+ # 0456 Sölvesborg-Bromölla
276
+ # 0457 Ronneby
277
+ # 0459 Ryd
278
+ # 0470 Växjö
279
+ def test_vaxjo
280
+ parse_test('+464705555555', '46', '470', '5555555')
281
+ end
282
+ # 0471 Emmaboda
283
+ # 0472 Alvesta-Rydaholm
284
+ # 0474 Åseda-Lenhovda
285
+ # 0476 Älmhult
286
+ # 0477 Tingsryd
287
+ # 0478 Lessebo
288
+ # 0479 Osby
289
+ # 0480 Kalmar
290
+ # 0481 Nybro
291
+ # 0485 Öland
292
+ # 0486 Torsås
293
+ # 0490 Västervik
294
+ # 0491 Oskarshamn-Högsby
295
+ # 0492 Vimmerby
296
+ # 0493 Gamleby
297
+ # 0494 Kisa
298
+ def test_kisa
299
+ parse_test('+464945555555', '46', '494', '5555555')
300
+ end
301
+ # 0495 Hultsfred-Virserum
302
+ # 0496 Mariannelund
303
+ # 0498 Gotland
304
+ # 0499 Mönsterås
305
+
306
+ # 0500 Skövde
307
+ def test_skovde
308
+ parse_test('+465005555555', '46', '500', '5555555')
309
+ end
310
+ # 0501 Mariestad
311
+ # 0502 Tidaholm
312
+ # 0503 Hjo
313
+ def test_hjo
314
+ parse_test('+465035555555', '46', '503', '5555555')
315
+ end
316
+ # 0504 Tibro
317
+ # 0505 Karlsborg
318
+ # 0506 Töreboda-Hova
319
+ # 0510 Lidköping
320
+ # 0511 Skara-Götene
321
+ # 0512 Vara-Nossebro
322
+ # 0513 Herrljunga
323
+ # 0514 Grästorp
324
+ # 0515 Falköping
325
+ # 0520 Trollhättan
326
+ # 0521 Vänersborg
327
+ # 0522 Uddevalla
328
+ # 0523 Lysekil
329
+ # 0524 Munkedal
330
+ # 0525 Grebbestad
331
+ # 0526 Strömstad
332
+ # 0528 Färgelanda
333
+ # 0530 Mellerud
334
+ # 0531 Bengtsfors
335
+ # 0532 Åmål
336
+ # 0533 Säffle
337
+ # 0534 Ed
338
+ # 0550 Kristinehamn
339
+ # 0551 Gullspång
340
+ # 0552 Deje
341
+ def test_deje
342
+ parse_test('+465525555555', '46', '552', '5555555')
343
+ end
344
+ # 0553 Molkom
345
+ # 0554 Kil
346
+ # 0555 Grums
347
+ # 0560 Torsby
348
+ # 0563 Hagfors-Munkfors
349
+ # 0564 Sysslebäck
350
+ # 0565 Sunne
351
+ # 0570 Arvika
352
+ # 0571 Charlottenberg-Åmotfors
353
+ # 0573 Årjäng
354
+ # 0580 Kopparberg
355
+ # 0581 Lindesberg
356
+ # 0582 Hallsberg-Pålsboda
357
+ # 0583 Askersund
358
+ # 0584 Laxå
359
+ # 0585 Fjugesta-Svartå
360
+ # 0586 Karlskoga-Degerfors
361
+ # 0587 Nora
362
+ def test_nora
363
+ parse_test('+465875555555', '46', '587', '5555555')
364
+ end
365
+ # 0589 Arboga
366
+ # 0590 Filipstad
367
+ # 0591 Hällefors-Grythyttan
368
+
369
+ # 0611 Härnösand
370
+ def test_harnosand
371
+ parse_test('+466115555555', '46', '611', '5555555')
372
+ end
373
+ # 0612 Kramfors
374
+ # 0613 Ullånger
375
+ # 0620 Sollefteå
376
+ # 0621 Junsele
377
+ # 0622 Näsåker
378
+ # 0623 Ramsele
379
+ # 0624 Backe
380
+ # 0640 Krokom
381
+ # 0642 Lit
382
+ # 0643 Hallen-Oviken
383
+ # 0644 Hammerdal
384
+ # 0645 Föllinge
385
+ # 0647 Åre-Järpen
386
+ # 0650 Hudiksvall
387
+ # 0651 Ljusdal
388
+ # 0652 Bergsjö
389
+ # 0653 Delsbo
390
+ # 0657 Los
391
+ # 0660 Örnsköldsvik
392
+ # 0661 Bredbyn
393
+ # 0662 Björna
394
+ # 0663 Husum
395
+ def test_husum
396
+ parse_test('+466635555555', '46', '663', '5555555')
397
+ end
398
+ # 0670 Strömsund
399
+ # 0671 Hoting
400
+ # 0672 Gäddede
401
+ # 0680 Sveg
402
+ # 0682 Rätan
403
+ # 0684 Hede-Funäsdalen
404
+ # 0687 Svenstavik
405
+ # 0690 Ånge
406
+ # 0691 Torpshammar
407
+ # 0692 Liden
408
+ # 0693 Bräcke-Gällö
409
+ # 0695 Stugun
410
+ # 0696 Hammarstrand
411
+
412
+ # 07x(x) various non-geographical area codes
413
+ # ambiguous!
414
+
415
+ # 074(x) Pagers
416
+ def test_pagers
417
+ parse_test('+467405555555', '46', '740', '5555555')
418
+ end
419
+
420
+ # 0900 Premium rate calls
421
+ def test_premium_900
422
+ parse_test('+469005555555', '46', '900', '5555555')
423
+ end
424
+ # 0910 Skellefteå
425
+ # 0911 Piteå
426
+ # 0912 Byske
427
+ # 0913 Lövånger
428
+ # 0914 Burträsk
429
+ # 0915 Bastuträsk
430
+ # 0916 Jörn
431
+ def test_jorn
432
+ parse_test('+469165555555', '46', '916', '5555555')
433
+ end
434
+ # 0918 Norsjö
435
+ # 0920 Luleå
436
+ # 0921 Boden
437
+ # 0922 Haparanda
438
+ # 0923 Kalix
439
+ # 0924 Råneå
440
+ # 0925 Lakaträsk
441
+ # 0926 Överkalix
442
+ # 0927 Övertorneå
443
+ # 0928 Harads
444
+ # 0929 Älvsbyn
445
+ # 0930 Nordmaling
446
+ # 0932 Bjurholm
447
+ # 0933 Vindeln
448
+ # 0934 Robertsfors
449
+ # 0935 Vännäs
450
+ def test_vannas
451
+ parse_test('+469355555555', '46', '935', '5555555')
452
+ end
453
+ # 0939 Premium rate calls
454
+ # 0940 Vilhelmina
455
+ # 0941 Åsele
456
+ # 0942 Dorotea
457
+ # 0943 Fredrika
458
+ # 0944 Premium rate calls
459
+ # 0950 Lycksele
460
+ # 0951 Storuman
461
+ # 0952 Sorsele
462
+ # 0953 Malå
463
+ # 0954 Tärnaby
464
+ # 0960 Arvidsjaur
465
+ # 0961 Arjeplog
466
+ # 0970 Gällivare
467
+ # 0971 Jokkmokk
468
+ # 0973 Porjus
469
+ # 0975 Hakkas
470
+ # 0976 Vuollerim
471
+ # 0977 Korpilombolo
472
+ # 0978 Pajala
473
+ # 0980 Kiruna
474
+ # 0981 Vittangi
475
+ def test_vittangi
476
+ parse_test('+469815555555', '46', '981', '5555555')
477
+ end
478
+ end