Index: tests/ImageFilterTest.cpp |
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp |
index 9f6144bf29132b8cebdd7c9a3e0eeba104c4a188..8767ff2047fe9019fe2ed60822e3907d5ec0f97a 100644 |
--- a/tests/ImageFilterTest.cpp |
+++ b/tests/ImageFilterTest.cpp |
@@ -774,6 +774,60 @@ DEF_TEST(HugeBlurImageFilter, reporter) { |
test_huge_blur(&device, reporter); |
} |
+DEF_TEST(MatrixConvolutionSanityTest, reporter) { |
+ SkScalar kernel[1] = { 0 }; |
+ SkScalar gain = SK_Scalar1, bias = 0; |
+ SkIPoint kernelOffset = SkIPoint::Make(1, 1); |
+ |
+ // Check that an enormous (non-allocatable) kernel gives a NULL filter. |
+ SkAutoTUnref<SkImageFilter> conv(SkMatrixConvolutionImageFilter::Create( |
+ SkISize::Make(1<<30, 1<<30), |
+ kernel, |
+ gain, |
+ bias, |
+ kernelOffset, |
+ SkMatrixConvolutionImageFilter::kRepeat_TileMode, |
+ false)); |
+ |
+ REPORTER_ASSERT(reporter, NULL == conv.get()); |
+ |
+ // Check that a NULL kernel gives a NULL filter. |
+ conv.reset(SkMatrixConvolutionImageFilter::Create( |
+ SkISize::Make(1, 1), |
+ NULL, |
+ gain, |
+ bias, |
+ kernelOffset, |
+ SkMatrixConvolutionImageFilter::kRepeat_TileMode, |
+ false)); |
+ |
+ REPORTER_ASSERT(reporter, NULL == conv.get()); |
+ |
+ // Check that a kernel width < 1 gives a NULL filter. |
+ conv.reset(SkMatrixConvolutionImageFilter::Create( |
+ SkISize::Make(0, 1), |
+ kernel, |
+ gain, |
+ bias, |
+ kernelOffset, |
+ SkMatrixConvolutionImageFilter::kRepeat_TileMode, |
+ false)); |
+ |
+ REPORTER_ASSERT(reporter, NULL == conv.get()); |
+ |
+ // Check that kernel height < 1 gives a NULL filter. |
+ conv.reset(SkMatrixConvolutionImageFilter::Create( |
+ SkISize::Make(1, -1), |
+ kernel, |
+ gain, |
+ bias, |
+ kernelOffset, |
+ SkMatrixConvolutionImageFilter::kRepeat_TileMode, |
+ false)); |
+ |
+ REPORTER_ASSERT(reporter, NULL == conv.get()); |
+} |
+ |
static void test_xfermode_cropped_input(SkBaseDevice* device, skiatest::Reporter* reporter) { |
SkCanvas canvas(device); |
canvas.clear(0); |