blob: 80059069eb4efd66ffbb43ceaf20e4955deeb271 [file] [log] [blame]
William A. Kennington III8955b5e2023-06-14 16:30:51 -07001#include <fmt/format.h>
2
William A. Kennington IIIb25086a2023-01-09 18:53:29 -08003#include <stdplus/net/addr/ether.hpp>
4
5#include <gtest/gtest.h>
6
7namespace stdplus
8{
9
10TEST(EqualOperator, EtherAddr)
11{
12 EXPECT_EQ((EtherAddr{1}), (ether_addr{1}));
13 EXPECT_EQ((EtherAddr{}), (EtherAddr{}));
14 EXPECT_NE((EtherAddr{1}), (EtherAddr{ether_addr{}}));
15 std::hash<EtherAddr>{}(EtherAddr{});
16}
17
William A. Kennington III8955b5e2023-06-14 16:30:51 -070018TEST(ToStr, EthAddr)
19{
20 ToStrHandle<ToStr<EtherAddr>> tsh;
21 EXPECT_EQ("11:22:33:44:55:66",
22 tsh(EtherAddr{0x11, 0x22, 0x33, 0x44, 0x55, 0x66}));
23 EXPECT_EQ("01:02:03:04:05:67",
24 tsh(EtherAddr{0x01, 0x02, 0x03, 0x04, 0x05, 0x67}));
25 EXPECT_EQ("00:00:00:00:00:00",
26 tsh(ether_addr{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}));
27 EXPECT_EQ(
28 "a 01:02:03:04:05:67 b",
29 fmt::format("a {} b", EtherAddr{0x01, 0x02, 0x03, 0x04, 0x05, 0x67}));
30}
31
William A. Kennington III84c7aa22023-06-14 13:26:47 -070032TEST(FromStr, EtherAddr)
33{
34 EXPECT_THROW(fromStr<EtherAddr>("0x:00:00:00:00:00"),
35 std::invalid_argument);
36 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00:00"), std::invalid_argument);
37 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00:00:"), std::invalid_argument);
38 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00::00"), std::invalid_argument);
39 EXPECT_THROW(fromStr<EtherAddr>(":00:00:00:00:00"), std::invalid_argument);
40 EXPECT_THROW(fromStr<EtherAddr>("00::00:00:00:00"), std::invalid_argument);
41 EXPECT_THROW(fromStr<EtherAddr>(":::::"), std::invalid_argument);
42 EXPECT_THROW(fromStr<EtherAddr>("00:0:0:0:0"), std::invalid_argument);
43 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00:00:00:00"),
44 std::invalid_argument);
45 EXPECT_THROW(fromStr<EtherAddr>(""), std::invalid_argument);
46 EXPECT_THROW(fromStr<EtherAddr>("123456789XYZ"), std::invalid_argument);
47 EXPECT_THROW(fromStr<EtherAddr>("123456789AB"), std::overflow_error);
48 EXPECT_THROW(fromStr<EtherAddr>("123456789ABCD"), std::overflow_error);
49
50 EXPECT_EQ((EtherAddr{}), fromStr<EtherAddr>("00:00:00:00:00:00"));
51 EXPECT_EQ((EtherAddr{0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa}),
52 fromStr<EtherAddr>("FF:EE:DD:cc:bb:aa"));
53 EXPECT_EQ((EtherAddr{0x00, 0x01, 0x02, 0x03, 0x04, 0x05}),
54 fromStr<EtherAddr>("0:1:2:3:4:5"));
55 EXPECT_EQ((EtherAddr{0x01, 0x23, 0x45, 0x67, 0x89, 0xab}),
56 fromStr<EtherAddr>("0123456789AB"));
57 EXPECT_EQ((EtherAddr{0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa}),
58 fromStr<EtherAddr>("FFEEDDccbbaa"));
59}
60
William A. Kennington IIIb25086a2023-01-09 18:53:29 -080061} // namespace stdplus