split_strategy_test.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include <gtest/gtest.h>
  2. #include <rs_driver/driver/decoder/split_strategy.hpp>
  3. using namespace robosense::lidar;
  4. TEST(TestSplitStrategyByAngle, newBlock)
  5. {
  6. {
  7. SplitStrategyByAngle sa(10);
  8. ASSERT_FALSE(sa.newBlock(5));
  9. ASSERT_TRUE(sa.newBlock(15));
  10. }
  11. {
  12. SplitStrategyByAngle sa(10);
  13. ASSERT_FALSE(sa.newBlock(5));
  14. ASSERT_TRUE(sa.newBlock(10));
  15. ASSERT_FALSE(sa.newBlock(15));
  16. }
  17. {
  18. SplitStrategyByAngle sa(10);
  19. ASSERT_FALSE(sa.newBlock(10));
  20. ASSERT_FALSE(sa.newBlock(15));
  21. }
  22. }
  23. TEST(TestSplitStrategyByAngle, newBlock_Zero)
  24. {
  25. {
  26. SplitStrategyByAngle sa(0);
  27. ASSERT_FALSE(sa.newBlock(35999));
  28. ASSERT_TRUE(sa.newBlock(1));
  29. ASSERT_FALSE(sa.newBlock(2));
  30. }
  31. {
  32. SplitStrategyByAngle sa(0);
  33. ASSERT_FALSE(sa.newBlock(35999));
  34. ASSERT_TRUE(sa.newBlock(0));
  35. ASSERT_FALSE(sa.newBlock(2));
  36. }
  37. {
  38. SplitStrategyByAngle sa(0);
  39. ASSERT_FALSE(sa.newBlock(0));
  40. ASSERT_FALSE(sa.newBlock(2));
  41. }
  42. }
  43. TEST(TestSplitStrategyByNum, newBlock)
  44. {
  45. uint16_t max_blks = 2;
  46. SplitStrategyByNum sn(&max_blks);
  47. ASSERT_FALSE(sn.newBlock(0));
  48. ASSERT_TRUE(sn.newBlock(0));
  49. ASSERT_FALSE(sn.newBlock(0));
  50. ASSERT_TRUE(sn.newBlock(0));
  51. max_blks = 3;
  52. ASSERT_FALSE(sn.newBlock(0));
  53. ASSERT_FALSE(sn.newBlock(0));
  54. ASSERT_TRUE(sn.newBlock(0));
  55. }
  56. TEST(TestSplitStrategyBySeq, newPacket_by_seq)
  57. {
  58. SplitStrategyBySeq sn;
  59. ASSERT_EQ(sn.prev_seq_, 0);
  60. ASSERT_EQ(sn.safe_seq_min_, 0);
  61. ASSERT_EQ(sn.safe_seq_max_, 10);
  62. // init value
  63. ASSERT_FALSE(sn.newPacket(1));
  64. ASSERT_EQ(sn.prev_seq_, 1);
  65. ASSERT_EQ(sn.safe_seq_min_, 0);
  66. ASSERT_EQ(sn.safe_seq_max_, 11);
  67. // too big value
  68. ASSERT_FALSE(sn.newPacket(12));
  69. ASSERT_EQ(sn.prev_seq_, 1);
  70. ASSERT_EQ(sn.safe_seq_min_, 0);
  71. ASSERT_EQ(sn.safe_seq_max_, 11);
  72. ASSERT_FALSE(sn.newPacket(9));
  73. ASSERT_FALSE(sn.newPacket(12));
  74. ASSERT_EQ(sn.prev_seq_, 12);
  75. ASSERT_EQ(sn.safe_seq_min_, 2);
  76. ASSERT_EQ(sn.safe_seq_max_, 22);
  77. ASSERT_FALSE(sn.newPacket(11));
  78. ASSERT_EQ(sn.prev_seq_, 12);
  79. ASSERT_EQ(sn.safe_seq_min_, 2);
  80. ASSERT_EQ(sn.safe_seq_max_, 22);
  81. }
  82. TEST(TestSplitStrategyBySeq, newPacket_prev_seq)
  83. {
  84. SplitStrategyBySeq sn;
  85. ASSERT_EQ(sn.prev_seq_, 0);
  86. ASSERT_EQ(sn.safe_seq_min_, 0);
  87. ASSERT_EQ(sn.safe_seq_max_, 10);
  88. // init value
  89. ASSERT_FALSE(sn.newPacket(15));
  90. ASSERT_EQ(sn.prev_seq_, 15);
  91. ASSERT_EQ(sn.safe_seq_min_, 5);
  92. ASSERT_EQ(sn.safe_seq_max_, 25);
  93. }
  94. TEST(TestSplitStrategyBySeq, newPacket_rewind)
  95. {
  96. SplitStrategyBySeq sn;
  97. ASSERT_EQ(sn.prev_seq_, 0);
  98. ASSERT_EQ(sn.safe_seq_min_, 0);
  99. ASSERT_EQ(sn.safe_seq_max_, 10);
  100. // init value
  101. ASSERT_FALSE(sn.newPacket(2));
  102. ASSERT_EQ(sn.prev_seq_, 2);
  103. ASSERT_EQ(sn.safe_seq_min_, 0);
  104. ASSERT_EQ(sn.safe_seq_max_, 12);
  105. ASSERT_FALSE(sn.newPacket(10));
  106. ASSERT_FALSE(sn.newPacket(14));
  107. ASSERT_EQ(sn.prev_seq_, 14);
  108. ASSERT_EQ(sn.safe_seq_min_, 4);
  109. ASSERT_EQ(sn.safe_seq_max_, 24);
  110. ASSERT_TRUE(sn.newPacket(1));
  111. ASSERT_EQ(sn.prev_seq_, 1);
  112. ASSERT_EQ(sn.safe_seq_min_, 0);
  113. ASSERT_EQ(sn.safe_seq_max_, 11);
  114. }