phonie 1.0.1
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.
- data/.gitignore +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +10 -0
- data/LICENSE +20 -0
- data/Rakefile +13 -0
- data/Readme.rdoc +153 -0
- data/lib/phonie.rb +7 -0
- data/lib/phonie/country.rb +120 -0
- data/lib/phonie/data/phone_countries.yml +1683 -0
- data/lib/phonie/phone.rb +215 -0
- data/lib/phonie/support.rb +78 -0
- data/lib/phonie/version.rb +3 -0
- data/phonie.gemspec +18 -0
- data/test/countries/ae_test.rb +15 -0
- data/test/countries/af_test.rb +12 -0
- data/test/countries/al_test.rb +12 -0
- data/test/countries/ar_test.rb +12 -0
- data/test/countries/at_test.rb +14 -0
- data/test/countries/au_test.rb +48 -0
- data/test/countries/ba_test.rb +9 -0
- data/test/countries/bd_test.rb +17 -0
- data/test/countries/be_test.rb +120 -0
- data/test/countries/bg_test.rb +13 -0
- data/test/countries/bo_test.rb +12 -0
- data/test/countries/br_test.rb +12 -0
- data/test/countries/bt_test.rb +9 -0
- data/test/countries/by_test.rb +12 -0
- data/test/countries/bz_test.rb +12 -0
- data/test/countries/ca_test.rb +20 -0
- data/test/countries/cr_test.rb +12 -0
- data/test/countries/cy_test.rb +12 -0
- data/test/countries/cz_test.rb +12 -0
- data/test/countries/de_test.rb +18 -0
- data/test/countries/dk_test.rb +12 -0
- data/test/countries/dz_test.rb +12 -0
- data/test/countries/ec_test.rb +12 -0
- data/test/countries/ee_test.rb +12 -0
- data/test/countries/eg_test.rb +9 -0
- data/test/countries/et_test.rb +11 -0
- data/test/countries/fi_test.rb +12 -0
- data/test/countries/fr_test.rb +22 -0
- data/test/countries/gb_test.rb +262 -0
- data/test/countries/ge_test.rb +12 -0
- data/test/countries/gh_test.rb +9 -0
- data/test/countries/gr_test.rb +9 -0
- data/test/countries/gt_test.rb +12 -0
- data/test/countries/gu_test.rb +9 -0
- data/test/countries/gy_test.rb +9 -0
- data/test/countries/hr_test.rb +75 -0
- data/test/countries/hu_test.rb +12 -0
- data/test/countries/il_test.rb +12 -0
- data/test/countries/in_test.rb +45 -0
- data/test/countries/ir_test.rb +13 -0
- data/test/countries/ke_test.rb +12 -0
- data/test/countries/lk_test.rb +9 -0
- data/test/countries/ng_test.rb +9 -0
- data/test/countries/nl_test.rb +383 -0
- data/test/countries/no_test.rb +12 -0
- data/test/countries/np_test.rb +15 -0
- data/test/countries/ph_test.rb +9 -0
- data/test/countries/pk_test.rb +9 -0
- data/test/countries/pt_test.rb +129 -0
- data/test/countries/qa_test.rb +9 -0
- data/test/countries/rs_test.rb +15 -0
- data/test/countries/sa_test.rb +9 -0
- data/test/countries/se_test.rb +478 -0
- data/test/countries/si_test.rb +19 -0
- data/test/countries/sv_test.rb +12 -0
- data/test/countries/to_test.rb +12 -0
- data/test/countries/ua_test.rb +17 -0
- data/test/countries/us_test.rb +24 -0
- data/test/countries/uy_test.rb +20 -0
- data/test/countries/za_test.rb +19 -0
- data/test/countries/zw_test.rb +12 -0
- data/test/country_test.rb +27 -0
- data/test/extension_test.rb +30 -0
- data/test/phone_test.rb +137 -0
- data/test/test_helper.rb +37 -0
- data/test_usa_phones_with_extensions.csv +99 -0
- 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
         |