diff options
author | 2016-10-07 15:50:53 -0400 | |
---|---|---|
committer | 2018-05-18 15:06:24 +0000 | |
commit | 255ab8d9a55d68b7405280dae6b586d17e23cf71 (patch) | |
tree | 06625e0edb3314d6dff3d1cb2bf13d116b6cba3f /tests | |
parent | 8f8d481b44fc486e7190c6e2db8077226d53c969 (diff) |
Make SkStream readers report failure.
This also fixes an issue noticed while making this change where
SkFontDescriptor improperly round trips negative axis values.
Change-Id: Iacc5929a185659dcacc18c802c4908e4f34c6899
Reviewed-on: https://skia-review.googlesource.com/128341
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/StreamTest.cpp | 7 | ||||
-rw-r--r-- | tests/TypefaceTest.cpp | 25 |
2 files changed, 30 insertions, 2 deletions
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp index 49810aedb4..7cf8d92bc5 100644 --- a/tests/StreamTest.cpp +++ b/tests/StreamTest.cpp @@ -159,9 +159,12 @@ static void TestPackedUInt(skiatest::Reporter* reporter) { std::unique_ptr<SkStreamAsset> rstream(wstream.detachAsStream()); for (i = 0; i < SK_ARRAY_COUNT(sizes); ++i) { - size_t n = rstream->readPackedUInt(); + size_t n; + if (!rstream->readPackedUInt(&n)) { + ERRORF(reporter, "[%d] sizes:%x could not be read\n", i, sizes[i]); + } if (sizes[i] != n) { - ERRORF(reporter, "sizes:%x != n:%x\n", i, sizes[i], n); + ERRORF(reporter, "[%d] sizes:%x != n:%x\n", i, sizes[i], n); } } } diff --git a/tests/TypefaceTest.cpp b/tests/TypefaceTest.cpp index 34fa3575f1..fcef366cb2 100644 --- a/tests/TypefaceTest.cpp +++ b/tests/TypefaceTest.cpp @@ -8,6 +8,7 @@ #include "SkAdvancedTypefaceMetrics.h" #include "SkData.h" #include "SkFixed.h" +#include "SkFontDescriptor.h" #include "SkFontMgr.h" #include "SkMakeUnique.h" #include "SkOTTable_OS_2.h" @@ -109,6 +110,30 @@ DEF_TEST(TypefaceRoundTrip, reporter) { REPORTER_ASSERT(reporter, typeface2); } +DEF_TEST(FontDescriptorNegativeVariationSerialize, reporter) { + SkFontDescriptor desc; + SkFixed axis = -SK_Fixed1; + auto font = skstd::make_unique<SkMemoryStream>("a", 1, false); + desc.setFontData(skstd::make_unique<SkFontData>(std::move(font), 0, &axis, 1)); + + SkDynamicMemoryWStream stream; + desc.serialize(&stream); + SkFontDescriptor descD; + SkFontDescriptor::Deserialize(stream.detachAsStream().get(), &descD); + std::unique_ptr<SkFontData> fontData = descD.detachFontData(); + if (!fontData) { + REPORT_FAILURE(reporter, "fontData", SkString()); + return; + } + + if (fontData->getAxisCount() != 1) { + REPORT_FAILURE(reporter, "fontData->getAxisCount() != 1", SkString()); + return; + } + + REPORTER_ASSERT(reporter, fontData->getAxis()[0] == -SK_Fixed1); +}; + DEF_TEST(TypefaceAxes, reporter) { std::unique_ptr<SkStreamAsset> distortable(GetResourceAsStream("fonts/Distortable.ttf")); if (!distortable) { |