AusweisApp2/test/qt/card/base/test_Apdu.cpp
2018-03-28 15:10:51 +02:00

85 lines
2.1 KiB
C++

/*!
* \brief Unit tests for \ref Apdu
*
* \copyright Copyright (c) 2017-2018 Governikus GmbH & Co. KG, Germany
*/
#include "Apdu.h"
#include <QtCore>
#include <QtTest>
using namespace governikus;
class test_Apdu
: public QObject
{
Q_OBJECT
private Q_SLOTS:
void testRetryCounter0()
{
ResponseApdu apdu(QByteArray::fromHex("9000"));
QCOMPARE(apdu.getRetryCounter(), 3);
apdu.setBuffer(QByteArray::fromHex("63c2"));
QCOMPARE(apdu.getRetryCounter(), 2);
apdu.setBuffer(QByteArray::fromHex("63c1"));
QCOMPARE(apdu.getRetryCounter(), 1);
apdu.setBuffer(QByteArray::fromHex("63c0"));
QCOMPARE(apdu.getRetryCounter(), 0);
apdu.setBuffer(QByteArray::fromHex("6400"));
QCOMPARE(apdu.getRetryCounter(), -1);
apdu.setBuffer(QByteArray::fromHex("1234"));
QCOMPARE(apdu.getRetryCounter(), -1);
apdu.setBuffer(QByteArray::fromHex("12"));
QCOMPARE(apdu.getRetryCounter(), -1);
apdu.setBuffer(QByteArray());
QCOMPARE(apdu.getRetryCounter(), -1);
}
void testReturnCode_data()
{
QTest::addColumn<StatusCode>("statusCode");
QTest::addColumn<QByteArray>("bufferIn");
QTest::addColumn<QByteArray>("bufferOut");
QTest::newRow("empty") << StatusCode::EMPTY << QByteArray() << QByteArray::fromHex("0000");
QTest::newRow("01") << StatusCode::INVALID << QByteArray::fromHex("01") << QByteArray::fromHex("0001");
QTest::newRow("63c2") << StatusCode::PIN_RETRY_COUNT_2 << QByteArray::fromHex("63c2") << QByteArray::fromHex("63c2");
QTest::newRow("6401") << StatusCode::INPUT_CANCELLED << QByteArray::fromHex("6401") << QByteArray::fromHex("6401");
QTest::newRow("73c2") << StatusCode::INVALID << QByteArray::fromHex("73c2") << QByteArray::fromHex("0001");
}
void testReturnCode()
{
QFETCH(StatusCode, statusCode);
QFETCH(QByteArray, bufferIn);
QFETCH(QByteArray, bufferOut);
ResponseApdu apdu = ResponseApdu(statusCode);
QCOMPARE(apdu.getReturnCode(), statusCode);
QCOMPARE(apdu.getBuffer(), bufferOut);
apdu.setBuffer(bufferIn);
QCOMPARE(apdu.getReturnCode(), statusCode);
QCOMPARE(apdu.getBuffer(), bufferIn);
}
};
QTEST_GUILESS_MAIN(test_Apdu)
#include "test_Apdu.moc"