GrabBag/SDK/Lidar/rslidar/rs_driver/test/split_strategy_test.cpp

138 lines
3.0 KiB
C++

#include <gtest/gtest.h>
#include <rs_driver/driver/decoder/split_strategy.hpp>
using namespace robosense::lidar;
TEST(TestSplitStrategyByAngle, newBlock)
{
{
SplitStrategyByAngle sa(10);
ASSERT_FALSE(sa.newBlock(5));
ASSERT_TRUE(sa.newBlock(15));
}
{
SplitStrategyByAngle sa(10);
ASSERT_FALSE(sa.newBlock(5));
ASSERT_TRUE(sa.newBlock(10));
ASSERT_FALSE(sa.newBlock(15));
}
{
SplitStrategyByAngle sa(10);
ASSERT_FALSE(sa.newBlock(10));
ASSERT_FALSE(sa.newBlock(15));
}
}
TEST(TestSplitStrategyByAngle, newBlock_Zero)
{
{
SplitStrategyByAngle sa(0);
ASSERT_FALSE(sa.newBlock(35999));
ASSERT_TRUE(sa.newBlock(1));
ASSERT_FALSE(sa.newBlock(2));
}
{
SplitStrategyByAngle sa(0);
ASSERT_FALSE(sa.newBlock(35999));
ASSERT_TRUE(sa.newBlock(0));
ASSERT_FALSE(sa.newBlock(2));
}
{
SplitStrategyByAngle sa(0);
ASSERT_FALSE(sa.newBlock(0));
ASSERT_FALSE(sa.newBlock(2));
}
}
TEST(TestSplitStrategyByNum, newBlock)
{
uint16_t max_blks = 2;
SplitStrategyByNum sn(&max_blks);
ASSERT_FALSE(sn.newBlock(0));
ASSERT_TRUE(sn.newBlock(0));
ASSERT_FALSE(sn.newBlock(0));
ASSERT_TRUE(sn.newBlock(0));
max_blks = 3;
ASSERT_FALSE(sn.newBlock(0));
ASSERT_FALSE(sn.newBlock(0));
ASSERT_TRUE(sn.newBlock(0));
}
TEST(TestSplitStrategyBySeq, newPacket_by_seq)
{
SplitStrategyBySeq sn;
ASSERT_EQ(sn.prev_seq_, 0);
ASSERT_EQ(sn.safe_seq_min_, 0);
ASSERT_EQ(sn.safe_seq_max_, 10);
// init value
ASSERT_FALSE(sn.newPacket(1));
ASSERT_EQ(sn.prev_seq_, 1);
ASSERT_EQ(sn.safe_seq_min_, 0);
ASSERT_EQ(sn.safe_seq_max_, 11);
// too big value
ASSERT_FALSE(sn.newPacket(12));
ASSERT_EQ(sn.prev_seq_, 1);
ASSERT_EQ(sn.safe_seq_min_, 0);
ASSERT_EQ(sn.safe_seq_max_, 11);
ASSERT_FALSE(sn.newPacket(9));
ASSERT_FALSE(sn.newPacket(12));
ASSERT_EQ(sn.prev_seq_, 12);
ASSERT_EQ(sn.safe_seq_min_, 2);
ASSERT_EQ(sn.safe_seq_max_, 22);
ASSERT_FALSE(sn.newPacket(11));
ASSERT_EQ(sn.prev_seq_, 12);
ASSERT_EQ(sn.safe_seq_min_, 2);
ASSERT_EQ(sn.safe_seq_max_, 22);
}
TEST(TestSplitStrategyBySeq, newPacket_prev_seq)
{
SplitStrategyBySeq sn;
ASSERT_EQ(sn.prev_seq_, 0);
ASSERT_EQ(sn.safe_seq_min_, 0);
ASSERT_EQ(sn.safe_seq_max_, 10);
// init value
ASSERT_FALSE(sn.newPacket(15));
ASSERT_EQ(sn.prev_seq_, 15);
ASSERT_EQ(sn.safe_seq_min_, 5);
ASSERT_EQ(sn.safe_seq_max_, 25);
}
TEST(TestSplitStrategyBySeq, newPacket_rewind)
{
SplitStrategyBySeq sn;
ASSERT_EQ(sn.prev_seq_, 0);
ASSERT_EQ(sn.safe_seq_min_, 0);
ASSERT_EQ(sn.safe_seq_max_, 10);
// init value
ASSERT_FALSE(sn.newPacket(2));
ASSERT_EQ(sn.prev_seq_, 2);
ASSERT_EQ(sn.safe_seq_min_, 0);
ASSERT_EQ(sn.safe_seq_max_, 12);
ASSERT_FALSE(sn.newPacket(10));
ASSERT_FALSE(sn.newPacket(14));
ASSERT_EQ(sn.prev_seq_, 14);
ASSERT_EQ(sn.safe_seq_min_, 4);
ASSERT_EQ(sn.safe_seq_max_, 24);
ASSERT_TRUE(sn.newPacket(1));
ASSERT_EQ(sn.prev_seq_, 1);
ASSERT_EQ(sn.safe_seq_min_, 0);
ASSERT_EQ(sn.safe_seq_max_, 11);
}