diff options
author | Jim Van Verth <jvanverth@google.com> | 2018-07-11 14:09:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-11 18:37:38 +0000 |
commit | 061cc21b61e04ecb6120a6e66ea04f89b82200c2 (patch) | |
tree | a8e8bfd1122148e3806252db80a16ca07161fb14 /fuzz | |
parent | 3ae98ffc96fe410f8594dbd7160c05c5ebd6de57 (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.cpp | 48 |
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)); +} |