File indexing completed on 2024-04-28 05:50:04

0001 /*
0002  * SPDX-License-Identifier: GPL-3.0-or-later
0003  * SPDX-FileCopyrightText: 2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com>
0004  */
0005 #include "oath/oath.h"
0006 
0007 #include <QTest>
0008 #include <QtDebug>
0009 
0010 class LuhnChecksumTest: public QObject
0011 {
0012     Q_OBJECT
0013 private Q_SLOTS:
0014     void testChecksum(void);
0015     void testChecksum_data(void);
0016 };
0017 
0018 static void define_test_case(quint32 value, uint digits, uint expected)
0019 {
0020     static const QString testCase(QLatin1String("%1 (%2) ... %3"));
0021     QTest::newRow(qPrintable(testCase.arg(value).arg(digits).arg(expected))) << value << digits << expected;
0022 }
0023 
0024 void LuhnChecksumTest::testChecksum(void)
0025 {
0026     QFETCH(quint32, value);
0027     QFETCH(uint, digits);
0028     QTEST(oath::luhnChecksum(value, digits), "expected");
0029 }
0030 
0031 void LuhnChecksumTest::testChecksum_data(void)
0032 {
0033     QTest::addColumn<quint32>("value");
0034     QTest::addColumn<uint>("digits");
0035     QTest::addColumn<uint>("expected");
0036 
0037     define_test_case(0ULL, 1UL, 0UL);
0038     define_test_case(19ULL, 2ULL, 0ULL);
0039     define_test_case(1234567890ULL, 10UL, 3UL);
0040     define_test_case(987654321ULL, 10UL, 7UL);
0041 }
0042 
0043 QTEST_APPLESS_MAIN(LuhnChecksumTest)
0044 
0045 #include "luhn-checksum.moc"