diff options
Diffstat (limited to 'tests/MemsetTest.cpp')
-rw-r--r-- | tests/MemsetTest.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/MemsetTest.cpp b/tests/MemsetTest.cpp index e1f844e05c..fb5a337738 100644 --- a/tests/MemsetTest.cpp +++ b/tests/MemsetTest.cpp @@ -6,6 +6,7 @@ */ #include "SkChunkAlloc.h" +#include "SkRandom.h" #include "SkUtils.h" #include "Test.h" @@ -23,6 +24,14 @@ static void* simple_alloc(skiatest::Reporter* reporter, SkChunkAlloc* alloc, siz return ptr; } +static void check_alloc_alignment(skiatest::Reporter* reporter, + SkChunkAlloc* alloc, size_t size) { + const size_t kAlignment = 8; + void* ptr = alloc->allocThrow(size); + REPORTER_ASSERT(reporter, ptr != nullptr); + REPORTER_ASSERT(reporter, (size_t)ptr % kAlignment == 0); +} + static void test_chunkalloc(skiatest::Reporter* reporter) { static const size_t kMin = 1024; SkChunkAlloc alloc(kMin); @@ -76,6 +85,14 @@ static void test_chunkalloc(skiatest::Reporter* reporter) { REPORTER_ASSERT(reporter, freed == kMin); check_alloc(reporter, alloc, 2*kMin, size, 2); REPORTER_ASSERT(reporter, !alloc.contains(ptr)); + + //------------------------------------------------------------------------ + // test the alignment + alloc.reset(); + SkRandom rand; + for (int i = 0; i < 1000; i++) { + check_alloc_alignment(reporter, &alloc, rand.nextU16()); + } } /////////////////////////////////////////////////////////////////////////////// |