bh_list_test.cc 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /*
  2. * Copyright (C) 2019 Intel Corporation. All rights reserved.
  3. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. */
  5. #include "bh_platform.h"
  6. #include "test_helper.h"
  7. #include "gtest/gtest.h"
  8. class bh_list_test_suite : public testing::Test
  9. {
  10. protected:
  11. // You should make the members protected s.t. they can be
  12. // accessed from sub-classes.
  13. // virtual void SetUp() will be called before each test is run. You
  14. // should define it if you need to initialize the variables.
  15. // Otherwise, this can be skipped.
  16. virtual void SetUp() {}
  17. // virtual void TearDown() will be called after each test is run.
  18. // You should define it if there is cleanup work to do. Otherwise,
  19. // you don't have to provide it.
  20. //
  21. virtual void TearDown() {}
  22. public:
  23. WAMRRuntimeRAII<512 * 1024> runtime;
  24. };
  25. TEST_F(bh_list_test_suite, bh_list_init)
  26. {
  27. bh_list list_test;
  28. // Normally.
  29. EXPECT_EQ(BH_LIST_SUCCESS, bh_list_init(&list_test));
  30. // Illegal parameters.
  31. EXPECT_EQ(BH_LIST_ERROR, bh_list_init(nullptr));
  32. }
  33. TEST_F(bh_list_test_suite, bh_list_insert)
  34. {
  35. bh_list list_test;
  36. bh_list_link elem_insert;
  37. // Normally.
  38. bh_list_init(&list_test);
  39. EXPECT_EQ(BH_LIST_SUCCESS, bh_list_insert(&list_test, &elem_insert));
  40. // Illegal parameters.
  41. EXPECT_EQ(BH_LIST_ERROR, bh_list_insert(nullptr, nullptr));
  42. EXPECT_EQ(BH_LIST_ERROR, bh_list_insert(&list_test, nullptr));
  43. }
  44. TEST_F(bh_list_test_suite, bh_list_remove)
  45. {
  46. bh_list list_test;
  47. bh_list_link elem_insert_1;
  48. bh_list_link elem_insert_2;
  49. bh_list_link elem_insert_3;
  50. bh_list_link elem_insert_4;
  51. // Normally.
  52. bh_list_init(&list_test);
  53. bh_list_insert(&list_test, &elem_insert_1);
  54. bh_list_insert(&list_test, &elem_insert_2);
  55. bh_list_insert(&list_test, &elem_insert_3);
  56. bh_list_insert(&list_test, &elem_insert_4);
  57. EXPECT_EQ(BH_LIST_SUCCESS, bh_list_remove(&list_test, &elem_insert_1));
  58. // The elem specified by parameter is not in the list.
  59. EXPECT_EQ(BH_LIST_ERROR, bh_list_remove(&list_test, &elem_insert_1));
  60. // Illegal parameters.
  61. EXPECT_EQ(BH_LIST_ERROR, bh_list_remove(&list_test, nullptr));
  62. EXPECT_EQ(BH_LIST_ERROR, bh_list_remove(nullptr, nullptr));
  63. EXPECT_EQ(BH_LIST_ERROR, bh_list_remove(nullptr, &elem_insert_1));
  64. }
  65. TEST_F(bh_list_test_suite, bh_list_length)
  66. {
  67. bh_list list_test;
  68. bh_list_link elem_insert_1;
  69. bh_list_link elem_insert_2;
  70. bh_list_init(&list_test);
  71. // The length is 0.
  72. EXPECT_EQ(0, bh_list_length(&list_test));
  73. // The length is 2.
  74. bh_list_insert(&list_test, &elem_insert_1);
  75. bh_list_insert(&list_test, &elem_insert_2);
  76. EXPECT_EQ(2, bh_list_length(&list_test));
  77. // Illegal parameters.
  78. EXPECT_EQ(0, bh_list_length(nullptr));
  79. }
  80. TEST_F(bh_list_test_suite, bh_list_first_elem)
  81. {
  82. bh_list list_test;
  83. bh_list_link elem_insert_1;
  84. bh_list_link elem_insert_2;
  85. bh_list_init(&list_test);
  86. // There is no element in the list.
  87. EXPECT_EQ(nullptr, bh_list_first_elem(&list_test));
  88. // There are 2 elements in the list.
  89. bh_list_insert(&list_test, &elem_insert_1);
  90. bh_list_insert(&list_test, &elem_insert_2);
  91. EXPECT_EQ(&elem_insert_2, bh_list_first_elem(&list_test));
  92. // Illegal parameters.
  93. EXPECT_EQ(nullptr, bh_list_first_elem(nullptr));
  94. }
  95. TEST_F(bh_list_test_suite, bh_list_elem_next)
  96. {
  97. bh_list list_test;
  98. bh_list_link elem_insert_1;
  99. bh_list_link elem_insert_2;
  100. bh_list_init(&list_test);
  101. bh_list_insert(&list_test, &elem_insert_1);
  102. bh_list_insert(&list_test, &elem_insert_2);
  103. // Normally.
  104. EXPECT_EQ(&elem_insert_1, bh_list_elem_next(&elem_insert_2));
  105. // Illegal parameters.
  106. EXPECT_EQ(nullptr, bh_list_elem_next(nullptr));
  107. }