// // Created by robin on 1/14/18. // #include <gtest/gtest.h> #include <QByteArray> #include <QString> #include <QtNetwork/QHostAddress> #include <dns-base/RecordData/QDnsRecordDataAAAA.h> struct DnsRDataAAAATestParams { bool isValid; const char* hexData; quint32 pos; Q_IPV6ADDR ip; }; class DnsRDataAAAATest : public ::testing::TestWithParam<DnsRDataAAAATestParams> { }; TEST_P(DnsRDataAAAATest, parseAndGetters) { auto params = GetParam(); auto data = QByteArray::fromHex(params.hexData); auto rdata = dynamic_cast<QDns::Base::QDnsRecordDataAAAA*>(QDns::Base::QDnsRecordDataAAAA(data, params.pos).clone()); ASSERT_NE(rdata, nullptr); ASSERT_EQ(rdata->isValid(), params.isValid); if (rdata->isValid()) { for (int i = 0; i < 16; ++i) { ASSERT_EQ(rdata->getIp().toIPv6Address()[i], params.ip[i]); } ASSERT_EQ(rdata->serialize().toHex(), QString(params.hexData).remove(" ")); } delete rdata; } INSTANTIATE_TEST_CASE_P(DnsRDataAAAATestInst, DnsRDataAAAATest, ::testing::Values( DnsRDataAAAATestParams {false, "", 0}, DnsRDataAAAATestParams {false, "00", 0}, DnsRDataAAAATestParams {false, "acd913e3", 0, QHostAddress("172.217.19.227").toIPv6Address()}, DnsRDataAAAATestParams {false, "d83ad3a3", 0, QHostAddress("216.58.211.163").toIPv6Address()}, DnsRDataAAAATestParams {true, "2a001450400708120000000000002003", 0, QHostAddress("2a00:1450:4007:812::2003").toIPv6Address()}, DnsRDataAAAATestParams {true, "2a00145040070812000000000000200e", 0, QHostAddress("2a00:1450:4007:812::200e").toIPv6Address()} ));