Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

DnsRDataA.cpp 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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/QDnsRecordDataA.h"
  9. struct DnsRDataATestParams
  10. {
  11. bool isValid;
  12. const char* hexData;
  13. quint32 pos;
  14. quint32 ip;
  15. };
  16. class DnsRDataATest : public ::testing::TestWithParam<DnsRDataATestParams>
  17. {
  18. };
  19. TEST_P(DnsRDataATest, parseAndGetters)
  20. {
  21. auto params = GetParam();
  22. auto data = QByteArray::fromHex(params.hexData);
  23. auto rdata = dynamic_cast<QDns::Base::QDnsRecordDataA*>(QDns::Base::QDnsRecordDataA(data, params.pos).clone());
  24. ASSERT_NE(rdata, nullptr);
  25. ASSERT_EQ(rdata->isValid(), params.isValid);
  26. if (rdata->isValid())
  27. {
  28. ASSERT_EQ(rdata->getIp().toIPv4Address(), params.ip);
  29. ASSERT_EQ(rdata->serialize().toHex(), QString(params.hexData).remove(" "));
  30. }
  31. delete rdata;
  32. }
  33. INSTANTIATE_TEST_CASE_P(DnsRDataATestInst,
  34. DnsRDataATest,
  35. ::testing::Values(
  36. DnsRDataATestParams {false, "", 0},
  37. DnsRDataATestParams {false, "00", 0},
  38. DnsRDataATestParams {true, "acd913e3", 0, QHostAddress("172.217.19.227").toIPv4Address()},
  39. DnsRDataATestParams {true, "d83ad3a3", 0, QHostAddress("216.58.211.163").toIPv4Address()}
  40. ));