TEST(IPAddress, ToSockaddrStorage) { // test v4 address { string strAddr("126.131.128.23"); IPAddress addr(strAddr); sockaddr_storage out; ASSERT_TRUE(addr.isV4()); // test invariant EXPECT_GT(addr.toSockaddrStorage(&out), 0); IPAddress sockAddr((sockaddr*)&out); ASSERT_TRUE(sockAddr.isV4()); EXPECT_EQ(strAddr, sockAddr.str()); } // test v6 address { string strAddr("2620:0:1cfe:face:b00c::3"); IPAddress addr(strAddr); sockaddr_storage out; ASSERT_TRUE(addr.isV6()); // test invariant EXPECT_GT(addr.toSockaddrStorage(&out), 0); IPAddress sockAddr((sockaddr*)&out); ASSERT_TRUE(sockAddr.isV6()); EXPECT_EQ(strAddr, sockAddr.str()); } // test nullptr exception { sockaddr_storage *out = nullptr; IPAddress addr("127.0.0.1"); EXPECT_THROW(addr.toSockaddrStorage(out), IPAddressFormatException); } // test invalid family exception { IPAddress addr; sockaddr_storage out; ASSERT_EQ(AF_UNSPEC, addr.family()); EXPECT_THROW(addr.toSockaddrStorage(&out), InvalidAddressFamilyException); } }