Merge pull request #209 from jsalling/cleanup/fixture-memory-testing

Cleanup fixture memory testing
This commit is contained in:
Mark VanderVoord
2016-08-21 13:49:55 -04:00
committed by GitHub
2 changed files with 17 additions and 13 deletions

View File

@ -207,9 +207,6 @@ void* unity_malloc(size_t size)
mem = (char*)&(guard[1]); mem = (char*)&(guard[1]);
memcpy(&mem[size], end, sizeof(end)); memcpy(&mem[size], end, sizeof(end));
#ifndef UNITY_FIXTURE_MALLOC_OVERRIDES_H_
free(guard);
#endif
return (void*)mem; return (void*)mem;
} }

View File

@ -479,6 +479,10 @@ TEST(LeakDetection, PointerSettingMax)
//------------------------------------------------------------ //------------------------------------------------------------
TEST_GROUP(InternalMalloc); 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_SETUP(InternalMalloc) { }
TEST_TEAR_DOWN(InternalMalloc) { } TEST_TEAR_DOWN(InternalMalloc) { }
@ -488,9 +492,10 @@ TEST(InternalMalloc, MallocPastBufferFails)
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC #ifdef UNITY_EXCLUDE_STDLIB_MALLOC
void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1); void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
void* n = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2); void* n = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2);
free(m);
TEST_ASSERT_NOT_NULL(m); TEST_ASSERT_NOT_NULL(m);
TEST_ASSERT_NULL(n); TEST_ASSERT_NULL(n);
free(m); TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(m, n);
#endif #endif
} }
@ -499,9 +504,10 @@ TEST(InternalMalloc, CallocPastBufferFails)
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC #ifdef UNITY_EXCLUDE_STDLIB_MALLOC
void* m = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1); void* m = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
void* n = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2); void* n = calloc(1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2);
free(m);
TEST_ASSERT_NOT_NULL(m); TEST_ASSERT_NOT_NULL(m);
TEST_ASSERT_NULL(n); TEST_ASSERT_NULL(n);
free(m); TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(m, n);
#endif #endif
} }
@ -510,9 +516,10 @@ TEST(InternalMalloc, MallocThenReallocGrowsMemoryInPlace)
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC #ifdef UNITY_EXCLUDE_STDLIB_MALLOC
void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1); void* m = malloc(UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
void* n = realloc(m, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 9); void* n = realloc(m, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 9);
free(n);
TEST_ASSERT_NOT_NULL(m); TEST_ASSERT_NOT_NULL(m);
TEST_ASSERT_EQUAL(m, n); TEST_ASSERT_EQUAL(m, n);
free(n); TEST_ASSERT_MEMORY_ALL_FREE_LIFO_ORDER(m, n);
#endif #endif
} }
@ -523,14 +530,14 @@ TEST(InternalMalloc, ReallocFailDoesNotFreeMem)
void* n1 = malloc(10); void* n1 = malloc(10);
void* out_of_mem = realloc(n1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1); void* out_of_mem = realloc(n1, UNITY_INTERNAL_HEAP_SIZE_BYTES/2 + 1);
void* n2 = malloc(10); 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); free(n2);
if (out_of_mem == NULL) free(n1);
free(m); 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 #endif
} }