ebpf-blocker 1.0.0
XDP-based packet blocker using eBPF
Loading...
Searching...
No Matches
test_parser.cpp
Go to the documentation of this file.
1/// \file test_parser.cpp
2/// \brief Модульные тесты для ParseCIDR() и IPToString().
3
4#include "db.h"
5#include <gtest/gtest.h>
6
7#include <arpa/inet.h>
8
9TEST(ParserTest, FullIP) {
10 CIDR c = ParseCIDR("192.168.1.1");
11 EXPECT_EQ(c.prefixlen, 32);
12 EXPECT_EQ(c.ip, inet_addr("192.168.1.1"));
13}
14
15TEST(ParserTest, CIDR24) {
16 CIDR c = ParseCIDR("192.168.1.0/24");
17 EXPECT_EQ(c.prefixlen, 24);
18 EXPECT_EQ(c.ip, inet_addr("192.168.1.0"));
19}
20
21TEST(ParserTest, CIDR16) {
22 CIDR c = ParseCIDR("192.168.0.0/16");
23 EXPECT_EQ(c.prefixlen, 16);
24 EXPECT_EQ(c.ip, inet_addr("192.168.0.0"));
25}
26
27TEST(ParserTest, CIDR8) {
28 CIDR c = ParseCIDR("10.0.0.0/8");
29 EXPECT_EQ(c.prefixlen, 8);
30 EXPECT_EQ(c.ip, inet_addr("10.0.0.0"));
31}
32
33TEST(ParserTest, SingleIP) {
34 CIDR c = ParseCIDR("1.2.3.4");
35 EXPECT_EQ(c.prefixlen, 32);
36 EXPECT_EQ(c.ip, inet_addr("1.2.3.4"));
37}
38
39TEST(ParserTest, CIDR0) {
40 CIDR c = ParseCIDR("0.0.0.0/0");
41 EXPECT_EQ(c.prefixlen, 0);
42 EXPECT_EQ(c.ip, 0);
43}
44
45TEST(ParserTest, Localhost) {
46 CIDR c = ParseCIDR("127.0.0.1");
47 EXPECT_EQ(c.prefixlen, 32);
48 EXPECT_EQ(c.ip, inet_addr("127.0.0.1"));
49}
50
51TEST(ParserTest, IPToString) {
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");
55}
56
57TEST(ParserTest, InvalidIP) {
58 EXPECT_THROW(ParseCIDR("not-an-ip"), std::invalid_argument);
59}
60
61TEST(ParserTest, InvalidPrefix) {
62 EXPECT_THROW(ParseCIDR("10.0.0.0/33"), std::invalid_argument);
63}
64
65TEST(ParserTest, Prefixlen32) {
66 CIDR c = ParseCIDR("10.10.10.10/32");
67 EXPECT_EQ(c.prefixlen, 32);
68 EXPECT_EQ(c.ip, inet_addr("10.10.10.10"));
69}
70
71TEST(ParserTest, NetworkByteOrder) {
72 CIDR c = ParseCIDR("10.0.0.0/8");
73 uint32_t host_ip = 0x0a000000;
74 uint32_t net_ip = htonl(host_ip);
75 EXPECT_EQ(c.ip, net_ip);
76}
std::string IPToString(uint32_t ip)
Definition db.cpp:45
CIDR ParseCIDR(const std::string &str)
Definition db.cpp:18
Обёртка SQLite-базы данных и утилиты парсинга CIDR.
Распарсенное представление CIDR-подсети.
Definition db.h:21
uint32_t prefixlen
Длина префикса (0-32). 32 означает одиночный хост.
Definition db.h:23
uint32_t ip
IP-адрес в network byte order с применённой маской.
Definition db.h:22
TEST(ParserTest, FullIP)