// // Created by robin on 1/14/18. // #include #include #include #include #include "dns-base/RecordData/QDnsRecordDataA.h" struct DnsRDataATestParams { bool isValid; const char* hexData; quint32 pos; quint32 ip; }; class DnsRDataATest : public ::testing::TestWithParam { }; TEST_P(DnsRDataATest, parseAndGetters) { auto params = GetParam(); auto data = QByteArray::fromHex(params.hexData); auto rdata = dynamic_cast(QDns::Base::QDnsRecordDataA(data, params.pos).clone()); ASSERT_NE(rdata, nullptr); ASSERT_EQ(rdata->isValid(), params.isValid); if (rdata->isValid()) { ASSERT_EQ(rdata->getIp().toIPv4Address(), params.ip); ASSERT_EQ(rdata->serialize().toHex(), QString(params.hexData).remove(" ")); } delete rdata; } INSTANTIATE_TEST_CASE_P(DnsRDataATestInst, DnsRDataATest, ::testing::Values( DnsRDataATestParams {false, "", 0}, DnsRDataATestParams {false, "00", 0}, DnsRDataATestParams {true, "acd913e3", 0, QHostAddress("172.217.19.227").toIPv4Address()}, DnsRDataATestParams {true, "d83ad3a3", 0, QHostAddress("216.58.211.163").toIPv4Address()} ));