test_be_bis.doctest - more detailed doctests for stdnum.be.bis module Copyright (C) 2023 Jeff Horemans 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.be.bis module. It tries to test more corner cases and detailed functionality that is not really useful as module documentation. >>> from stdnum.be import bis Extra tests for getting birth date, year and/or month >>> bis.get_birth_date('75.46.08-980.95') datetime.date(1975, 6, 8) >>> bis.get_birth_year('75.46.08-980.95') 1975 >>> bis.get_birth_month('75.46.08-980.95') 6 >>> bis.get_birth_date('01 49 07 001 85') datetime.date(2001, 9, 7) >>> bis.get_birth_year('01 49 07 001 85') 2001 >>> bis.get_birth_month('01 49 07 001 85') 9 >>> bis.get_birth_date('12345678901') Traceback (most recent call last): ... InvalidChecksum: ... >>> bis.get_birth_year('12345678901') Traceback (most recent call last): ... InvalidChecksum: ... >>> bis.get_birth_month('12345678901') Traceback (most recent call last): ... InvalidChecksum: ... >>> bis.get_birth_date('00400100155') # Exact date of birth unknown (fictitious date case 1900-00-01) >>> bis.get_birth_year('00400100155') >>> bis.get_birth_month('00400100155') >>> bis.get_birth_date('00200100112') # Birth date and gender unknown >>> bis.get_birth_year('00200100112') >>> bis.get_birth_month('00200100112') >>> bis.get_birth_date('00400100184') # Exact date of birth unknown (fictitious date case 2000-00-01) >>> bis.get_birth_year('00400100184') >>> bis.get_birth_month('00400100184') >>> bis.get_birth_date('00200100141') # Birth date and gender unknown >>> bis.get_birth_year('00200100141') >>> bis.get_birth_month('00200100141') >>> bis.get_birth_date('00400000117') # Only birth year known (2000-00-00) >>> bis.get_birth_year('00400000117') 2000 >>> bis.get_birth_month('00400000117') >>> bis.get_birth_date('00200000171') # Only birth year known and gender unknown >>> bis.get_birth_year('00200000171') 2000 >>> bis.get_birth_month('00200000171') >>> bis.get_birth_date('00410000124') # Only birth year and month known (2000-01-00) >>> bis.get_birth_year('00410000124') 2000 >>> bis.get_birth_month('00410000124') 1 >>> bis.get_birth_date('00210000178') # Only birth year and month known (2000-01-00) and gender unknown >>> bis.get_birth_year('00210000178') 2000 >>> bis.get_birth_month('00210000178') 1 >>> bis.get_birth_date('85473500193') # Unknown day of birth date (35) >>> bis.get_birth_year('85473500193') 1985 >>> bis.get_birth_month('85473500193') 7 >>> bis.get_birth_date('85273500150') # Unknown day of birth date (35) and gender unknown >>> bis.get_birth_year('85273500150') 1985 >>> bis.get_birth_month('85273500150') 7 >>> bis.get_birth_date('85533000191') # Invalid month (13) Traceback (most recent call last): ... InvalidComponent: ... >>> bis.get_birth_year('85533000191') Traceback (most recent call last): ... InvalidComponent: ... >>> bis.get_birth_month('85533000191') Traceback (most recent call last): ... InvalidComponent: ... >>> bis.get_birth_date('85333000148') Traceback (most recent call last): ... InvalidComponent: ... >>> bis.get_birth_year('85333000148') Traceback (most recent call last): ... InvalidComponent: ... >>> bis.get_birth_month('85333000148') Traceback (most recent call last): ... InvalidComponent: ... Extra tests for getting gender. >>> bis.get_gender('75.46.08-980.95') 'F' >>> bis.get_gender('75.26.08-980.52') # Gender unknown (month incremented by 20) >>> bis.get_gender('85473500193') 'M' >>> bis.get_gender('85273500150') A NN should not be considered a valid BIS number. >>> bis.validate('00000100195') Traceback (most recent call last): ... InvalidComponent: ...