#include #include #include extern "C" { #include "prrt/proto/stores/deliveredPacketTable.h" } class DeliveredPacketTableTest : public ::testing::Test { protected: virtual void SetUp() { deliveredPacketTable = PrrtDeliveredPacketTable_create(); } PrrtDeliveredPacketTable* deliveredPacketTable; }; TEST_F(DeliveredPacketTableTest, CreateDestroy) { ASSERT_EQ(deliveredPacketTable->start, 1); free(deliveredPacketTable); } TEST_F(DeliveredPacketTableTest, SimpleTestAndSet) { for (int i = 1; i < 10; ++i) { ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, i)); ASSERT_FALSE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, i)); } } TEST_F(DeliveredPacketTableTest, SimpleMoveStart) { ASSERT_EQ(deliveredPacketTable->start, 1); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 1)); ASSERT_EQ(deliveredPacketTable->start, 2); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 5)); ASSERT_EQ(deliveredPacketTable->start, 2); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 4)); ASSERT_EQ(deliveredPacketTable->start, 2); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 3)); ASSERT_EQ(deliveredPacketTable->start, 2); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 2)); ASSERT_EQ(deliveredPacketTable->start, 6); for (int i = 1; i < 6; ++i) { ASSERT_FALSE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, i)); } } TEST_F(DeliveredPacketTableTest, ProperStop) { prrtSequenceNumber_t seqno = (prrtSequenceNumber_t) (pow(2, 15) + 2); ASSERT_FALSE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, seqno)); for (int i = 1; i < seqno / 2; ++i) { ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, i)); } ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, seqno)); ASSERT_FALSE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 5)); } TEST_F(DeliveredPacketTableTest, Sequence) { ASSERT_EQ(deliveredPacketTable->start, 1); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 4)); ASSERT_EQ(deliveredPacketTable->start, 1); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 7)); ASSERT_EQ(deliveredPacketTable->start, 1); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 1)); ASSERT_EQ(deliveredPacketTable->start, 2); ASSERT_FALSE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 4)); ASSERT_EQ(deliveredPacketTable->start, 2); ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, 8)); ASSERT_EQ(deliveredPacketTable->start, 2); } TEST_F(DeliveredPacketTableTest, ResetToZero) { for (int i = 1; i < pow(2, 16) + 5; ++i) { ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, i)); ASSERT_FALSE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, i)); } } TEST_F(DeliveredPacketTableTest, CheckBlock) { ASSERT_TRUE(PrrtDeliveredPacketTable_test_is_block_relevant(deliveredPacketTable, 1, 6)); for (int i = 1; i < 7; ++i) { ASSERT_TRUE(PrrtDeliveredPacketTable_test_set_is_number_relevant(deliveredPacketTable, i)); } ASSERT_FALSE(PrrtDeliveredPacketTable_test_is_block_relevant(deliveredPacketTable, 1, 6)); }