pool-test.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "test_common.h"
  2. TEST_START
  3. extern "C" {
  4. Pool pool_init(uint32_t size, uint8_t aline);
  5. void* pool_malloc(Pool* pool, uint32_t size);
  6. void pool_free(Pool* pool, void* mem, uint32_t size);
  7. void pool_deinit(Pool* pool);
  8. void pool_printBlocks(Pool* pool, uint32_t block_min, uint32_t block_max);
  9. }
  10. TEST(pool, init) {
  11. Pool p = pool_init(125, 4);
  12. EXPECT_EQ(p.aline, 4);
  13. EXPECT_EQ(p.size, 128);
  14. pool_printBlocks(&p, 0, 128);
  15. pool_deinit(&p);
  16. EXPECT_EQ((uint64_t)p.mem, NULL);
  17. }
  18. TEST(pool, m1) {
  19. Pool p = pool_init(125, 4);
  20. EXPECT_EQ(p.aline, 4);
  21. EXPECT_EQ(p.size, 128);
  22. uint64_t mem1_offset = (uint64_t)pool_malloc(&p, 4) - (uint64_t)p.mem;
  23. pool_printBlocks(&p, 0, 128);
  24. EXPECT_EQ(1, bitmap_get(p.bitmap, 0));
  25. EXPECT_EQ(0, bitmap_get(p.bitmap, 1));
  26. EXPECT_EQ(0, mem1_offset);
  27. pool_deinit(&p);
  28. }
  29. TEST(pool, m2) {
  30. Pool p = pool_init(125, 4);
  31. EXPECT_EQ(p.aline, 4);
  32. EXPECT_EQ(p.size, 128);
  33. uint64_t mem1_offset = (uint64_t)pool_malloc(&p, 4) - (uint64_t)p.mem;
  34. uint64_t mem2_offset = (uint64_t)pool_malloc(&p, 4) - (uint64_t)p.mem;
  35. pool_printBlocks(&p, 0, 128);
  36. EXPECT_EQ(1, bitmap_get(p.bitmap, 0));
  37. EXPECT_EQ(1, bitmap_get(p.bitmap, 1));
  38. EXPECT_EQ(0, mem1_offset);
  39. EXPECT_EQ(4, mem2_offset);
  40. pool_deinit(&p);
  41. }
  42. TEST(pool, mf1) {
  43. Pool p = pool_init(125, 4);
  44. EXPECT_EQ(p.aline, 4);
  45. EXPECT_EQ(p.size, 128);
  46. void* mem1 = pool_malloc(&p, 4);
  47. uint64_t mem1_offset = (uint64_t)mem1 - (uint64_t)p.mem;
  48. EXPECT_EQ(1, bitmap_get(p.bitmap, 0));
  49. pool_printBlocks(&p, 0, 128);
  50. pool_free(&p, mem1, 4);
  51. pool_printBlocks(&p, 0, 128);
  52. EXPECT_EQ(0, bitmap_get(p.bitmap, 0));
  53. EXPECT_EQ(0, mem1_offset);
  54. pool_deinit(&p);
  55. }
  56. TEST(pool, mf2) {
  57. Pool p = pool_init(125, 16);
  58. EXPECT_EQ(p.aline, 16);
  59. EXPECT_EQ(p.size, 128);
  60. void* mem1 = pool_malloc(&p, 4);
  61. uint64_t mem1_offset = (uint64_t)mem1 - (uint64_t)p.mem;
  62. EXPECT_EQ(1, bitmap_get(p.bitmap, 0));
  63. pool_printBlocks(&p, 0, 128);
  64. pool_free(&p, mem1, 4);
  65. pool_printBlocks(&p, 0, 128);
  66. EXPECT_EQ(0, bitmap_get(p.bitmap, 0));
  67. EXPECT_EQ(0, mem1_offset);
  68. pool_deinit(&p);
  69. }
  70. TEST(pool, mfm1) {
  71. Pool p = pool_init(125, 4);
  72. EXPECT_EQ(p.size, 128);
  73. void* mem1 = pool_malloc(&p, 4);
  74. pool_malloc(&p, 16);
  75. pool_free(&p, mem1, 4);
  76. pool_malloc(&p, 16);
  77. pool_printBlocks(&p, 0, 128);
  78. pool_deinit(&p);
  79. }
  80. TEST_END