2
0

cb_queue_test.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. * SPDX-License-Identifier: Apache-2.0
  3. *
  4. * Change Logs:
  5. * Date Author Notes
  6. * 2023-04-08 tyx first implementation
  7. */
  8. #include <gtest/gtest.h>
  9. #include "cb_queue.h"
  10. TEST(testCase, cb_queue_test01)
  11. {
  12. cb_queue_t queue;
  13. cb_queue_init(&queue);
  14. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  15. EXPECT_EQ(cb_queue_pick(&queue), nullptr);
  16. }
  17. TEST(testCase, cb_queue_test02)
  18. {
  19. cb_queue_t queue;
  20. cb_queue_item_t item;
  21. cb_queue_init(&queue);
  22. cb_queue_item_init(&item);
  23. cb_queue_put(&queue, &item);
  24. EXPECT_EQ(cb_queue_pick(&queue), &item);
  25. EXPECT_EQ(cb_queue_get(&queue), &item);
  26. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  27. cb_queue_put(&queue, &item);
  28. cb_queue_put(&queue, &item);
  29. EXPECT_EQ(cb_queue_get(&queue), &item);
  30. EXPECT_EQ(cb_queue_pick(&queue), nullptr);
  31. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  32. }
  33. TEST(testCase, cb_queue_test03)
  34. {
  35. cb_queue_t queue;
  36. cb_queue_item_t item1, item2;
  37. cb_queue_init(&queue);
  38. cb_queue_item_init(&item1);
  39. cb_queue_item_init(&item2);
  40. cb_queue_put(&queue, &item1);
  41. cb_queue_put(&queue, &item2);
  42. EXPECT_EQ(cb_queue_pick(&queue), &item1);
  43. EXPECT_EQ(cb_queue_get(&queue), &item1);
  44. EXPECT_EQ(cb_queue_pick(&queue), &item2);
  45. EXPECT_EQ(cb_queue_get(&queue), &item2);
  46. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  47. cb_queue_put(&queue, &item2);
  48. cb_queue_put(&queue, &item1);
  49. EXPECT_EQ(cb_queue_pick(&queue), &item2);
  50. EXPECT_EQ(cb_queue_get(&queue), &item2);
  51. EXPECT_EQ(cb_queue_pick(&queue), &item1);
  52. EXPECT_EQ(cb_queue_get(&queue), &item1);
  53. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  54. cb_queue_put(&queue, &item2);
  55. cb_queue_put(&queue, &item1);
  56. cb_queue_put(&queue, &item2);
  57. EXPECT_EQ(cb_queue_pick(&queue), &item1);
  58. EXPECT_EQ(cb_queue_get(&queue), &item1);
  59. EXPECT_EQ(cb_queue_pick(&queue), &item2);
  60. EXPECT_EQ(cb_queue_get(&queue), &item2);
  61. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  62. }
  63. TEST(testCase, cb_queue_test04)
  64. {
  65. cb_queue_t queue;
  66. cb_queue_item_t item1, item2, item3;
  67. cb_queue_init(&queue);
  68. cb_queue_item_init(&item1);
  69. cb_queue_item_init(&item2);
  70. cb_queue_item_init(&item3);
  71. cb_queue_put(&queue, &item1);
  72. cb_queue_put(&queue, &item3);
  73. cb_queue_insert(&queue, &item2, 0);
  74. EXPECT_EQ(cb_queue_get(&queue), &item2);
  75. EXPECT_EQ(cb_queue_get(&queue), &item1);
  76. EXPECT_EQ(cb_queue_get(&queue), &item3);
  77. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  78. cb_queue_put(&queue, &item1);
  79. cb_queue_put(&queue, &item3);
  80. cb_queue_insert(&queue, &item2, 1);
  81. EXPECT_EQ(cb_queue_get(&queue), &item1);
  82. EXPECT_EQ(cb_queue_get(&queue), &item2);
  83. EXPECT_EQ(cb_queue_get(&queue), &item3);
  84. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  85. cb_queue_put(&queue, &item1);
  86. cb_queue_put(&queue, &item3);
  87. cb_queue_insert(&queue, &item2, -2);
  88. EXPECT_EQ(cb_queue_get(&queue), &item1);
  89. EXPECT_EQ(cb_queue_get(&queue), &item2);
  90. EXPECT_EQ(cb_queue_get(&queue), &item3);
  91. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  92. cb_queue_put(&queue, &item1);
  93. cb_queue_put(&queue, &item3);
  94. cb_queue_insert(&queue, &item2, -2);
  95. EXPECT_EQ(cb_queue_get(&queue), &item1);
  96. EXPECT_EQ(cb_queue_get(&queue), &item2);
  97. EXPECT_EQ(cb_queue_get(&queue), &item3);
  98. EXPECT_EQ(cb_queue_get(&queue), nullptr);
  99. }