test_isil.doctest - more detailed doctests for the stdnum.isil module

Copyright (C) 2016 Arthur de Jong

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA


This file contains more detailed doctests for the stdnum.isil module. It
tries to validate a number of numbers that have been found online.

>>> from stdnum import isil
>>> from stdnum.exceptions import *


The number should start with a valid country code or prefix:

>>> isil.validate('ZZ-1234')
Traceback (most recent call last):
    ...
InvalidComponent: ...


The number should not be too long:

>>> isil.validate('WW-RM026712423345334534512334534545')
Traceback (most recent call last):
    ...
InvalidLength: ...


A number with an unknown agency should not be upper-cased:

>>> isil.format('zz-RM0267')
'zz-RM0267'


These have been found online and should all be valid numbers.

>>> numbers = '''
...
... AT-FHJ-BG
... AT-FHK
... AT-FHK-FE
... AT-FHS-K
... AT-GEOL
... AT-HGMW
... AT-KWPU
... AT-LAST
... AT-LBB
... AT-NMW-Z
... AT-NOeLB
... AT-OBV
... AT-OeAW-BA
... AT-PHK
... AT-PHS
... AT-PHST
... AT-PHT
... AT-PHV
... AT-STICHWORT
... AT-UBG-SH
... AT-UBGL
... AT-UBI-HB
... AT-UBL
... AT-UBMG-HB
... AT-UBMS
... AT-UBMS-MUS
... AT-UBMUL-FBG
... AT-UBMUL-HB
... AT-UBMUW-360
... AT-UBMUW-400
... AT-UBMW
... AT-UBTUG-HB
... AT-UBVUW-UB
... AT-UBW
... AT-UBWW
... AT-UBWW-874
... AT-VMW
... AT-WBR
... AT-WHK
... AT-WSTLA-B
...
... AU-ABC:ARC
... AU-ABC:PL
... AU-ABC:RN
... AU-ANL:AJA
... AU-ANU:ADBO
... AU-ANU:IR
... AU-ANU:ON
... AU-NABC
... AU-NABM
... AU-NACON
... AU-NACU:AA
... AU-NAIM
... AU-NEF
... AU-NJHS
... AU-NNCU:A
... AU-NRNA
... AU-NU
... AU-NU:DF
... AU-NUWS
... AU-QMINT
... AU-QU
... AU-SMUA
... AU-SUSA
... AU-TS:RL
... AU-TU
... AU-VAAPM
... AU-VACMU
... AU-VAGH
... AU-VAHRI
... AU-VAMD
... AU-VANDS
... AU-VDU
... AU-VEMU
... AU-VLGA
... AU-VPM
... AU-VS:NAH
... AU-VSWT
... AU-VU
... AU-WAHB
... AU-XACA
...
... BE-A0510
... BE-A3004
... BE-A5000
... BE-A5001
... BE-A5002
... BE-AAR00
... BE-ALN00
... BE-ANN03
... BE-ANT01
... BE-BDE00
... BE-BEE00
... BE-BRL06
... BE-BRL07
... BE-BRL10
... BE-BUE01
... BE-DIT00
... BE-DNE00
... BE-DPE00
... BE-EKN00
... BE-GAN00
... BE-GET02
... BE-HCT00
... BE-HED00
... BE-HEN00
... BE-HES01
... BE-JEE00
... BE-KLT00
... BE-KNE00
... BE-KRG00
... BE-LLE00
... BE-LNL00
... BE-LUK01
... BE-LUN00
... BE-MSE00
... BE-NET00
... BE-OSE00
... BE-RIT00
... BE-SJS01
... BE-ZEE00
... BE-ZUE00
...
... CA-QMCB
...
... CH-000050-X
... CH-000051-7
... CH-000084-8
... CH-000190-0
... CH-000244-3
... CH-000422-7
... CH-000423-4
... CH-000425-9
... CH-000560-3
... CH-000886-6
... CH-001008-0
... CH-001010-9
... CH-001057-5
... CH-001059-X
... CH-001113-6
... CH-001243-0
... CH-001283-6
... CH-001350-0
... CH-001539-4
... CH-001631-1
... CH-001644-X
... CH-001645-7
... CH-001646-4
... CH-001648-9
... CH-001649-6
... CH-001654-6
... CH-001666-7
... CH-001669-9
... CH-001760-9
... CH-001800-6
... CH-001815-9
... CH-001821-6
... CH-001824-8
... CH-001825-5
... CH-001832-X
... CH-001839-0
... CH-001844-0
... CH-001845-8
... CH-001846-5
... CH-001851-5
...
... CY-02-CUT
...
... DE-101c
... DE-16-18
... DE-1769
... DE-1786
... DE-180-1-2
... DE-1834h
... DE-1834k
... DE-1869
... DE-188-878
... DE-188-e
... DE-1886
... DE-1935
... DE-1939
... DE-1988
... DE-1996
... DE-2300
... DE-2343
... DE-360
... DE-379
... DE-38-230
... DE-412
... DE-416
... DE-450
... DE-465M-15
... DE-469
... DE-46a
... DE-570
... DE-6-235
... DE-6-271
... DE-6-321
... DE-7-040
... DE-7-061
... DE-718
... DE-758
... DE-781
... DE-82-204
... DE-82-219
... DE-Bor4
... DE-Kn184
... DE-Tue120
...
... GB-NiBfQU
... GB-StAlCLS
... GB-StDnUAD
... GB-StGlU
... GB-StPaUWSP
... GB-UK-AbCCL
... GB-UK-DhCL
... GB-UK-LoRCN
... GB-UK-WiU
... GB-UkBrCC
... GB-UkBsBC
... GB-UkCU-TRH
... GB-UkCmUG
... GB-UkCoI
... GB-UkCvUL
... GB-UkCyUK
... GB-UkElC
... GB-UkExU
... GB-UkFlBUFL
... GB-UkHsBUUC
... GB-UkIfBRL
... GB-UkLRCM
... GB-UkLUC
... GB-UkLoBS
... GB-UkLoMdU
... GB-UkLoSTAC
... GB-UkLuBC
... GB-UkMaUHSM
... GB-UkNrSTB
... GB-UkOlOLS
... GB-UkRlWC
... GB-UkSbWC-T
... GB-UkScaSH
... GB-UkSfCL
... GB-UkSfSSSH
... GB-UkSofDA
... GB-UkTeS
... GB-UkWbSWB
... GB-UkWfC
... GB-WlCaUW
...
... IT-RM0267
...
... NL-04-0041-000
... NL-AlSARM
... NL-AsdUvA
... NL-AsnDA
... NL-CoGC
... NL-DdvHVA
... NL-DtAD
... NL-DtHHD
... NL-EhvRHCE
... NL-EmnGE
... NL-FwGF
... NL-GnADNG
... NL-GnGRA
... NL-GnPG
... NL-GnUMG
... NL-HAMuscom
... NL-HaKV
... NL-HaNIMH
... NL-HaNRK
... NL-HlGH
... NL-HnWFA
... NL-HvsSAGV
... NL-KrdGA
... NL-LdnRMV
... NL-LnsGDM
... NL-LwPF
... NL-MpGM
... NL-MssHVM
... NL-MtmGM
... NL-NmRAN
... NL-OmnHKO
... NL-OmnOO
... NL-OmsVHO
... NL-RtEUR
... NL-RtSA
... NL-SelGV
... NL-SloGS
... NL-VbGALV
... NL-WtGAW
... NL-WtslGT
... NL-ZhGZ
... Nl-GdSAMH
...
... OCLC-ABI
... OCLC-ATNHK
... OCLC-ATQCO
... OCLC-ATVMV
... OCLC-BEMCH
... OCLC-BRI
... OCLC-CKI
... OCLC-CSF
... OCLC-DEKNV
... OCLC-EMSBC
... OCLC-ENC
... OCLC-EZU
... OCLC-FLNSW
... OCLC-FNL
... OCLC-GYR
... OCLC-I8S
... OCLC-IDT
... OCLC-ILW
... OCLC-JAKUC
... OCLC-JXE
... OCLC-JYY
... OCLC-KW5
... OCLC-LABMH
... OCLC-MLBVL
... OCLC-MSL
... OCLC-NEZH8
... OCLC-OME
... OCLC-QBA
... OCLC-QP7
... OCLC-SMP
... OCLC-SVZ
... OCLC-TXCLY
... OCLC-TY7
... OCLC-U9V
... OCLC-UDU
... OCLC-WK6
... OCLC-WYEMB
... OCLC-XOH
... OCLC-YA6
... OCLC-YEJ
...
... US-DLC
... US-InU-Mu
... US-MdBJ-W
...
... '''
>>> [x for x in numbers.splitlines() if x and not isil.is_valid(x)]
[]


These have been found online but seem invalid:

... OCLC-B#P
... OCLC-LT$
... OCLC-RE#
... OCLC-RG$