diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-18 11:49:52 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-18 11:49:52 +0000 |
commit | 19f286b6f4ca4c124250caeea7f427c870c64370 (patch) | |
tree | 819b8308c277e266097ee5bb8a190cea81635d0e /tests/StreamTest.cpp | |
parent | b3b465567db95e4ffa70aa5b5b06a6aa43b379a8 (diff) |
add tests for read/writePackedUInt, and fix a bug there.
git-svn-id: http://skia.googlecode.com/svn/trunk@2482 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests/StreamTest.cpp')
-rw-r--r-- | tests/StreamTest.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp index f73e27c1f0..85b1b2ee5b 100644 --- a/tests/StreamTest.cpp +++ b/tests/StreamTest.cpp @@ -99,9 +99,41 @@ static void TestWStream(skiatest::Reporter* reporter) { delete[] dst; } +static void TestPackedUInt(skiatest::Reporter* reporter) { + // we know that packeduint tries to write 1, 2 or 4 bytes for the length, + // so we test values around each of those transitions (and a few others) + const size_t sizes[] = { + 0, 1, 2, 0xFC, 0xFD, 0xFE, 0xFF, 0x100, 0x101, 32767, 32768, 32769, + 0xFFFD, 0xFFFE, 0xFFFF, 0x10000, 0x10001, + 0xFFFFFD, 0xFFFFFE, 0xFFFFFF, 0x1000000, 0x1000001, + 0x7FFFFFFE, 0x7FFFFFFF, 0x80000000, 0x80000001, 0xFFFFFFFE, 0xFFFFFFFF + }; + + + size_t i; + char buffer[sizeof(sizes) * 4]; + + SkMemoryWStream wstream(buffer, sizeof(buffer)); + for (i = 0; i < SK_ARRAY_COUNT(sizes); ++i) { + bool success = wstream.writePackedUInt(sizes[i]); + REPORTER_ASSERT(reporter, success); + } + wstream.flush(); + + SkMemoryStream rstream(buffer, sizeof(buffer)); + for (i = 0; i < SK_ARRAY_COUNT(sizes); ++i) { + size_t n = rstream.readPackedUInt(); + if (sizes[i] != n) { + SkDebugf("-- %d: sizes:%x n:%x\n", i, sizes[i], n); + } + REPORTER_ASSERT(reporter, sizes[i] == n); + } +} + static void TestStreams(skiatest::Reporter* reporter) { TestRStream(reporter); TestWStream(reporter); + TestPackedUInt(reporter); } #include "TestClassDef.h" |