|
@@ -18,7 +18,9 @@
|
|
#include <asiolink/io_error.h>
|
|
#include <asiolink/io_error.h>
|
|
#include <asiolink/io_address.h>
|
|
#include <asiolink/io_address.h>
|
|
|
|
|
|
|
|
+#include <algorithm>
|
|
#include <cstring>
|
|
#include <cstring>
|
|
|
|
+#include <vector>
|
|
|
|
|
|
using namespace isc::asiolink;
|
|
using namespace isc::asiolink;
|
|
|
|
|
|
@@ -84,6 +86,48 @@ TEST(IOAddressTest, fromBytes) {
|
|
EXPECT_EQ(addr.toText(), IOAddress("192.0.2.3").toText());
|
|
EXPECT_EQ(addr.toText(), IOAddress("192.0.2.3").toText());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+TEST(IOAddressTest, toBytes) {
|
|
|
|
+
|
|
|
|
+ // Address and network byte-order representation of the address.
|
|
|
|
+ const char* V4STRING = "192.0.2.1";
|
|
|
|
+ uint8_t V4[] = {0xc0, 0x00, 0x02, 0x01};
|
|
|
|
+
|
|
|
|
+ const char* V6STRING = "2001:db8:1::dead:beef";
|
|
|
|
+ uint8_t V6[] = {
|
|
|
|
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00,
|
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0xbe, 0xef
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // Do the V4 check.
|
|
|
|
+ IOAddress v4address(V4STRING);
|
|
|
|
+ std::vector<uint8_t> v4bytes = v4address.toBytes();
|
|
|
|
+ EXPECT_EQ(sizeof(V4), v4bytes.size());
|
|
|
|
+ EXPECT_TRUE(std::equal(v4bytes.begin(), v4bytes.end(), &V4[0]));
|
|
|
|
+
|
|
|
|
+ // Do the same for V6.
|
|
|
|
+ IOAddress v6address(V6STRING);
|
|
|
|
+ std::vector<uint8_t> v6bytes = v6address.toBytes();
|
|
|
|
+ EXPECT_EQ(sizeof(V6), v6bytes.size());
|
|
|
|
+ EXPECT_TRUE(std::equal(v6bytes.begin(), v6bytes.end(), &V6[0]));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+TEST(IOAddressTest, isV4) {
|
|
|
|
+ const IOAddress address4("192.0.2.1");
|
|
|
|
+ const IOAddress address6("2001:db8:1::dead:beef");
|
|
|
|
+
|
|
|
|
+ EXPECT_TRUE(address4.isV4());
|
|
|
|
+ EXPECT_FALSE(address6.isV4());
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+TEST(IOAddressTest, isV6) {
|
|
|
|
+ const IOAddress address4("192.0.2.1");
|
|
|
|
+ const IOAddress address6("2001:db8:1::dead:beef");
|
|
|
|
+
|
|
|
|
+ EXPECT_FALSE(address4.isV6());
|
|
|
|
+ EXPECT_TRUE(address6.isV6());
|
|
|
|
+}
|
|
|
|
+
|
|
TEST(IOAddressTest, uint32) {
|
|
TEST(IOAddressTest, uint32) {
|
|
IOAddress addr1("192.0.2.5");
|
|
IOAddress addr1("192.0.2.5");
|
|
|
|
|