Moved Eule to its own repository
This commit is contained in:
105
_TestingUtilities/_MemoryLeakDetector.cpp
Normal file
105
_TestingUtilities/_MemoryLeakDetector.cpp
Normal file
@@ -0,0 +1,105 @@
|
||||
#include "CppUnitTest.h"
|
||||
#include "MemoryLeakDetector.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace TestingUtilities
|
||||
{
|
||||
TEST_CLASS(_MemoryLeakDetector)
|
||||
{
|
||||
public:
|
||||
// =========== MEMORY LEAK TESTS ===========
|
||||
// These tests depends on debug-mode for memory insights.
|
||||
// Thus, they only works in debug mode.
|
||||
#ifdef _DEBUG
|
||||
|
||||
// Tests to detect no memory leak, if the test does nothing at all
|
||||
TEST_METHOD(No_Memleak_For_Nothing)
|
||||
{
|
||||
MemoryLeakDetector mld;
|
||||
mld.Init();
|
||||
|
||||
{
|
||||
// Do nothing here
|
||||
}
|
||||
|
||||
Assert::IsFalse(mld.DetectLeak());
|
||||
return;
|
||||
}
|
||||
|
||||
// Tests to detect no memory leak when not even touching pointers
|
||||
TEST_METHOD(No_Memleak_For_No_Pointer_Action)
|
||||
{
|
||||
MemoryLeakDetector mld;
|
||||
mld.Init();
|
||||
|
||||
{
|
||||
int i = 33;
|
||||
int c = i * 9;
|
||||
}
|
||||
|
||||
Assert::IsFalse(mld.DetectLeak());
|
||||
return;
|
||||
}
|
||||
|
||||
// Tests to detect no memory leak when correctly cleaning up pointers
|
||||
TEST_METHOD(No_Memleak_For_Cleaned_Up_Pointers)
|
||||
{
|
||||
MemoryLeakDetector mld;
|
||||
mld.Init();
|
||||
|
||||
{
|
||||
int* ptr = new int[333];
|
||||
delete[] ptr;
|
||||
}
|
||||
|
||||
Assert::IsFalse(mld.DetectLeak());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Tests to detect a memory leak when not cleaning up pointers
|
||||
TEST_METHOD(Memleak_For_No_Pointer_Cleanup)
|
||||
{
|
||||
MemoryLeakDetector mld;
|
||||
mld.Init();
|
||||
|
||||
{
|
||||
int* ptr = new int[333];
|
||||
}
|
||||
|
||||
Assert::IsTrue(mld.DetectLeak());
|
||||
return;
|
||||
}
|
||||
|
||||
// Tests to detect no memory leak when correctly cleaning up pointers, using C-Methods
|
||||
TEST_METHOD(No_Memleak_For_Cleaned_Up_Pointers_C_Like)
|
||||
{
|
||||
MemoryLeakDetector mld;
|
||||
mld.Init();
|
||||
|
||||
{
|
||||
int* ptr = (int*)malloc(sizeof(int) * 333);
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
Assert::IsFalse(mld.DetectLeak());
|
||||
return;
|
||||
}
|
||||
|
||||
// Tests to detect a memory leak when not cleaning up pointers, using C-Methods
|
||||
TEST_METHOD(Memleak_For_No_Pointer_Cleanup_C_Like)
|
||||
{
|
||||
MemoryLeakDetector mld;
|
||||
mld.Init();
|
||||
|
||||
{
|
||||
int* ptr = (int*)malloc(sizeof(int) * 333);
|
||||
}
|
||||
|
||||
Assert::IsTrue(mld.DetectLeak());
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user