diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/MatrixTest.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp index 7875d9ea45..95d33acabd 100644 --- a/tests/MatrixTest.cpp +++ b/tests/MatrixTest.cpp @@ -771,6 +771,34 @@ static void test_matrix_homogeneous(skiatest::Reporter* reporter) { } +static bool check_decompScale(const SkMatrix& matrix) { + SkSize scale; + SkMatrix remaining; + + if (!matrix.decomposeScale(&scale, &remaining)) { + return false; + } + if (scale.width() <= 0 || scale.height() <= 0) { + return false; + } + remaining.preScale(scale.width(), scale.height()); + return nearly_equal(matrix, remaining); +} + +static void test_decompScale(skiatest::Reporter* reporter) { + SkMatrix m; + + m.reset(); + REPORTER_ASSERT(reporter, check_decompScale(m)); + m.setScale(2, 3); + REPORTER_ASSERT(reporter, check_decompScale(m)); + m.setRotate(35, 0, 0); + REPORTER_ASSERT(reporter, check_decompScale(m)); + + m.setScale(1, 0); + REPORTER_ASSERT(reporter, !check_decompScale(m)); +} + DEF_TEST(Matrix, reporter) { SkMatrix mat, inverse, iden1, iden2; @@ -889,6 +917,8 @@ DEF_TEST(Matrix, reporter) { test_matrix_decomposition(reporter); test_matrix_homogeneous(reporter); test_set9(reporter); + + test_decompScale(reporter); } DEF_TEST(Matrix_Concat, r) { |