test_verhoeff.doctest - more detailed doctests for stdnum.verhoeff module Copyright (C) 2010-2024 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.verhoeff module. It tries to test more corner cases and detailed functionality that is not really useful as module documentation. >>> from stdnum import verhoeff These are normal variations that should just work. Calculating checksums: >>> verhoeff.checksum('654') 1 >>> verhoeff.checksum('1428570') 0 >>> verhoeff.checksum('398438246238642378648236487236482734') 3 The same numbers but now simply ask for validation: >>> verhoeff.validate('654') Traceback (most recent call last): ... InvalidChecksum: ... >>> verhoeff.validate('1428570') '1428570' >>> verhoeff.validate('398438246238642378648236487236482734') Traceback (most recent call last): ... InvalidChecksum: ... Adding a check digit to the numbers so they are all valid: >>> verhoeff.calc_check_digit('654') '8' >>> verhoeff.validate('6548') '6548' >>> verhoeff.calc_check_digit('1428570') '8' >>> verhoeff.validate('1428570') '1428570' >>> verhoeff.calc_check_digit('398438246238642378648236487236482734') '7' >>> verhoeff.validate('3984382462386423786482364872364827347') '3984382462386423786482364872364827347' More test cases taken from https://rosettacode.org/wiki/Verhoeff_algorithm >>> verhoeff.is_valid('123459') False >>> verhoeff.calc_check_digit('123456789012') '0' >>> verhoeff.is_valid('1234567890120') True >>> verhoeff.is_valid('1234567890129') False >>> verhoeff.calc_check_digit('236') '3' >>> verhoeff.is_valid('2363') True >>> verhoeff.is_valid('2369') False >>> verhoeff.calc_check_digit('12345') '1' >>> verhoeff.is_valid('123451') True