diff options
author | halcanary <halcanary@google.com> | 2015-08-18 13:30:25 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-18 13:30:25 -0700 |
commit | 48305e835351291ef72a7084c6c1af7b185d89c0 (patch) | |
tree | 56cf2a20e842163148bb212f9ab606deede363d4 /tests/StreamTest.cpp | |
parent | a44919ea27acd9808a7581362018484355c0f026 (diff) |
SkPDF/Deflate: clean up old SkFlate code
Factor out some of https://crrev.com/1227913008
BUG=skia:3030
Review URL: https://codereview.chromium.org/1298243002
Diffstat (limited to 'tests/StreamTest.cpp')
-rw-r--r-- | tests/StreamTest.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp index 926cfc2579..78c0e506db 100644 --- a/tests/StreamTest.cpp +++ b/tests/StreamTest.cpp @@ -11,6 +11,7 @@ #include "SkOSFile.h" #include "SkRandom.h" #include "SkStream.h" +#include "SkStreamPriv.h" #include "Test.h" #ifndef SK_BUILD_FOR_WIN @@ -335,3 +336,60 @@ DEF_TEST(StreamPeek_BlockMemoryStream, rep) { } stream_peek_test(rep, asset, expected); } + +namespace { +class DumbStream : public SkStream { +public: + DumbStream(const uint8_t* data, size_t n) + : fData(data), fCount(n), fIdx(0) {} + size_t read(void* buffer, size_t size) override { + size_t c = SkTMin(fCount - fIdx, size); + if (c) { + memcpy(buffer, &fData[fIdx], size); + fIdx += c; + } + return c; + } + bool isAtEnd() const override { + return fCount > fIdx; + } + private: + const uint8_t* fData; + size_t fCount, fIdx; +}; +} // namespace + +static void stream_copy_test(skiatest::Reporter* reporter, + const void* srcData, + size_t N, + SkStream* stream) { + SkDynamicMemoryWStream tgt; + if (!SkStreamCopy(&tgt, stream)) { + ERRORF(reporter, "SkStreamCopy failed"); + return; + } + SkAutoTUnref<SkData> data(tgt.copyToData()); + tgt.reset(); + if (data->size() != N) { + ERRORF(reporter, "SkStreamCopy incorrect size"); + return; + } + if (0 != memcmp(data->data(), srcData, N)) { + ERRORF(reporter, "SkStreamCopy bad copy"); + } +} + +DEF_TEST(StreamCopy, reporter) { + SkRandom random(123456); + static const size_t N = 10000; + uint8_t src[N]; + for (size_t j = 0; j < N; ++j) { + src[j] = random.nextU() & 0xff; + } + // SkStreamCopy had two code paths; this test both. + DumbStream dumbStream(src, N); + stream_copy_test(reporter, src, N, &dumbStream); + SkMemoryStream smartStream(src, N); + stream_copy_test(reporter, src, N, &smartStream); + +} |