Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
dl_color_filter_unittests.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "flutter/display_list/effects/dl_color_filter.h"
6#include "flutter/display_list/testing/dl_test_equality.h"
7
8namespace flutter {
9namespace testing {
10
11static const float kMatrix[20] = {
12 1, 2, 3, 4, 5, //
13 6, 7, 8, 9, 10, //
14 11, 12, 13, 14, 15, //
15 16, 17, 18, 19, 20, //
16};
17
18TEST(DisplayListColorFilter, BlendConstructor) {
20}
21
22TEST(DisplayListColorFilter, BlendShared) {
24 ASSERT_NE(filter.shared().get(), &filter);
25 ASSERT_EQ(*filter.shared(), filter);
26}
27
28TEST(DisplayListColorFilter, BlendAsBlend) {
30 ASSERT_NE(filter.asBlend(), nullptr);
31 ASSERT_EQ(filter.asBlend(), &filter);
32}
33
34TEST(DisplayListColorFilter, BlendContents) {
36 ASSERT_EQ(filter.color(), DlColor::kRed());
37 ASSERT_EQ(filter.mode(), DlBlendMode::kDstATop);
38}
39
40TEST(DisplayListColorFilter, BlendEquals) {
43 TestEquals(filter1, filter2);
44}
45
46TEST(DisplayListColorFilter, BlendNotEquals) {
50 TestNotEquals(filter1, filter2, "Color differs");
51 TestNotEquals(filter1, filter3, "Blend mode differs");
52}
53
54TEST(DisplayListColorFilter, NopBlendShouldNotCrash) {
56 ASSERT_FALSE(filter.modifies_transparent_black());
57}
58
59TEST(DisplayListColorFilter, MatrixConstructor) {
61}
62
63TEST(DisplayListColorFilter, MatrixShared) {
65 ASSERT_NE(filter.shared().get(), &filter);
66 ASSERT_EQ(*filter.shared(), filter);
67}
68
69TEST(DisplayListColorFilter, MatrixAsMatrix) {
71 ASSERT_NE(filter.asMatrix(), nullptr);
72 ASSERT_EQ(filter.asMatrix(), &filter);
73}
74
75TEST(DisplayListColorFilter, MatrixContents) {
76 float matrix[20];
77 memcpy(matrix, kMatrix, sizeof(matrix));
78 DlMatrixColorFilter filter(matrix);
79
80 // Test deref operator []
81 for (int i = 0; i < 20; i++) {
82 ASSERT_EQ(filter[i], matrix[i]);
83 }
84
85 // Test get_matrix
86 float matrix2[20];
87 filter.get_matrix(matrix2);
88 for (int i = 0; i < 20; i++) {
89 ASSERT_EQ(matrix2[i], matrix[i]);
90 }
91
92 // Test perturbing original array does not affect filter
93 float original_value = matrix[4];
94 matrix[4] += 101;
95 ASSERT_EQ(filter[4], original_value);
96}
97
98TEST(DisplayListColorFilter, MatrixEquals) {
101 TestEquals(filter1, filter2);
102}
103
104TEST(DisplayListColorFilter, MatrixNotEquals) {
105 float matrix[20];
106 memcpy(matrix, kMatrix, sizeof(matrix));
107 DlMatrixColorFilter filter1(matrix);
108 matrix[4] += 101;
109 DlMatrixColorFilter filter2(matrix);
110 TestNotEquals(filter1, filter2, "Matrix differs");
111}
112
113TEST(DisplayListColorFilter, NopMatrixShouldNotCrash) {
114 float matrix[20] = {
115 1, 0, 0, 0, 0, //
116 0, 1, 0, 0, 0, //
117 0, 0, 1, 0, 0, //
118 0, 0, 0, 1, 0, //
119 };
120 DlMatrixColorFilter filter(matrix);
121 ASSERT_FALSE(filter.modifies_transparent_black());
122}
123
124TEST(DisplayListColorFilter, SrgbToLinearConstructor) {
126}
127
128TEST(DisplayListColorFilter, SrgbToLinearShared) {
130 ASSERT_NE(filter.shared().get(), &filter);
131 ASSERT_EQ(*filter.shared(), filter);
132}
133
134TEST(DisplayListColorFilter, SrgbToLinearEquals) {
137 TestEquals(filter1, filter2);
139}
140
141TEST(DisplayListColorFilter, LinearToSrgbConstructor) {
143}
144
145TEST(DisplayListColorFilter, LinearToSrgbShared) {
147 ASSERT_NE(filter.shared().get(), &filter);
148 ASSERT_EQ(*filter.shared(), filter);
149}
150
151TEST(DisplayListColorFilter, LinearToSrgbEquals) {
154 TestEquals(filter1, filter2);
156}
157
158} // namespace testing
159} // namespace flutter
#define TEST(S, s, D, expected)
const DlBlendColorFilter * asBlend() const override
std::shared_ptr< DlColorFilter > shared() const override
bool modifies_transparent_black() const override
std::shared_ptr< DlColorFilter > shared() const override
static const std::shared_ptr< DlLinearToSrgbGammaColorFilter > kInstance
std::shared_ptr< DlColorFilter > shared() const override
void get_matrix(float matrix[20]) const
const DlMatrixColorFilter * asMatrix() const override
bool modifies_transparent_black() const override
static const std::shared_ptr< DlSrgbToLinearGammaColorFilter > kInstance
std::shared_ptr< DlColorFilter > shared() const override
static const float kMatrix[20]
static void TestNotEquals(T &source1, T &source2, const std::string &label)
static void TestEquals(T &source1, T &source2)
@ kSrcOver
r = s + (1-sa)*d
@ kDstATop
r = d*sa + s*(1-da)
static constexpr DlColor kBlue()
Definition dl_color.h:26
static constexpr DlColor kTransparent()
Definition dl_color.h:21
static constexpr DlColor kRed()
Definition dl_color.h:24