mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-06-24 08:37:33 +08:00
Merge pull request #209 from jsalling/cleanup/fixture-memory-testing
Cleanup fixture memory testing
This commit is contained in:
@ -207,9 +207,6 @@ void* unity_malloc(size_t size)
|
||||
mem = (char*)&(guard[1]);
|
||||
memcpy(&mem[size], end, sizeof(end));
|
||||
|
||||
#ifndef UNITY_FIXTURE_MALLOC_OVERRIDES_H_
|
||||
free(guard);
|
||||
#endif
|
||||
return (void*)mem;
|
||||
}
|
||||
|
||||
|
@ -479,6 +479,10 @@ TEST(LeakDetection, PointerSettingMax)
|
||||
//------------------------------------------------------------
|
||||
|
||||
TEST_GROUP(InternalMalloc);
|
||||
#define TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(first_mem_ptr, ptr) \
|
||||
ptr = malloc(10); free(ptr); \
|
||||
TEST_ASSERT_EQUAL_PTR_MESSAGE(first_mem_ptr, ptr, "Memory was stranded, free in LIFO order");
|
||||
|
||||
|
||||
TEST_SETUP(InternalMalloc) { }
|
||||
TEST_TEAR_DOWN(InternalMalloc) { }
|
||||
@ -488,9 +492,10 @@ TEST(InternalMalloc, MallocPastBufferFails)
|
||||
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
||||
void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
void* n = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2);
|
||||
free(m);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
TEST_ASSERT_NULL(n);
|
||||
free(m);
|
||||
TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(m, n);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -499,9 +504,10 @@ TEST(InternalMalloc, CallocPastBufferFails)
|
||||
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
||||
void* m = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
void* n = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2);
|
||||
free(m);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
TEST_ASSERT_NULL(n);
|
||||
free(m);
|
||||
TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(m, n);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -510,9 +516,10 @@ TEST(InternalMalloc, MallocThenReallocGrowsMemoryInPlace)
|
||||
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
||||
void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
void* n = realloc(m, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 9);
|
||||
free(n);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
TEST_ASSERT_EQUAL(m, n);
|
||||
free(n);
|
||||
TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(m, n);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -523,14 +530,14 @@ TEST(InternalMalloc, ReallocFailDoesNotFreeMem)
|
||||
void* n1 = malloc(10);
|
||||
void* out_of_mem = realloc(n1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
|
||||
void* n2 = malloc(10);
|
||||
TEST_ASSERT_NOT_NULL(m);
|
||||
if (out_of_mem == NULL)
|
||||
{
|
||||
free(n1);
|
||||
TEST_ASSERT_NULL(out_of_mem);
|
||||
}
|
||||
TEST_ASSERT_NOT_EQUAL(n2, n1);
|
||||
|
||||
free(n2);
|
||||
if (out_of_mem == NULL) free(n1);
|
||||
free(m);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(m); // Got a real memory location
|
||||
TEST_ASSERT_NULL(out_of_mem); // The realloc should have failed
|
||||
TEST_ASSERT_NOT_EQUAL(n2, n1); // If n1 != n2 then realloc did not free n1
|
||||
TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(m, n2);
|
||||
#endif
|
||||
}
|
||||
|
Reference in New Issue
Block a user