aheinecke@404: /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
aheinecke@404:  * Software engineering by Intevation GmbH
aheinecke@404:  *
aheinecke@404:  * This file is Free Software under the GNU GPL (v>=2)
aheinecke@404:  * and comes with ABSOLUTELY NO WARRANTY!
aheinecke@404:  * See LICENSE.txt for details.
aheinecke@404:  */
aheinecke@182: #include <QString>
aheinecke@182: #include <QByteArray>
aheinecke@182: #include <QTest>
aheinecke@182: 
aheinecke@182: #include "commontest.h"
aheinecke@182: #include "strhelp.h"
aheinecke@182: 
aheinecke@237: void CommonTest::testInvalidInput() {
aheinecke@237:     const char * foo = "Zm9vA"; /* Invalid input with a bit valid input */
aheinecke@237:     char *data = NULL;
aheinecke@237:     size_t data_size = 0;
aheinecke@237:     int ret = -1;
aheinecke@237:     ret = str_base64_decode(&data, &data_size, (char *)foo, 5);
aheinecke@237: 
aheinecke@239:     QVERIFY(ret == 0);
aheinecke@239:     QVERIFY(data == QString::fromLatin1("foo"));
aheinecke@237:     free(data);
aheinecke@237: }
aheinecke@237: 
aheinecke@182: void CommonTest::testStrBase64Decode() {
aheinecke@182:     char garbage[1000];
aheinecke@182:     char *data = NULL;
aheinecke@182:     size_t data_size = 0;
aheinecke@182:     int ret;
aheinecke@182:     for (int i = 0; i < 1000; i++) {
aheinecke@182:         garbage[i] = (char) qrand() % 255;
aheinecke@182:     }
aheinecke@182: 
aheinecke@182:     QByteArray ba(garbage, 1000);
aheinecke@182: 
aheinecke@182:     QByteArray baB64 = ba.toBase64();
aheinecke@182: 
aheinecke@182:     ret = str_base64_decode(&data, &data_size, (char *)baB64.constData(), baB64.size());
aheinecke@182: 
aheinecke@182:     QVERIFY(ret == 0);
aheinecke@182:     QVERIFY(data_size == 1000);
aheinecke@184:     QVERIFY(data);
aheinecke@182: 
aheinecke@182:     for (size_t i = 0; i < data_size; i++) {
aheinecke@182:         QVERIFY(garbage[i] == data[i]);
aheinecke@182:     }
aheinecke@182:     free (data);
aheinecke@182: }
aheinecke@182: 
aheinecke@182: QTEST_GUILESS_MAIN (CommonTest);