Index: tests/StrokeTest.cpp |
diff --git a/tests/StrokeTest.cpp b/tests/StrokeTest.cpp |
index b8abbd3a8a7ecf79f46649668287e1273401da25..43b293fc120e324817b4f363c07a0b29738480f0 100644 |
--- a/tests/StrokeTest.cpp |
+++ b/tests/StrokeTest.cpp |
@@ -9,6 +9,7 @@ |
#include "SkPath.h" |
#include "SkRect.h" |
#include "SkStroke.h" |
+#include "SkStrokeRec.h" |
#include "Test.h" |
static bool equal(const SkRect& a, const SkRect& b) { |
@@ -84,7 +85,83 @@ static void test_strokerect(skiatest::Reporter* reporter) { |
} |
} |
+static void test_strokerec_equality(skiatest::Reporter* reporter) { |
+ { |
+ SkStrokeRec s1(SkStrokeRec::kFill_InitStyle); |
+ SkStrokeRec s2(SkStrokeRec::kFill_InitStyle); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ |
+ // Test that style mismatch is detected. |
+ s2.setHairlineStyle(); |
+ REPORTER_ASSERT(reporter, !s1.hasEqualEffect(s2)); |
+ |
+ s1.setHairlineStyle(); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ |
+ // ResScale is not part of equality. |
+ s1.setResScale(2.1f); |
+ s2.setResScale(1.2f); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ s1.setFillStyle(); |
+ s2.setFillStyle(); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ s1.setStrokeStyle(1.0f, false); |
+ s2.setStrokeStyle(1.0f, false); |
+ s1.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2.9f); |
+ s2.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2.9f); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ } |
+ |
+ // Stroke parameters on fill or hairline style are not part of equality. |
+ { |
+ SkStrokeRec s1(SkStrokeRec::kFill_InitStyle); |
+ SkStrokeRec s2(SkStrokeRec::kFill_InitStyle); |
+ for (int i = 0; i < 2; ++i) { |
+ s1.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2.9f); |
+ s2.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2.1f); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ s2.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kBevel_Join, 2.9f); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ s2.setStrokeParams(SkPaint::kRound_Cap, SkPaint::kRound_Join, 2.9f); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ s1.setHairlineStyle(); |
+ s2.setHairlineStyle(); |
+ } |
+ } |
+ |
+ // Stroke parameters on stroke style are part of equality. |
+ { |
+ SkStrokeRec s1(SkStrokeRec::kFill_InitStyle); |
+ SkStrokeRec s2(SkStrokeRec::kFill_InitStyle); |
+ s1.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2.9f); |
+ s2.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2.9f); |
+ s1.setStrokeStyle(1.0f, false); |
+ |
+ s2.setStrokeStyle(1.0f, true); |
+ REPORTER_ASSERT(reporter, !s1.hasEqualEffect(s2)); |
+ |
+ s2.setStrokeStyle(2.1f, false); |
+ REPORTER_ASSERT(reporter, !s1.hasEqualEffect(s2)); |
+ |
+ s2.setStrokeStyle(1.0f, false); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ |
+ s2.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2.1f); |
+ REPORTER_ASSERT(reporter, !s1.hasEqualEffect(s2)); |
+ s2.setStrokeParams(SkPaint::kButt_Cap, SkPaint::kBevel_Join, 2.9f); |
+ REPORTER_ASSERT(reporter, !s1.hasEqualEffect(s2)); |
+ s2.setStrokeParams(SkPaint::kRound_Cap, SkPaint::kRound_Join, 2.9f); |
+ REPORTER_ASSERT(reporter, !s1.hasEqualEffect(s2)); |
+ |
+ // Sets fill. |
+ s1.setStrokeStyle(0.0f, true); |
+ s2.setStrokeStyle(0.0f, true); |
+ REPORTER_ASSERT(reporter, s1.hasEqualEffect(s2)); |
+ } |
+} |
+ |
DEF_TEST(Stroke, reporter) { |
test_strokecubic(reporter); |
test_strokerect(reporter); |
+ test_strokerec_equality(reporter); |
} |