aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/HighContrastFilterTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/HighContrastFilterTest.cpp')
-rw-r--r--tests/HighContrastFilterTest.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/HighContrastFilterTest.cpp b/tests/HighContrastFilterTest.cpp
new file mode 100644
index 0000000000..35b0c9febd
--- /dev/null
+++ b/tests/HighContrastFilterTest.cpp
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkCanvas.h"
+#include "SkHighContrastFilter.h"
+#include "Test.h"
+
+DEF_TEST(HighContrastFilter_FilterImage, reporter) {
+ SkHighContrastConfig config;
+ config.fInvertStyle = SkHighContrastConfig::InvertStyle::kInvertLightness;
+
+ int w = 10, h = 10;
+ SkBitmap filterResult, paintResult;
+
+ filterResult.allocN32Pixels(w, h);
+ SkCanvas canvasFilter(filterResult);
+ canvasFilter.clear(0x00000000);
+
+ paintResult.allocN32Pixels(w, h);
+ SkCanvas canvasPaint(paintResult);
+ canvasPaint.clear(0x00000000);
+
+ SkPaint paint;
+ paint.setColor(SK_ColorBLUE);
+ SkRect r = SkRect::MakeLTRB(SkIntToScalar(2), SkIntToScalar(2),
+ SkIntToScalar(8), SkIntToScalar(8));
+ canvasPaint.drawRect(r, paint);
+
+ paint.setColorFilter(SkHighContrastFilter::Make(config));
+ canvasFilter.drawRect(r, paint);
+
+ paintResult.lockPixels();
+ filterResult.lockPixels();
+ for (int y = r.top(); y < r.bottom(); ++y) {
+ for (int x = r.left(); x < r.right(); ++x) {
+ SkColor paintColor = paintResult.getColor(x, y);
+ SkColor filterColor = filterResult.getColor(x, y);
+ REPORTER_ASSERT(
+ reporter, filterColor ==
+ paint.getColorFilter()->filterColor(paintColor));
+ }
+ }
+ paintResult.unlockPixels();
+ filterResult.unlockPixels();
+}
+
+DEF_TEST(HighContrastFilter_SanityCheck, reporter) {
+ SkHighContrastConfig config;
+ config.fInvertStyle = SkHighContrastConfig::InvertStyle::kInvertLightness;
+ sk_sp<SkColorFilter> filter = SkHighContrastFilter::Make(config);
+
+ SkColor white_inverted = filter->filterColor(SK_ColorWHITE);
+ REPORTER_ASSERT(reporter, white_inverted == SK_ColorBLACK);
+
+ SkColor black_inverted = filter->filterColor(SK_ColorBLACK);
+ REPORTER_ASSERT(reporter, black_inverted == SK_ColorWHITE);
+}
+
+DEF_TEST(HighContrastFilter_InvalidInputs, reporter) {
+ SkHighContrastConfig config;
+ REPORTER_ASSERT(reporter, config.isValid());
+
+ // Valid invert style
+ config.fInvertStyle = SkHighContrastConfig::InvertStyle::kInvertBrightness;
+ REPORTER_ASSERT(reporter, config.isValid());
+ config.fInvertStyle = SkHighContrastConfig::InvertStyle::kInvertLightness;
+ REPORTER_ASSERT(reporter, config.isValid());
+ sk_sp<SkColorFilter> filter = SkHighContrastFilter::Make(config);
+ REPORTER_ASSERT(reporter, filter);
+
+ // Invalid invert style
+ config.fInvertStyle = static_cast<SkHighContrastConfig::InvertStyle>(999);
+ REPORTER_ASSERT(reporter, !config.isValid());
+ filter = SkHighContrastFilter::Make(config);
+ REPORTER_ASSERT(reporter, !filter);
+
+ // Valid contrast
+ config.fInvertStyle = SkHighContrastConfig::InvertStyle::kInvertBrightness;
+ config.fContrast = 0.5f;
+ REPORTER_ASSERT(reporter, config.isValid());
+ filter = SkHighContrastFilter::Make(config);
+ REPORTER_ASSERT(reporter, filter);
+
+ // Invalid contrast
+ config.fContrast = 1.1f;
+ REPORTER_ASSERT(reporter, !config.isValid());
+ filter = SkHighContrastFilter::Make(config);
+ REPORTER_ASSERT(reporter, !filter);
+}