| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2023-10-01 tyx first implementation
- */
- #include <gtest/gtest.h>
- #include "cb_mempool.h"
- TEST(testCase, cb_mempool_test01)
- {
- cb_memp_t mempool;
- cb_memp_t *mptr;
- unsigned long long mem[8];
- char *ptr = (char *)mem;
- mptr = cb_mempool_init(&mempool, ptr, sizeof(void *), sizeof(mem));
- EXPECT_EQ((char *)mptr->next_free, &ptr[0]);
- mptr = cb_mempool_init(&mempool, ptr + 1, sizeof(void *), sizeof(mem) - 1);
- EXPECT_EQ((char *)mptr->next_free, &ptr[sizeof(void *)]);
- mptr = cb_mempool_init(&mempool, ptr, sizeof(void *), sizeof(void *));
- EXPECT_EQ((char *)mptr->next_free, &ptr[0]);
- mptr = cb_mempool_init(&mempool, ptr, sizeof(void *), sizeof(void *) - 1);
- EXPECT_EQ((char *)mptr->next_free, (char *)cb_null);
- }
- TEST(testCase, cb_mempool_test02)
- {
- cb_memp_t mempool;
- cb_memp_t *mptr;
- unsigned long long mem[8];
- char *ptr = (char *)mem;
- void *ptr_tab[sizeof(mem) / sizeof(void *)];
- void *tmp_ptr;
- mptr = cb_mempool_init(&mempool, ptr, sizeof(void *), sizeof(mem));
- for (unsigned cnt = 3; cnt != 0; cnt --)
- {
- for (unsigned i = 0; i < sizeof(ptr_tab) / sizeof(ptr_tab[0]); i++)
- {
- ptr_tab[i] = cb_mempool_alloc(mptr);
- EXPECT_NE(ptr_tab[i], (void *)cb_null);
- }
- tmp_ptr = cb_mempool_alloc(mptr);
- EXPECT_EQ(tmp_ptr, (void *)cb_null);
- for (unsigned i = 0; i < sizeof(ptr_tab) / sizeof(ptr_tab[0]); i++)
- {
- cb_mempool_free(mptr, ptr_tab[i]);
- }
- }
- }
- static int memcharcmp(const void* ptr, int val, size_t size)
- {
- int c = 0;
- while (c == 0 && size-- > 0)
- {
- c = *((char *)ptr) - val;
- }
- return c;
- }
- TEST(testCase, cb_mempool_test03)
- {
- cb_memp_t mempool;
- cb_memp_t *mptr;
- unsigned long long mem[8];
- char *ptr = (char *)mem;
- void *ptr_tab[sizeof(mem) / sizeof(void *)];
- for (unsigned blk_size = 0; blk_size < sizeof(void *) * 2; blk_size ++)
- {
- mptr = cb_mempool_init(&mempool, ptr, blk_size, sizeof(mem));
- for (unsigned i = 0; i < sizeof(ptr_tab) / sizeof(ptr_tab[0]); i++)
- {
- ptr_tab[i] = cb_mempool_alloc(mptr);
- if (ptr_tab[i])
- {
- memset(ptr_tab[i], i, blk_size);
- }
- }
- for (unsigned i = 0; i < sizeof(ptr_tab) / sizeof(ptr_tab[0]); i++)
- {
- if (ptr_tab[i])
- {
- int cmp = memcharcmp(ptr_tab[i], i, blk_size);
- EXPECT_EQ(cmp, 0);
- }
- }
- for (unsigned i = 0; i < sizeof(ptr_tab) / sizeof(ptr_tab[0]); i++)
- {
- cb_mempool_free(mptr, ptr_tab[i]);
- }
- }
- }
|