You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DnsRDataAAAA.cpp 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // Created by robin on 1/14/18.
  3. //
  4. #include <gtest/gtest.h>
  5. #include <QByteArray>
  6. #include <QString>
  7. #include <QtNetwork/QHostAddress>
  8. #include <dns-base/RecordData/QDnsRecordDataAAAA.h>
  9. struct DnsRDataAAAATestParams
  10. {
  11. bool isValid;
  12. const char* hexData;
  13. quint32 pos;
  14. Q_IPV6ADDR ip;
  15. };
  16. class DnsRDataAAAATest : public ::testing::TestWithParam<DnsRDataAAAATestParams>
  17. {
  18. };
  19. TEST_P(DnsRDataAAAATest, parseAndGetters)
  20. {
  21. auto params = GetParam();
  22. auto data = QByteArray::fromHex(params.hexData);
  23. auto rdata = dynamic_cast<QDns::Base::QDnsRecordDataAAAA*>(QDns::Base::QDnsRecordDataAAAA(data, params.pos).clone());
  24. ASSERT_NE(rdata, nullptr);
  25. ASSERT_EQ(rdata->isValid(), params.isValid);
  26. if (rdata->isValid())
  27. {
  28. for (int i = 0; i < 16; ++i)
  29. {
  30. ASSERT_EQ(rdata->getIp().toIPv6Address()[i], params.ip[i]);
  31. }
  32. ASSERT_EQ(rdata->serialize().toHex(), QString(params.hexData).remove(" "));
  33. }
  34. delete rdata;
  35. }
  36. INSTANTIATE_TEST_CASE_P(DnsRDataAAAATestInst,
  37. DnsRDataAAAATest,
  38. ::testing::Values(
  39. DnsRDataAAAATestParams {false, "", 0},
  40. DnsRDataAAAATestParams {false, "00", 0},
  41. DnsRDataAAAATestParams {false, "acd913e3", 0, QHostAddress("172.217.19.227").toIPv6Address()},
  42. DnsRDataAAAATestParams {false, "d83ad3a3", 0, QHostAddress("216.58.211.163").toIPv6Address()},
  43. DnsRDataAAAATestParams {true, "2a001450400708120000000000002003", 0, QHostAddress("2a00:1450:4007:812::2003").toIPv6Address()},
  44. DnsRDataAAAATestParams {true, "2a00145040070812000000000000200e", 0, QHostAddress("2a00:1450:4007:812::200e").toIPv6Address()}
  45. ));