pool-test.cpp 2.4 KB

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