mirror of
https://github.com/mfontanini/libtins
synced 2026-01-25 11:41:35 +01:00
92 lines
2.6 KiB
C++
92 lines
2.6 KiB
C++
#include <gtest/gtest.h>
|
|
#include <cstring>
|
|
#include <string>
|
|
#include <stdint.h>
|
|
#include "sll.h"
|
|
#include "hw_address.h"
|
|
#include "constants.h"
|
|
#include "ip.h"
|
|
|
|
using namespace std;
|
|
using namespace Tins;
|
|
|
|
class SLLTest : public testing::Test {
|
|
public:
|
|
static const uint8_t expected_packet[];
|
|
|
|
void test_equals(const SLL& sll1, const SLL& sll2);
|
|
};
|
|
|
|
const uint8_t SLLTest::expected_packet[] = {
|
|
0, 0, 0, 1, 0, 6, 0, 27, 17, 210, 27, 235, 0, 0, 8, 0, 69, 0, 0, 116,
|
|
65, 18, 0, 0, 44, 6, 156, 54, 173, 194, 66, 109, 192, 168, 0, 100,
|
|
3, 225, 141, 4, 55, 61, 150, 161, 85, 106, 73, 189, 128, 24, 1, 0,
|
|
202, 119, 0, 0, 1, 1, 8, 10, 71, 45, 40, 171, 0, 19, 78, 86, 23, 3,
|
|
1, 0, 59, 168, 147, 182, 150, 159, 178, 204, 116, 62, 85, 80, 167,
|
|
23, 24, 173, 236, 55, 46, 190, 205, 255, 19, 248, 129, 198, 140, 208,
|
|
60, 79, 59, 38, 165, 131, 33, 105, 212, 112, 174, 80, 211, 48, 37,
|
|
116, 108, 109, 33, 36, 231, 154, 131, 112, 246, 3, 180, 199, 158, 205,
|
|
123, 238
|
|
};
|
|
|
|
TEST_F(SLLTest, DefaultConstructor) {
|
|
SLL sll;
|
|
EXPECT_EQ(0, sll.packet_type());
|
|
EXPECT_EQ(0, sll.lladdr_type());
|
|
EXPECT_EQ(0, sll.lladdr_len());
|
|
EXPECT_EQ(0, sll.protocol());
|
|
EXPECT_EQ(SLL::address_type("00:00:00:00:00:00:00:00"), sll.address());
|
|
}
|
|
|
|
TEST_F(SLLTest, ConstructorFromBuffer) {
|
|
typedef HWAddress<6> address_type;
|
|
address_type addr("00:1b:11:d2:1b:eb");
|
|
SLL sll(expected_packet, sizeof(expected_packet));
|
|
EXPECT_EQ(0, sll.packet_type());
|
|
EXPECT_EQ(1, sll.lladdr_type());
|
|
EXPECT_EQ(6, sll.lladdr_len());
|
|
EXPECT_EQ(Constants::Ethernet::IP, sll.protocol());
|
|
EXPECT_EQ(addr, sll.address());
|
|
|
|
ASSERT_TRUE(sll.inner_pdu() != NULL);
|
|
EXPECT_EQ(sll.find_pdu<IP>(), sll.inner_pdu());
|
|
}
|
|
|
|
TEST_F(SLLTest, Serialize) {
|
|
SLL sll(expected_packet, sizeof(expected_packet));
|
|
SLL::serialization_type buffer = sll.serialize();
|
|
ASSERT_EQ(sizeof(expected_packet), buffer.size());
|
|
EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
|
|
}
|
|
|
|
TEST_F(SLLTest, PacketType) {
|
|
SLL sll;
|
|
sll.packet_type(0x923f);
|
|
EXPECT_EQ(0x923f, sll.packet_type());
|
|
}
|
|
|
|
TEST_F(SLLTest, LLADDRType) {
|
|
SLL sll;
|
|
sll.lladdr_type(0x923f);
|
|
EXPECT_EQ(0x923f, sll.lladdr_type());
|
|
}
|
|
|
|
TEST_F(SLLTest, LLADDRLen) {
|
|
SLL sll;
|
|
sll.lladdr_len(0x923f);
|
|
EXPECT_EQ(0x923f, sll.lladdr_len());
|
|
}
|
|
|
|
TEST_F(SLLTest, Protocol) {
|
|
SLL sll;
|
|
sll.protocol(0x923f);
|
|
EXPECT_EQ(0x923f, sll.protocol());
|
|
}
|
|
|
|
TEST_F(SLLTest, Address) {
|
|
HWAddress<6> addr = "00:01:02:03:04:05";
|
|
SLL sll;
|
|
sll.address(addr);
|
|
EXPECT_EQ(addr, sll.address());
|
|
}
|