unittest/vslib/TestFdbInfo.cpp (143 lines of code) (raw):
#include "FdbInfo.h"
#include <linux/if.h>
#include <gtest/gtest.h>
using namespace saivs;
TEST(FdbInfo, getPortId)
{
FdbInfo fdb;
EXPECT_EQ(fdb.getPortId(), 0);
}
TEST(FdbInfo, getVlanId)
{
FdbInfo fdb;
EXPECT_EQ(fdb.getVlanId(), 0);
}
TEST(FdbInfo, getBridgePortId)
{
FdbInfo fdb;
EXPECT_EQ(fdb.getBridgePortId(), 0);
}
TEST(FdbInfo, getFdbEntry)
{
FdbInfo fdb;
auto entry = fdb.getFdbEntry();
EXPECT_EQ(entry.switch_id, 0);
}
TEST(FdbInfo, getTimestamp)
{
FdbInfo fdb;
EXPECT_EQ(fdb.getTimestamp(), 0);
}
TEST(FdbInfo, serialize)
{
FdbInfo fdb;
auto str = fdb.serialize();
EXPECT_EQ(str,
"{\"bridge_port_id\":\"oid:0x0\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:00\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"0\"}");
}
TEST(FdbInfo, deserialize)
{
std::string str =
"{\"bridge_port_id\":\"oid:0x1\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:00\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"0\"}";
auto fdb = FdbInfo::deserialize(str);
EXPECT_EQ(fdb.getBridgePortId(), 1);
}
TEST(FdbInfo, setFdbEntry)
{
FdbInfo fdb;
sai_fdb_entry_t entry;
entry.switch_id = 2;
fdb.setFdbEntry(entry);
auto en = fdb.getFdbEntry();
EXPECT_EQ(en.switch_id, 2);
}
TEST(FdbInfo, setVlanId)
{
FdbInfo info;
info.setVlanId(7);
EXPECT_EQ(info.getVlanId(), 7);
}
TEST(FdbInfo, setPortId)
{
FdbInfo info;
info.setPortId(7);
EXPECT_EQ(info.getPortId(), 7);
}
TEST(FdbInfo, setBridgePortId)
{
FdbInfo info;
info.setBridgePortId(7);
EXPECT_EQ(info.getBridgePortId(), 7);
}
TEST(FdbInfo, setTimestamp)
{
FdbInfo info;
info.setTimestamp(7);
EXPECT_EQ(info.getTimestamp(), 7);
}
TEST(FdbInfo, operator_bracket)
{
std::string strA =
"{\"bridge_port_id\":\"oid:0x1\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:00\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"0\"}";
std::string strB =
"{\"bridge_port_id\":\"oid:0x1\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:01\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"0\"}";
auto a = FdbInfo::deserialize(strA);
auto b = FdbInfo::deserialize(strB);
EXPECT_EQ(a.operator()(a,b), true);
EXPECT_EQ(a.operator()(b,a), false);
}
TEST(FdbInfo, operator_lt)
{
std::string strA =
"{\"bridge_port_id\":\"oid:0x1\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:00\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"0\"}";
std::string strB =
"{\"bridge_port_id\":\"oid:0x1\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:01\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"0\"}";
auto a = FdbInfo::deserialize(strA);
auto b = FdbInfo::deserialize(strB);
EXPECT_EQ(a < b, true);
EXPECT_EQ(b < a, false);
EXPECT_EQ(a < a, false);
EXPECT_EQ(b < b, false);
std::string strC =
"{\"bridge_port_id\":\"oid:0x1\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:00\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"1\"}";
std::string strD =
"{\"bridge_port_id\":\"oid:0x1\","
"\"fdb_entry\":\"{\\\"bvid\\\":\\\"oid:0x0\\\",\\\"mac\\\":\\\"00:00:00:00:00:00\\\",\\\"switch_id\\\":\\\"oid:0x0\\\"}\","
"\"port_id\":\"oid:0x0\","
"\"timestamp\":\"0\","
"\"vlan_id\":\"2\"}";
auto c = FdbInfo::deserialize(strC);
auto d = FdbInfo::deserialize(strD);
EXPECT_EQ(c < d, true);
EXPECT_EQ(d < c, false);
EXPECT_EQ(c < c, false);
EXPECT_EQ(d < d, false);
}