Index: tests/RoundRectTest.cpp |
diff --git a/tests/RoundRectTest.cpp b/tests/RoundRectTest.cpp |
index 8d8f76fbf0084ee51bd32353cfd7d2f7cd097b19..02dad22e0846d800de69a62fff0ea6d92148cbac 100644 |
--- a/tests/RoundRectTest.cpp |
+++ b/tests/RoundRectTest.cpp |
@@ -47,6 +47,61 @@ static void test_empty_crbug_458524(skiatest::Reporter* reporter) { |
REPORTER_ASSERT(reporter, SkRRect::kEmpty_Type == other.getType()); |
} |
+// Test that all the SkRRect entry points correctly handle un-sorted and |
+// zero-sized input rects |
+static void test_empty(skiatest::Reporter* reporter) { |
+ static const SkRect oooRects[] = { // out of order |
+ { 100, 0, 0, 100 }, // ooo horizontal |
+ { 0, 100, 100, 0 }, // ooo vertical |
+ { 100, 100, 0, 0 }, // ooo both |
+ }; |
+ |
+ static const SkRect emptyRects[] = { |
+ { 100, 100, 100, 200 }, // empty horizontal |
+ { 100, 100, 200, 100 }, // empty vertical |
+ { 100, 100, 100, 100 }, // empty both |
+ { 0, 0, 0, 0 } // setEmpty-empty |
+ }; |
+ |
+ static const SkVector radii[4] = { { 0, 1 }, { 2, 3 }, { 4, 5 }, { 6, 7 } }; |
+ |
+ SkRRect r; |
+ |
+ for (size_t i = 0; i < SK_ARRAY_COUNT(oooRects); ++i) { |
+ r.setRect(oooRects[i]); |
+ REPORTER_ASSERT(reporter, !r.isEmpty()); |
+ |
+ r.setOval(oooRects[i]); |
+ REPORTER_ASSERT(reporter, !r.isEmpty()); |
+ |
+ r.setRectXY(oooRects[i], 1, 2); |
+ REPORTER_ASSERT(reporter, !r.isEmpty()); |
+ |
+ r.setNinePatch(oooRects[i], 0, 1, 2, 3); |
+ REPORTER_ASSERT(reporter, !r.isEmpty()); |
+ |
+ r.setRectRadii(oooRects[i], radii); |
+ REPORTER_ASSERT(reporter, !r.isEmpty()); |
+ } |
+ |
+ for (size_t i = 0; i < SK_ARRAY_COUNT(emptyRects); ++i) { |
+ r.setRect(emptyRects[i]); |
+ REPORTER_ASSERT(reporter, r.isEmpty()); |
+ |
+ r.setOval(emptyRects[i]); |
+ REPORTER_ASSERT(reporter, r.isEmpty()); |
+ |
+ r.setRectXY(emptyRects[i], 1, 2); |
+ REPORTER_ASSERT(reporter, r.isEmpty()); |
+ |
+ r.setNinePatch(emptyRects[i], 0, 1, 2, 3); |
+ REPORTER_ASSERT(reporter, r.isEmpty()); |
+ |
+ r.setRectRadii(emptyRects[i], radii); |
+ REPORTER_ASSERT(reporter, r.isEmpty()); |
+ } |
+} |
+ |
static const SkScalar kWidth = 100.0f; |
static const SkScalar kHeight = 100.0f; |
@@ -679,4 +734,5 @@ DEF_TEST(RoundRect, reporter) { |
test_issue_2696(reporter); |
test_tricky_radii(reporter); |
test_empty_crbug_458524(reporter); |
+ test_empty(reporter); |
} |