5#include <gtest/gtest.h>
9TEST(ParserTest, FullIP) {
12 EXPECT_EQ(c.
ip, inet_addr(
"192.168.1.1"));
18 EXPECT_EQ(c.
ip, inet_addr(
"192.168.1.0"));
24 EXPECT_EQ(c.
ip, inet_addr(
"192.168.0.0"));
30 EXPECT_EQ(c.
ip, inet_addr(
"10.0.0.0"));
33TEST(ParserTest, SingleIP) {
36 EXPECT_EQ(c.
ip, inet_addr(
"1.2.3.4"));
45TEST(ParserTest, Localhost) {
48 EXPECT_EQ(c.
ip, inet_addr(
"127.0.0.1"));
52 EXPECT_EQ(
IPToString(inet_addr(
"192.168.1.1")),
"192.168.1.1");
53 EXPECT_EQ(
IPToString(inet_addr(
"10.0.0.0")),
"10.0.0.0");
54 EXPECT_EQ(
IPToString(inet_addr(
"127.0.0.1")),
"127.0.0.1");
57TEST(ParserTest, InvalidIP) {
58 EXPECT_THROW(
ParseCIDR(
"not-an-ip"), std::invalid_argument);
61TEST(ParserTest, InvalidPrefix) {
62 EXPECT_THROW(
ParseCIDR(
"10.0.0.0/33"), std::invalid_argument);
65TEST(ParserTest, Prefixlen32) {
68 EXPECT_EQ(c.
ip, inet_addr(
"10.10.10.10"));
71TEST(ParserTest, NetworkByteOrder) {
73 uint32_t host_ip = 0x0a000000;
74 uint32_t net_ip = htonl(host_ip);
75 EXPECT_EQ(c.
ip, net_ip);
std::string IPToString(uint32_t ip)
CIDR ParseCIDR(const std::string &str)
Обёртка SQLite-базы данных и утилиты парсинга CIDR.
Распарсенное представление CIDR-подсети.
uint32_t prefixlen
Длина префикса (0-32). 32 означает одиночный хост.
uint32_t ip
IP-адрес в network byte order с применённой маской.