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 "gm_expectations.h" | 8 #include "gm_expectations.h" |
9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
10 #include "SkBitmapHasher.h" | |
11 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
12 #include "SkCommandLineFlags.h" | 11 #include "SkCommandLineFlags.h" |
13 #include "SkData.h" | 12 #include "SkData.h" |
14 #include "SkGraphics.h" | 13 #include "SkGraphics.h" |
15 #include "SkImageDecoder.h" | 14 #include "SkImageDecoder.h" |
16 #include "SkImageEncoder.h" | 15 #include "SkImageEncoder.h" |
17 #include "SkOSFile.h" | 16 #include "SkOSFile.h" |
18 #include "SkRandom.h" | 17 #include "SkRandom.h" |
19 #include "SkStream.h" | 18 #include "SkStream.h" |
20 #include "SkTArray.h" | 19 #include "SkTArray.h" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 SkASSERT(rect.fBottom < maxY); | 172 SkASSERT(rect.fBottom < maxY); |
174 } | 173 } |
175 } | 174 } |
176 return rect; | 175 return rect; |
177 } | 176 } |
178 | 177 |
179 // Stored expectations to be written to a file if createExpectationsPath is spec
ified. | 178 // Stored expectations to be written to a file if createExpectationsPath is spec
ified. |
180 static Json::Value gExpectationsToWrite; | 179 static Json::Value gExpectationsToWrite; |
181 | 180 |
182 /** | 181 /** |
183 * If expectations are to be recorded, record the expected checksum of bitmap i
nto global | 182 * If expectations are to be recorded, record the bitmap expectations into glob
al |
184 * expectations array. | 183 * expectations array. |
185 */ | 184 */ |
186 static void write_expectations(const SkBitmap& bitmap, const char* filename) { | 185 static void write_expectations(const SkBitmap& bitmap, const char* filename) { |
187 if (!FLAGS_createExpectationsPath.isEmpty()) { | 186 if (!FLAGS_createExpectationsPath.isEmpty()) { |
188 // Creates an Expectations object, and add it to the list to write. | 187 // Creates an Expectations object, and add it to the list to write. |
189 skiagm::Expectations expectation(bitmap); | 188 skiagm::Expectations expectation(bitmap); |
190 Json::Value value = expectation.asJsonValue(); | 189 Json::Value value = expectation.asJsonValue(); |
191 gExpectationsToWrite[filename] = value; | 190 gExpectationsToWrite[filename] = value; |
192 } | 191 } |
193 } | 192 } |
(...skipping 18 matching lines...) Expand all Loading... |
212 | 211 |
213 skiagm::Expectations jsExpectation = gJsonExpectations->get(filename); | 212 skiagm::Expectations jsExpectation = gJsonExpectations->get(filename); |
214 if (jsExpectation.empty()) { | 213 if (jsExpectation.empty()) { |
215 if (failureArray != NULL) { | 214 if (failureArray != NULL) { |
216 failureArray->push_back().printf("decoded %s, but could not find exp
ectation.", | 215 failureArray->push_back().printf("decoded %s, but could not find exp
ectation.", |
217 filename); | 216 filename); |
218 } | 217 } |
219 return false; | 218 return false; |
220 } | 219 } |
221 | 220 |
222 SkHashDigest checksum; | 221 skiagm::GmResultDigest resultDigest(bitmap); |
223 if (!SkBitmapHasher::ComputeDigest(bitmap, &checksum)) { | 222 if (!resultDigest.isValid()) { |
224 if (failureArray != NULL) { | 223 if (failureArray != NULL) { |
225 failureArray->push_back().printf("decoded %s, but could not create a
checksum.", | 224 failureArray->push_back().printf("decoded %s, but could not create a
GmResultDigest.", |
226 filename); | 225 filename); |
227 } | 226 } |
228 return false; | 227 return false; |
229 } | 228 } |
230 | 229 |
231 if (jsExpectation.match(checksum)) { | 230 if (jsExpectation.match(resultDigest)) { |
232 return true; | 231 return true; |
233 } | 232 } |
234 | 233 |
235 if (failureArray != NULL) { | 234 if (failureArray != NULL) { |
236 failureArray->push_back().printf("decoded %s, but the result does not ma
tch " | 235 failureArray->push_back().printf("decoded %s, but the result does not ma
tch " |
237 "expectations.", | 236 "expectations.", |
238 filename); | 237 filename); |
239 } | 238 } |
240 return false; | 239 return false; |
241 } | 240 } |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 } | 564 } |
566 | 565 |
567 return failed ? -1 : 0; | 566 return failed ? -1 : 0; |
568 } | 567 } |
569 | 568 |
570 #if !defined SK_BUILD_FOR_IOS | 569 #if !defined SK_BUILD_FOR_IOS |
571 int main(int argc, char * const argv[]) { | 570 int main(int argc, char * const argv[]) { |
572 return tool_main(argc, (char**) argv); | 571 return tool_main(argc, (char**) argv); |
573 } | 572 } |
574 #endif | 573 #endif |
OLD | NEW |