aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Ben Wagner <bungeman@google.com>2016-10-07 15:50:53 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-18 15:06:24 +0000
commit255ab8d9a55d68b7405280dae6b586d17e23cf71 (patch)
tree06625e0edb3314d6dff3d1cb2bf13d116b6cba3f /tests
parent8f8d481b44fc486e7190c6e2db8077226d53c969 (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.cpp7
-rw-r--r--tests/TypefaceTest.cpp25
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) {