blob: 012e1b0c357570ea3f130b35fdda5489e0ce29f4 [file] [log] [blame]
William A. Kennington IIIb25086a2023-01-09 18:53:29 -08001#include <stdplus/net/addr/ether.hpp>
2
3#include <gtest/gtest.h>
4
5namespace stdplus
6{
7
8TEST(EqualOperator, EtherAddr)
9{
10 EXPECT_EQ((EtherAddr{1}), (ether_addr{1}));
11 EXPECT_EQ((EtherAddr{}), (EtherAddr{}));
12 EXPECT_NE((EtherAddr{1}), (EtherAddr{ether_addr{}}));
13 std::hash<EtherAddr>{}(EtherAddr{});
14}
15
William A. Kennington III84c7aa22023-06-14 13:26:47 -070016TEST(FromStr, EtherAddr)
17{
18 EXPECT_THROW(fromStr<EtherAddr>("0x:00:00:00:00:00"),
19 std::invalid_argument);
20 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00:00"), std::invalid_argument);
21 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00:00:"), std::invalid_argument);
22 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00::00"), std::invalid_argument);
23 EXPECT_THROW(fromStr<EtherAddr>(":00:00:00:00:00"), std::invalid_argument);
24 EXPECT_THROW(fromStr<EtherAddr>("00::00:00:00:00"), std::invalid_argument);
25 EXPECT_THROW(fromStr<EtherAddr>(":::::"), std::invalid_argument);
26 EXPECT_THROW(fromStr<EtherAddr>("00:0:0:0:0"), std::invalid_argument);
27 EXPECT_THROW(fromStr<EtherAddr>("00:00:00:00:00:00:00"),
28 std::invalid_argument);
29 EXPECT_THROW(fromStr<EtherAddr>(""), std::invalid_argument);
30 EXPECT_THROW(fromStr<EtherAddr>("123456789XYZ"), std::invalid_argument);
31 EXPECT_THROW(fromStr<EtherAddr>("123456789AB"), std::overflow_error);
32 EXPECT_THROW(fromStr<EtherAddr>("123456789ABCD"), std::overflow_error);
33
34 EXPECT_EQ((EtherAddr{}), fromStr<EtherAddr>("00:00:00:00:00:00"));
35 EXPECT_EQ((EtherAddr{0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa}),
36 fromStr<EtherAddr>("FF:EE:DD:cc:bb:aa"));
37 EXPECT_EQ((EtherAddr{0x00, 0x01, 0x02, 0x03, 0x04, 0x05}),
38 fromStr<EtherAddr>("0:1:2:3:4:5"));
39 EXPECT_EQ((EtherAddr{0x01, 0x23, 0x45, 0x67, 0x89, 0xab}),
40 fromStr<EtherAddr>("0123456789AB"));
41 EXPECT_EQ((EtherAddr{0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa}),
42 fromStr<EtherAddr>("FFEEDDccbbaa"));
43}
44
William A. Kennington IIIb25086a2023-01-09 18:53:29 -080045} // namespace stdplus