File: base32-validate.cpp

package info (click to toggle)
keysmith 25.08.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,276 kB
  • sloc: cpp: 11,649; xml: 352; sh: 121; makefile: 3
file content (73 lines) | stat: -rw-r--r-- 2,288 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
 * SPDX-License-Identifier: GPL-3.0-or-later
 * SPDX-FileCopyrightText: 2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com>
 */
#include "base32/base32.h"

#include <QTest>
#include <QtDebug>

class Base32ValidationTest : public QObject
{
    Q_OBJECT
private Q_SLOTS:
    void testValidSample(void);
    void testValidSample_data(void);
    void testInvalidSample(void);
    void testInvalidSample_data(void);
};

static void define_valid_test_case(const QString &base32, size_t expected)
{
    static const QString testCase(QLatin1String("'%1'"));
    QTest::newRow(qPrintable(testCase.arg(base32))) << base32 << expected;
}

static void define_invalid_test_case(const char *testCase, const QString &input)
{
    QTest::newRow(testCase) << input;
}

void Base32ValidationTest::testValidSample(void)
{
    QFETCH(QString, input);
    QFETCH(size_t, expected);
    QCOMPARE(base32::validate(input), std::optional<size_t>(expected));
}

void Base32ValidationTest::testInvalidSample(void)
{
    QFETCH(QString, input);
    QVERIFY2(!base32::validate(input), "invalid input should be rejected");
}

void Base32ValidationTest::testValidSample_data(void)
{
    QTest::addColumn<QString>("input");
    QTest::addColumn<size_t>("expected");

    define_valid_test_case(QLatin1String("IFBEGRAK"), 5);
    define_valid_test_case(QLatin1String("GIYDCNQ="), 4);
    define_valid_test_case(QLatin1String("AAAQE==="), 3);
    define_valid_test_case(QLatin1String("HU6Q===="), 2);
    define_valid_test_case(QLatin1String("H4======"), 1);

    define_valid_test_case(QLatin1String(""), 0);
}

void Base32ValidationTest::testInvalidSample_data(void)
{
    QTest::addColumn<QString>("input");

    define_invalid_test_case("without any padding", QLatin1String("ZZ"));
    define_invalid_test_case("too little padding", QLatin1String("ZZ==="));
    define_invalid_test_case("padding only", QLatin1String("========"));
    define_invalid_test_case("embedded spaces", QLatin1String("ZZ \n===="));
    define_invalid_test_case("invalid base32 (1)", QLatin1String("1AABBCCD"));
    define_invalid_test_case("invalid base32 (8)", QLatin1String("AABBCC8D"));
    define_invalid_test_case("invalid base32 (@)", QLatin1String("AABBCCD@"));
}

QTEST_APPLESS_MAIN(Base32ValidationTest)

#include "base32-validate.moc"