bool runTest(int * line, const char ** file) { bool tests_pass = true; do { uintptr_t init_sbrk_ptr = (uintptr_t)mbed_sbrk(0); uintptr_t ptr; ptr = (uintptr_t) mbed_sbrk(TEST_SMALL); if(!CHECK_EQ(ptr, (uintptr_t) init_sbrk_ptr, tests_pass, *file, *line)) { break; } ptr = (uintptr_t) mbed_sbrk(TEST_SMALL); if(!CHECK_EQ(ptr, init_sbrk_ptr + TEST_SMALL, tests_pass, *file, *line)) { break; } ptr = (uintptr_t) mbed_krbs(TEST_SMALL); if(!CHECK_EQ(ptr, (uintptr_t) &__mbed_krbs_start - TEST_SMALL, tests_pass, *file, *line)) { break; } if(!CHECK_EQ(mbed_sbrk_diff, (ptrdiff_t)&__heap_size - 3*TEST_SMALL - (init_sbrk_ptr - (uintptr_t)&__mbed_sbrk_start), tests_pass, *file, *line)) { break; } // Test small increments for (unsigned int i = 0; tests_pass && i < TEST_SMALL; i++) { ptr = (uintptr_t) mbed_krbs(i); if(!CHECK_EQ(0, ptr & (TEST_SMALL - 1), tests_pass, *file, *line)) { break; } } for (unsigned int i = 0; tests_pass && i < TEST_SMALL; i++) { ptr = (uintptr_t) mbed_sbrk(i); if(!CHECK_EQ(0, (uintptr_t) mbed_sbrk_ptr & (TEST_SMALL - 1), tests_pass, *file, *line)) { break; } } // Allocate a big block ptr = (uintptr_t) mbed_sbrk((ptrdiff_t)&__heap_size); if(!CHECK_EQ((intptr_t)ptr, -1, tests_pass, *file, *line)) { break; } ptr = (uintptr_t) mbed_krbs((ptrdiff_t)&__heap_size); if(!CHECK_EQ((intptr_t)ptr, -1, tests_pass, *file, *line)) { break; } break; } while (0); return tests_pass; }
void * __wrap__sbrk_r(struct _reent *r, ptrdiff_t size) { (void) r; return mbed_sbrk(size); }