keysmith/autotests/oath/luhn-checksum.cpp

46 lines
1.1 KiB
C++

/*
* SPDX-License-Identifier: GPL-3.0-or-later
* SPDX-FileCopyrightText: 2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com>
*/
#include "oath/oath.h"
#include <QTest>
#include <QtDebug>
class LuhnChecksumTest: public QObject
{
Q_OBJECT
private Q_SLOTS:
void testChecksum(void);
void testChecksum_data(void);
};
static void define_test_case(quint32 value, uint digits, uint expected)
{
static const QString testCase(QLatin1String("%1 (%2) ... %3"));
QTest::newRow(qPrintable(testCase.arg(value).arg(digits).arg(expected))) << value << digits << expected;
}
void LuhnChecksumTest::testChecksum(void)
{
QFETCH(quint32, value);
QFETCH(uint, digits);
QTEST(oath::luhnChecksum(value, digits), "expected");
}
void LuhnChecksumTest::testChecksum_data(void)
{
QTest::addColumn<quint32>("value");
QTest::addColumn<uint>("digits");
QTest::addColumn<uint>("expected");
define_test_case(0ULL, 1UL, 0UL);
define_test_case(19ULL, 2ULL, 0ULL);
define_test_case(1234567890ULL, 10UL, 3UL);
define_test_case(987654321ULL, 10UL, 7UL);
}
QTEST_APPLESS_MAIN(LuhnChecksumTest)
#include "luhn-checksum.moc"