1test_isil.doctest - more detailed doctests for the stdnum.isil module
2
3Copyright (C) 2016 Arthur de Jong
4
5This library is free software; you can redistribute it and/or
6modify it under the terms of the GNU Lesser General Public
7License as published by the Free Software Foundation; either
8version 2.1 of the License, or (at your option) any later version.
9
10This library is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13Lesser General Public License for more details.
14
15You should have received a copy of the GNU Lesser General Public
16License along with this library; if not, write to the Free Software
17Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
1802110-1301 USA
19
20
21This file contains more detailed doctests for the stdnum.isil module. It
22tries to validate a number of numbers that have been found online.
23
24>>> from stdnum import isil
25>>> from stdnum.exceptions import *
26
27
28The number should start with a valid country code or prefix:
29
30>>> isil.validate('ZZ-1234')
31Traceback (most recent call last):
32    ...
33InvalidComponent: ...
34
35
36The number should not be too long:
37
38>>> isil.validate('WW-RM026712423345334534512334534545')
39Traceback (most recent call last):
40    ...
41InvalidLength: ...
42
43
44A number with an unknown agency should not be upper-cased:
45
46>>> isil.format('zz-RM0267')
47'zz-RM0267'
48
49
50These have been found online and should all be valid numbers.
51
52>>> numbers = '''
53...
54... AT-FHJ-BG
55... AT-FHK
56... AT-FHK-FE
57... AT-FHS-K
58... AT-GEOL
59... AT-HGMW
60... AT-KWPU
61... AT-LAST
62... AT-LBB
63... AT-NMW-Z
64... AT-NOeLB
65... AT-OBV
66... AT-OeAW-BA
67... AT-PHK
68... AT-PHS
69... AT-PHST
70... AT-PHT
71... AT-PHV
72... AT-STICHWORT
73... AT-UBG-SH
74... AT-UBGL
75... AT-UBI-HB
76... AT-UBL
77... AT-UBMG-HB
78... AT-UBMS
79... AT-UBMS-MUS
80... AT-UBMUL-FBG
81... AT-UBMUL-HB
82... AT-UBMUW-360
83... AT-UBMUW-400
84... AT-UBMW
85... AT-UBTUG-HB
86... AT-UBVUW-UB
87... AT-UBW
88... AT-UBWW
89... AT-UBWW-874
90... AT-VMW
91... AT-WBR
92... AT-WHK
93... AT-WSTLA-B
94...
95... AU-ABC:ARC
96... AU-ABC:PL
97... AU-ABC:RN
98... AU-ANL:AJA
99... AU-ANU:ADBO
100... AU-ANU:IR
101... AU-ANU:ON
102... AU-NABC
103... AU-NABM
104... AU-NACON
105... AU-NACU:AA
106... AU-NAIM
107... AU-NEF
108... AU-NJHS
109... AU-NNCU:A
110... AU-NRNA
111... AU-NU
112... AU-NU:DF
113... AU-NUWS
114... AU-QMINT
115... AU-QU
116... AU-SMUA
117... AU-SUSA
118... AU-TS:RL
119... AU-TU
120... AU-VAAPM
121... AU-VACMU
122... AU-VAGH
123... AU-VAHRI
124... AU-VAMD
125... AU-VANDS
126... AU-VDU
127... AU-VEMU
128... AU-VLGA
129... AU-VPM
130... AU-VS:NAH
131... AU-VSWT
132... AU-VU
133... AU-WAHB
134... AU-XACA
135...
136... BE-A0510
137... BE-A3004
138... BE-A5000
139... BE-A5001
140... BE-A5002
141... BE-AAR00
142... BE-ALN00
143... BE-ANN03
144... BE-ANT01
145... BE-BDE00
146... BE-BEE00
147... BE-BRL06
148... BE-BRL07
149... BE-BRL10
150... BE-BUE01
151... BE-DIT00
152... BE-DNE00
153... BE-DPE00
154... BE-EKN00
155... BE-GAN00
156... BE-GET02
157... BE-HCT00
158... BE-HED00
159... BE-HEN00
160... BE-HES01
161... BE-JEE00
162... BE-KLT00
163... BE-KNE00
164... BE-KRG00
165... BE-LLE00
166... BE-LNL00
167... BE-LUK01
168... BE-LUN00
169... BE-MSE00
170... BE-NET00
171... BE-OSE00
172... BE-RIT00
173... BE-SJS01
174... BE-ZEE00
175... BE-ZUE00
176...
177... CA-QMCB
178...
179... CH-000050-X
180... CH-000051-7
181... CH-000084-8
182... CH-000190-0
183... CH-000244-3
184... CH-000422-7
185... CH-000423-4
186... CH-000425-9
187... CH-000560-3
188... CH-000886-6
189... CH-001008-0
190... CH-001010-9
191... CH-001057-5
192... CH-001059-X
193... CH-001113-6
194... CH-001243-0
195... CH-001283-6
196... CH-001350-0
197... CH-001539-4
198... CH-001631-1
199... CH-001644-X
200... CH-001645-7
201... CH-001646-4
202... CH-001648-9
203... CH-001649-6
204... CH-001654-6
205... CH-001666-7
206... CH-001669-9
207... CH-001760-9
208... CH-001800-6
209... CH-001815-9
210... CH-001821-6
211... CH-001824-8
212... CH-001825-5
213... CH-001832-X
214... CH-001839-0
215... CH-001844-0
216... CH-001845-8
217... CH-001846-5
218... CH-001851-5
219...
220... CY-02-CUT
221...
222... DE-101c
223... DE-16-18
224... DE-1769
225... DE-1786
226... DE-180-1-2
227... DE-1834h
228... DE-1834k
229... DE-1869
230... DE-188-878
231... DE-188-e
232... DE-1886
233... DE-1935
234... DE-1939
235... DE-1988
236... DE-1996
237... DE-2300
238... DE-2343
239... DE-360
240... DE-379
241... DE-38-230
242... DE-412
243... DE-416
244... DE-450
245... DE-465M-15
246... DE-469
247... DE-46a
248... DE-570
249... DE-6-235
250... DE-6-271
251... DE-6-321
252... DE-7-040
253... DE-7-061
254... DE-718
255... DE-758
256... DE-781
257... DE-82-204
258... DE-82-219
259... DE-Bor4
260... DE-Kn184
261... DE-Tue120
262...
263... GB-NiBfQU
264... GB-StAlCLS
265... GB-StDnUAD
266... GB-StGlU
267... GB-StPaUWSP
268... GB-UK-AbCCL
269... GB-UK-DhCL
270... GB-UK-LoRCN
271... GB-UK-WiU
272... GB-UkBrCC
273... GB-UkBsBC
274... GB-UkCU-TRH
275... GB-UkCmUG
276... GB-UkCoI
277... GB-UkCvUL
278... GB-UkCyUK
279... GB-UkElC
280... GB-UkExU
281... GB-UkFlBUFL
282... GB-UkHsBUUC
283... GB-UkIfBRL
284... GB-UkLRCM
285... GB-UkLUC
286... GB-UkLoBS
287... GB-UkLoMdU
288... GB-UkLoSTAC
289... GB-UkLuBC
290... GB-UkMaUHSM
291... GB-UkNrSTB
292... GB-UkOlOLS
293... GB-UkRlWC
294... GB-UkSbWC-T
295... GB-UkScaSH
296... GB-UkSfCL
297... GB-UkSfSSSH
298... GB-UkSofDA
299... GB-UkTeS
300... GB-UkWbSWB
301... GB-UkWfC
302... GB-WlCaUW
303...
304... IT-RM0267
305...
306... NL-04-0041-000
307... NL-AlSARM
308... NL-AsdUvA
309... NL-AsnDA
310... NL-CoGC
311... NL-DdvHVA
312... NL-DtAD
313... NL-DtHHD
314... NL-EhvRHCE
315... NL-EmnGE
316... NL-FwGF
317... NL-GnADNG
318... NL-GnGRA
319... NL-GnPG
320... NL-GnUMG
321... NL-HAMuscom
322... NL-HaKV
323... NL-HaNIMH
324... NL-HaNRK
325... NL-HlGH
326... NL-HnWFA
327... NL-HvsSAGV
328... NL-KrdGA
329... NL-LdnRMV
330... NL-LnsGDM
331... NL-LwPF
332... NL-MpGM
333... NL-MssHVM
334... NL-MtmGM
335... NL-NmRAN
336... NL-OmnHKO
337... NL-OmnOO
338... NL-OmsVHO
339... NL-RtEUR
340... NL-RtSA
341... NL-SelGV
342... NL-SloGS
343... NL-VbGALV
344... NL-WtGAW
345... NL-WtslGT
346... NL-ZhGZ
347... Nl-GdSAMH
348...
349... OCLC-ABI
350... OCLC-ATNHK
351... OCLC-ATQCO
352... OCLC-ATVMV
353... OCLC-BEMCH
354... OCLC-BRI
355... OCLC-CKI
356... OCLC-CSF
357... OCLC-DEKNV
358... OCLC-EMSBC
359... OCLC-ENC
360... OCLC-EZU
361... OCLC-FLNSW
362... OCLC-FNL
363... OCLC-GYR
364... OCLC-I8S
365... OCLC-IDT
366... OCLC-ILW
367... OCLC-JAKUC
368... OCLC-JXE
369... OCLC-JYY
370... OCLC-KW5
371... OCLC-LABMH
372... OCLC-MLBVL
373... OCLC-MSL
374... OCLC-NEZH8
375... OCLC-OME
376... OCLC-QBA
377... OCLC-QP7
378... OCLC-SMP
379... OCLC-SVZ
380... OCLC-TXCLY
381... OCLC-TY7
382... OCLC-U9V
383... OCLC-UDU
384... OCLC-WK6
385... OCLC-WYEMB
386... OCLC-XOH
387... OCLC-YA6
388... OCLC-YEJ
389...
390... US-DLC
391... US-InU-Mu
392... US-MdBJ-W
393...
394... '''
395>>> [x for x in numbers.splitlines() if x and not isil.is_valid(x)]
396[]
397
398
399These have been found online but seem invalid:
400
401... OCLC-B#P
402... OCLC-LT$
403... OCLC-RE#
404... OCLC-RG$
405