diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Profiler/MemoryProfilerTests.cpp |
Diffstat (limited to 'Runtime/Profiler/MemoryProfilerTests.cpp')
-rw-r--r-- | Runtime/Profiler/MemoryProfilerTests.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Runtime/Profiler/MemoryProfilerTests.cpp b/Runtime/Profiler/MemoryProfilerTests.cpp new file mode 100644 index 0000000..4c02f54 --- /dev/null +++ b/Runtime/Profiler/MemoryProfilerTests.cpp @@ -0,0 +1,73 @@ +#include "UnityPrefix.h" +#include "MemoryProfiler.h" + +#if ENABLE_UNIT_TESTS + +#include "External/UnitTest++/src/UnitTest++.h" + +#if ENABLE_PROFILER +#include "Runtime/Profiler/MemoryProfiler.h" + +SUITE (MemoryProfilerTests) +{ + struct MemoryProfilerFixture + { + MemoryProfilerFixture() + { + // string allocates length + 1 rounded up to mod 16 + stringlength = 32; +#if UNITY_OSX + // on osx, there is allocated room for refcounting as well + stringlength += 2; +#endif + } + ~MemoryProfilerFixture() + { + } + int stringlength; + }; + + struct VectorOfStrings + { + UNITY_VECTOR(kMemDefault, UnityStr) vec; + }; + + struct StructWithStrings + { + UnityStr str1; + UnityStr str2; + }; + + TEST_FIXTURE(MemoryProfilerFixture, GetRelatedMemorySize_StringVector_MatchesExpectedSize) + { + VectorOfStrings* vec = UNITY_NEW_AS_ROOT(VectorOfStrings, kMemDefault, "", ""); + vec->vec.reserve(10); + { + UnityStr str("HelloWorld HelloWorld"); + SET_ALLOC_OWNER(vec); + vec->vec.push_back(str); + } + + CHECK_EQUAL(GetMemoryProfiler()->GetRelatedMemorySize(vec), sizeof(UnityStr)*10 + sizeof(UNITY_VECTOR(kMemDefault, UnityStr)) + stringlength); + UNITY_DELETE(vec, kMemDefault); + } + + TEST_FIXTURE(MemoryProfilerFixture, GetRelatedMemorySize_StringLosingOwner_MatchesExpectedSize) + { + StructWithStrings* strings; + { + VectorOfStrings* vec = UNITY_NEW_AS_ROOT(VectorOfStrings,kMemDefault, "", ""); + SET_ALLOC_OWNER(vec); + strings = UNITY_NEW(StructWithStrings, kMemDefault); + strings->str1 = "HelloWorld HelloWorld"; + strings->str2 = "HelloWorld HelloWorld"; + CHECK_EQUAL(GetMemoryProfiler()->GetRelatedMemorySize(vec), sizeof(UNITY_VECTOR(kMemDefault, UnityStr)) + 2 * stringlength + sizeof(StructWithStrings) ); + UNITY_DELETE(vec, kMemDefault); + } + UNITY_DELETE(strings, kMemDefault); + } + +} + +#endif +#endif
\ No newline at end of file |