blob: 5509709104f806cb17b3c0e8aa03510caa44e35d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#ifndef DMExpectations_DEFINED
#define DMExpectations_DEFINED
#include "DMTask.h"
#include "gm_expectations.h"
namespace DM {
struct Expectations {
virtual ~Expectations() {}
// Return true if bitmap is the correct output for task, else false.
virtual bool check(const Task& task, SkBitmap bitmap) const = 0;
};
class NoExpectations : public Expectations {
public:
NoExpectations() {}
bool check(const Task&, SkBitmap) const SK_OVERRIDE { return true; }
};
#ifdef SK_BUILD_JSON_WRITER
class JsonExpectations : public Expectations {
public:
explicit JsonExpectations(const char* path) : fGMExpectations(path) {}
bool check(const Task& task, SkBitmap bitmap) const SK_OVERRIDE {
SkString filename = task.name();
filename.append(".png");
const skiagm::Expectations expectations = fGMExpectations.get(filename.c_str());
if (expectations.ignoreFailure() || expectations.empty()) {
return true;
}
// Delay this calculation as long as possible. It's expensive.
const skiagm::GmResultDigest digest(bitmap);
return expectations.match(digest);
}
private:
skiagm::JsonExpectationsSource fGMExpectations;
};
#endif
} // namespace DM
#endif // DMExpectations_DEFINED
|