OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "Test.h" | 8 #include "Test.h" |
9 #include "SkPath.h" | 9 #include "SkPath.h" |
10 #include "SkPaint.h" | 10 #include "SkPaint.h" |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 REPORTER_ASSERT(reporter, gLevels[i] == p0.getFilterLevel()); | 126 REPORTER_ASSERT(reporter, gLevels[i] == p0.getFilterLevel()); |
127 p1 = p0; | 127 p1 = p0; |
128 REPORTER_ASSERT(reporter, gLevels[i] == p1.getFilterLevel()); | 128 REPORTER_ASSERT(reporter, gLevels[i] == p1.getFilterLevel()); |
129 | 129 |
130 p0.reset(); | 130 p0.reset(); |
131 REPORTER_ASSERT(reporter, | 131 REPORTER_ASSERT(reporter, |
132 SkPaint::kNone_FilterLevel == p0.getFilterLevel()); | 132 SkPaint::kNone_FilterLevel == p0.getFilterLevel()); |
133 } | 133 } |
134 } | 134 } |
135 | 135 |
| 136 // Only useful for test_copy. Checks the fields that are set. |
| 137 static bool check_equal(const SkPaint& a, const SkPaint &b) { |
| 138 return a.getLooper() == b.getLooper() && |
| 139 a.getMaskFilter() == b.getMaskFilter() && |
| 140 a.getStrokeWidth() == b.getStrokeWidth() && |
| 141 a.getStyle() == b.getStyle() && |
| 142 a.getTextAlign() == b.getTextAlign(); |
| 143 } |
| 144 |
136 static void test_copy(skiatest::Reporter* reporter) { | 145 static void test_copy(skiatest::Reporter* reporter) { |
137 SkPaint paint; | 146 SkPaint paint; |
138 // set a few member variables | 147 // set a few member variables |
139 paint.setStyle(SkPaint::kStrokeAndFill_Style); | 148 paint.setStyle(SkPaint::kStrokeAndFill_Style); |
140 paint.setTextAlign(SkPaint::kLeft_Align); | 149 paint.setTextAlign(SkPaint::kLeft_Align); |
141 paint.setStrokeWidth(SkIntToScalar(2)); | 150 paint.setStrokeWidth(SkIntToScalar(2)); |
142 // set a few pointers | 151 // set a few pointers |
143 SkLayerDrawLooper* looper = new SkLayerDrawLooper(); | 152 SkLayerDrawLooper* looper = new SkLayerDrawLooper(); |
144 paint.setLooper(looper)->unref(); | 153 paint.setLooper(looper)->unref(); |
145 SkMaskFilter* mask = SkBlurMaskFilter::Create(1, SkBlurMaskFilter::kNormal_B
lurStyle); | 154 SkMaskFilter* mask = SkBlurMaskFilter::Create(1, SkBlurMaskFilter::kNormal_B
lurStyle); |
146 paint.setMaskFilter(mask)->unref(); | 155 paint.setMaskFilter(mask)->unref(); |
147 | 156 |
148 // copy the paint using the copy constructor and check they are the same | 157 // copy the paint using the copy constructor and check they are the same |
149 SkPaint copiedPaint = paint; | 158 SkPaint copiedPaint = paint; |
150 REPORTER_ASSERT(reporter, paint == copiedPaint); | 159 REPORTER_ASSERT(reporter, check_equal(paint, copiedPaint)); |
151 | 160 |
152 #ifdef SK_BUILD_FOR_ANDROID | 161 #ifdef SK_BUILD_FOR_ANDROID |
153 // the copy constructor should preserve the Generation ID | 162 // the copy constructor should preserve the Generation ID |
154 uint32_t paintGenID = paint.getGenerationID(); | 163 uint32_t paintGenID = paint.getGenerationID(); |
155 uint32_t copiedPaintGenID = copiedPaint.getGenerationID(); | 164 uint32_t copiedPaintGenID = copiedPaint.getGenerationID(); |
156 REPORTER_ASSERT(reporter, paintGenID == copiedPaintGenID); | 165 REPORTER_ASSERT(reporter, paintGenID == copiedPaintGenID); |
157 REPORTER_ASSERT(reporter, !memcmp(&paint, &copiedPaint, sizeof(paint))); | 166 REPORTER_ASSERT(reporter, check_equal(paint, copiedPaint)); |
158 #endif | 167 #endif |
159 | 168 |
160 // copy the paint using the equal operator and check they are the same | 169 // copy the paint using the equal operator and check they are the same |
161 copiedPaint = paint; | 170 copiedPaint = paint; |
162 REPORTER_ASSERT(reporter, paint == copiedPaint); | 171 REPORTER_ASSERT(reporter, check_equal(paint, copiedPaint)); |
163 | 172 |
164 #ifdef SK_BUILD_FOR_ANDROID | 173 #ifdef SK_BUILD_FOR_ANDROID |
165 // the equals operator should increment the Generation ID | 174 // the equals operator should increment the Generation ID |
166 REPORTER_ASSERT(reporter, paint.getGenerationID() == paintGenID); | 175 REPORTER_ASSERT(reporter, paint.getGenerationID() == paintGenID); |
167 REPORTER_ASSERT(reporter, copiedPaint.getGenerationID() != copiedPaintGenID)
; | 176 REPORTER_ASSERT(reporter, copiedPaint.getGenerationID() != copiedPaintGenID)
; |
168 copiedPaintGenID = copiedPaint.getGenerationID(); // reset to the new value | 177 copiedPaintGenID = copiedPaint.getGenerationID(); // reset to the new value |
169 REPORTER_ASSERT(reporter, memcmp(&paint, &copiedPaint, sizeof(paint))); | 178 REPORTER_ASSERT(reporter, memcmp(&paint, &copiedPaint, sizeof(paint))); |
170 #endif | 179 #endif |
171 | 180 |
172 // clean the paint and check they are back to their initial states | 181 // clean the paint and check they are back to their initial states |
173 SkPaint cleanPaint; | 182 SkPaint cleanPaint; |
174 paint.reset(); | 183 paint.reset(); |
175 copiedPaint.reset(); | 184 copiedPaint.reset(); |
176 REPORTER_ASSERT(reporter, cleanPaint == paint); | 185 REPORTER_ASSERT(reporter, check_equal(cleanPaint, paint)); |
177 REPORTER_ASSERT(reporter, cleanPaint == copiedPaint); | 186 REPORTER_ASSERT(reporter, check_equal(cleanPaint, copiedPaint)); |
178 | 187 |
179 #ifdef SK_BUILD_FOR_ANDROID | 188 #ifdef SK_BUILD_FOR_ANDROID |
180 // the reset function should increment the Generation ID | 189 // the reset function should increment the Generation ID |
181 REPORTER_ASSERT(reporter, paint.getGenerationID() != paintGenID); | 190 REPORTER_ASSERT(reporter, paint.getGenerationID() != paintGenID); |
182 REPORTER_ASSERT(reporter, copiedPaint.getGenerationID() != copiedPaintGenID)
; | 191 REPORTER_ASSERT(reporter, copiedPaint.getGenerationID() != copiedPaintGenID)
; |
183 REPORTER_ASSERT(reporter, memcmp(&cleanPaint, &paint, sizeof(cleanPaint))); | 192 REPORTER_ASSERT(reporter, memcmp(&cleanPaint, &paint, sizeof(cleanPaint))); |
184 REPORTER_ASSERT(reporter, memcmp(&cleanPaint, &copiedPaint, sizeof(cleanPain
t))); | 193 REPORTER_ASSERT(reporter, memcmp(&cleanPaint, &copiedPaint, sizeof(cleanPain
t))); |
185 #endif | 194 #endif |
186 } | 195 } |
187 | 196 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 | 254 |
246 // need to implement charsToGlyphs on other backends (e.g. linux, win) | 255 // need to implement charsToGlyphs on other backends (e.g. linux, win) |
247 // before we can run this tests everywhere | 256 // before we can run this tests everywhere |
248 if (false) { | 257 if (false) { |
249 test_cmap(reporter); | 258 test_cmap(reporter); |
250 } | 259 } |
251 } | 260 } |
252 | 261 |
253 #include "TestClassDef.h" | 262 #include "TestClassDef.h" |
254 DEFINE_TESTCLASS("Paint", TestPaintClass, TestPaint) | 263 DEFINE_TESTCLASS("Paint", TestPaintClass, TestPaint) |
OLD | NEW |