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 DefaultEncoderTest: public QObject
0011 {
0012     Q_OBJECT
0013 private Q_SLOTS:
0014     void encode(void);
0015     void encode_data(void);
0016 };
0017 
0018 static void define_test_case(quint32 value, uint tokenLength, bool checksum, const QString &expected)
0019 {
0020     static const QString testCase(QLatin1String("%1 (%2, %3) ... %4"));
0021     QTest::newRow(qPrintable(testCase.arg(value).arg(tokenLength).arg(checksum ? QLatin1String("with checksum") : QLatin1String("without checksum")).arg(expected)))
0022         << value << checksum << tokenLength << expected;
0023 }
0024 
0025 void DefaultEncoderTest::encode(void)
0026 {
0027     QFETCH(quint32, value);
0028     QFETCH(bool, checksum);
0029     QFETCH(uint, tokenLength);
0030 
0031     oath::Encoder uut(tokenLength, checksum);
0032     QTEST(uut.encode(value), "expected");
0033 }
0034 
0035 void DefaultEncoderTest::encode_data(void)
0036 {
0037     QTest::addColumn<quint32>("value");
0038     QTest::addColumn<bool>("checksum");
0039     QTest::addColumn<uint>("tokenLength");
0040     QTest::addColumn<QString>("expected");
0041 
0042     define_test_case(23, 6, false, QLatin1String("000023"));
0043     define_test_case(23, 6, true, QLatin1String("0000232"));
0044     define_test_case(151'230'000, 9, false, QLatin1String("151230000"));
0045     define_test_case(151'230'000, 9, true, QLatin1String("1512300003"));
0046     define_test_case(175'230'000, 7, false, QLatin1String("5230000"));
0047     define_test_case(175'230'000, 7, true, QLatin1String("52300001"));
0048     define_test_case(2'000'000'009, 10, false, QLatin1String("2000000009"));
0049     define_test_case(2'000'000'009, 10, true, QLatin1String("20000000099"));
0050 }
0051 
0052 QTEST_APPLESS_MAIN(DefaultEncoderTest)
0053 
0054 #include "encode-token-defaults.moc"