Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(514)

Side by Side Diff: gm/gm_expectations.cpp

Issue 14670021: Write/compare against expectations in skimage tool. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Instead of appending a string of potentially infinite length, append a single character. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gm/gm_expectations.h ('k') | gyp/gm.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 "SkBitmapHasher.h" 9 #include "SkBitmapHasher.h"
10 #include "SkImageDecoder.h" 10 #include "SkImageDecoder.h"
11 11
12 #define DEBUGFAIL_SEE_STDERR SkDEBUGFAIL("see stderr for message") 12 #define DEBUGFAIL_SEE_STDERR SkDEBUGFAIL("see stderr for message")
13 13
14 const static char kJsonKey_ActualResults[] = "actual-results"; 14 const static char kJsonKey_ActualResults[] = "actual-results";
15 const static char kJsonKey_ActualResults_Failed[] = "failed"; 15 const static char kJsonKey_ActualResults_Failed[] = "failed";
16 const static char kJsonKey_ActualResults_FailureIgnored[]= "failure-ignored"; 16 const static char kJsonKey_ActualResults_FailureIgnored[]= "failure-ignored";
17 const static char kJsonKey_ActualResults_NoComparison[] = "no-comparison"; 17 const static char kJsonKey_ActualResults_NoComparison[] = "no-comparison";
18 const static char kJsonKey_ActualResults_Succeeded[] = "succeeded"; 18 const static char kJsonKey_ActualResults_Succeeded[] = "succeeded";
19 const static char kJsonKey_ActualResults_AnyStatus_BitmapHash[] = "bitmap-64bit MD5"; 19 const static char kJsonKey_ActualResults_AnyStatus_BitmapHash[] = "bitmap-64bit MD5";
20 20
21 const static char kJsonKey_ExpectedResults[] = "expected-results"; 21 const static char kJsonKey_ExpectedResults[] = "expected-results";
22 const static char kJsonKey_ExpectedResults_AllowedBitmapHashes[] = "allowed-bitm ap-64bitMD5s"; 22 const static char kJsonKey_ExpectedResults_AllowedBitmapHashes[] = "allowed-bitm ap-64bitMD5s";
23 const static char kJsonKey_ExpectedResults_IgnoreFailure[] = "ignore-f ailure"; 23 const static char kJsonKey_ExpectedResults_IgnoreFailure[] = "ignore-f ailure";
24 24
25 namespace skiagm { 25 namespace skiagm {
26 26
27 void gm_fprintf(FILE *stream, const char format[], ...) {
28 va_list args;
29 va_start(args, format);
30 fprintf(stream, "GM: ");
31 vfprintf(stream, format, args);
32 va_end(args);
33 }
34
35 SkString make_filename(const char path[],
36 const char renderModeDescriptor[],
37 const char *name,
38 const char suffix[]) {
39 SkString filename(path);
40 if (filename.endsWith(SkPATH_SEPARATOR)) {
41 filename.remove(filename.size() - 1, 1);
42 }
43 filename.appendf("%c%s%s.%s", SkPATH_SEPARATOR,
44 name, renderModeDescriptor, suffix);
45 return filename;
46 }
47
27 // TODO(epoger): This currently assumes that the result SkHashDigest was 48 // TODO(epoger): This currently assumes that the result SkHashDigest was
28 // generated as an SkHashDigest of an SkBitmap. We'll need to allow for oth er 49 // generated as an SkHashDigest of an SkBitmap. We'll need to allow for oth er
29 // hash types to cover non-bitmaps. 50 // hash types to cover non-bitmaps.
30 Json::Value ActualResultAsJsonValue(const SkHashDigest& result) { 51 Json::Value ActualResultAsJsonValue(const SkHashDigest& result) {
31 Json::Value jsonValue; 52 Json::Value jsonValue;
32 jsonValue[kJsonKey_ActualResults_AnyStatus_BitmapHash] = asJsonValue(res ult); 53 jsonValue[kJsonKey_ActualResults_AnyStatus_BitmapHash] = asJsonValue(res ult);
33 return jsonValue; 54 return jsonValue;
34 } 55 }
35 56
36 Json::Value CreateJsonTree(Json::Value expectedResults, 57 Json::Value CreateJsonTree(Json::Value expectedResults,
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 return Expectations(referenceBitmap); 174 return Expectations(referenceBitmap);
154 } else { 175 } else {
155 return Expectations(); 176 return Expectations();
156 } 177 }
157 } 178 }
158 179
159 180
160 // JsonExpectationsSource class... 181 // JsonExpectationsSource class...
161 182
162 JsonExpectationsSource::JsonExpectationsSource(const char *jsonPath) { 183 JsonExpectationsSource::JsonExpectationsSource(const char *jsonPath) {
163 parse(jsonPath, &fJsonRoot); 184 Parse(jsonPath, &fJsonRoot);
164 fJsonExpectedResults = fJsonRoot[kJsonKey_ExpectedResults]; 185 fJsonExpectedResults = fJsonRoot[kJsonKey_ExpectedResults];
165 } 186 }
166 187
167 Expectations JsonExpectationsSource::get(const char *testName) { 188 Expectations JsonExpectationsSource::get(const char *testName) {
168 return Expectations(fJsonExpectedResults[testName]); 189 return Expectations(fJsonExpectedResults[testName]);
169 } 190 }
170 191
171 /*static*/ SkData* JsonExpectationsSource::readIntoSkData(SkStream &stream, size_t maxBytes) { 192 /*static*/ SkData* JsonExpectationsSource::ReadIntoSkData(SkStream &stream, size_t maxBytes) {
172 if (0 == maxBytes) { 193 if (0 == maxBytes) {
173 return SkData::NewEmpty(); 194 return SkData::NewEmpty();
174 } 195 }
175 char* bufStart = reinterpret_cast<char *>(sk_malloc_throw(maxBytes)); 196 char* bufStart = reinterpret_cast<char *>(sk_malloc_throw(maxBytes));
176 char* bufPtr = bufStart; 197 char* bufPtr = bufStart;
177 size_t bytesRemaining = maxBytes; 198 size_t bytesRemaining = maxBytes;
178 while (bytesRemaining > 0) { 199 while (bytesRemaining > 0) {
179 size_t bytesReadThisTime = stream.read(bufPtr, bytesRemaining); 200 size_t bytesReadThisTime = stream.read(bufPtr, bytesRemaining);
180 if (0 == bytesReadThisTime) { 201 if (0 == bytesReadThisTime) {
181 break; 202 break;
182 } 203 }
183 bytesRemaining -= bytesReadThisTime; 204 bytesRemaining -= bytesReadThisTime;
184 bufPtr += bytesReadThisTime; 205 bufPtr += bytesReadThisTime;
185 } 206 }
186 return SkData::NewFromMalloc(bufStart, maxBytes - bytesRemaining); 207 return SkData::NewFromMalloc(bufStart, maxBytes - bytesRemaining);
187 } 208 }
188 209
189 /*static*/ bool JsonExpectationsSource::parse(const char *jsonPath, Json::Va lue *jsonRoot) { 210 /*static*/ bool JsonExpectationsSource::Parse(const char *jsonPath, Json::Va lue *jsonRoot) {
190 SkFILEStream inFile(jsonPath); 211 SkFILEStream inFile(jsonPath);
191 if (!inFile.isValid()) { 212 if (!inFile.isValid()) {
192 gm_fprintf(stderr, "unable to read JSON file %s\n", jsonPath); 213 gm_fprintf(stderr, "unable to read JSON file %s\n", jsonPath);
193 DEBUGFAIL_SEE_STDERR; 214 DEBUGFAIL_SEE_STDERR;
194 return false; 215 return false;
195 } 216 }
196 217
197 SkAutoDataUnref dataRef(readFileIntoSkData(inFile)); 218 SkAutoDataUnref dataRef(ReadFileIntoSkData(inFile));
198 if (NULL == dataRef.get()) { 219 if (NULL == dataRef.get()) {
199 gm_fprintf(stderr, "error reading JSON file %s\n", jsonPath); 220 gm_fprintf(stderr, "error reading JSON file %s\n", jsonPath);
200 DEBUGFAIL_SEE_STDERR; 221 DEBUGFAIL_SEE_STDERR;
201 return false; 222 return false;
202 } 223 }
203 224
204 const char *bytes = reinterpret_cast<const char *>(dataRef.get()->data() ); 225 const char *bytes = reinterpret_cast<const char *>(dataRef.get()->data() );
205 size_t size = dataRef.get()->size(); 226 size_t size = dataRef.get()->size();
206 Json::Reader reader; 227 Json::Reader reader;
207 if (!reader.parse(bytes, bytes+size, *jsonRoot)) { 228 if (!reader.parse(bytes, bytes+size, *jsonRoot)) {
208 gm_fprintf(stderr, "error parsing JSON file %s\n", jsonPath); 229 gm_fprintf(stderr, "error parsing JSON file %s\n", jsonPath);
209 DEBUGFAIL_SEE_STDERR; 230 DEBUGFAIL_SEE_STDERR;
210 return false; 231 return false;
211 } 232 }
212 return true; 233 return true;
213 } 234 }
214 235
215 } 236 }
OLDNEW
« no previous file with comments | « gm/gm_expectations.h ('k') | gyp/gm.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698