aboutsummaryrefslogtreecommitdiffhomepage
path: root/fuzz
diff options
context:
space:
mode:
authorGravatar Jim Van Verth <jvanverth@google.com>2018-07-11 14:09:09 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-11 18:37:38 +0000
commit061cc21b61e04ecb6120a6e66ea04f89b82200c2 (patch)
treea8e8bfd1122148e3806252db80a16ca07161fb14 /fuzz
parent3ae98ffc96fe410f8594dbd7160c05c5ebd6de57 (diff)
Add more tests for PolyUtils
* Add fuzzer * Add bench tests * Add additional unit test * Fix some bugs these exposed. Bug: skia: Change-Id: I6c587c92cb6cff32ab8300020b78f9f247d2bf64 Reviewed-on: https://skia-review.googlesource.com/139169 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Kevin Lubick <kjlubick@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'fuzz')
-rw-r--r--fuzz/FuzzPolyUtils.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/fuzz/FuzzPolyUtils.cpp b/fuzz/FuzzPolyUtils.cpp
new file mode 100644
index 0000000000..fda5b5f34a
--- /dev/null
+++ b/fuzz/FuzzPolyUtils.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Fuzz.h"
+#include "FuzzCommon.h"
+#include "SkPolyUtils.h"
+
+void inline ignoreResult(bool ) {}
+
+DEF_FUZZ(PolyUtils, fuzz) {
+ int count;
+ fuzz->nextRange(&count, 0, 512);
+ SkAutoSTMalloc<64, SkPoint> polygon(count);
+ for (int index = 0; index < count; ++index) {
+ fuzz->next(&polygon[index].fX, &polygon[index].fY);
+ }
+
+ ignoreResult(SkGetPolygonWinding(polygon, count));
+ ignoreResult(SkIsConvexPolygon(polygon, count));
+ ignoreResult(SkIsSimplePolygon(polygon, count));
+
+ SkScalar inset;
+ fuzz->next(&inset);
+ SkTDArray<SkPoint> output;
+ ignoreResult(SkInsetConvexPolygon(polygon, count, inset, &output));
+ std::function<SkScalar(const SkPoint&)> distanceFunc = [fuzz](const SkPoint& p) {
+ SkScalar retVal;
+ fuzz->next(&retVal);
+ return retVal;
+ };
+ ignoreResult(SkInsetConvexPolygon(polygon, count, distanceFunc, &output));
+
+ SkScalar offset;
+ fuzz->next(&offset);
+ ignoreResult(SkOffsetSimplePolygon(polygon, count, offset, &output));
+ ignoreResult(SkOffsetSimplePolygon(polygon, count, distanceFunc, &output));
+
+ SkAutoSTMalloc<64, uint16_t> indexMap(count);
+ for (int index = 0; index < count; ++index) {
+ fuzz->next(&indexMap[index]);
+ }
+ SkTDArray<uint16_t> outputIndices;
+ ignoreResult(SkTriangulateSimplePolygon(polygon, indexMap, count, &outputIndices));
+}