| Index: tests/RecordTestUtils.h
|
| diff --git a/tests/RecordTestUtils.h b/tests/RecordTestUtils.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..db3f02d3a27e99f54bbc88aeeacb169919731fc7
|
| --- /dev/null
|
| +++ b/tests/RecordTestUtils.h
|
| @@ -0,0 +1,31 @@
|
| +#ifndef RecordTestUtils_DEFINED
|
| +#define RecordTestUtils_DEFINED
|
| +
|
| +#include "SkRecord.h"
|
| +#include "SkRecords.h"
|
| +
|
| +// If the command we're reading is a U, set ptr to it, otherwise set it to NULL.
|
| +template <typename U>
|
| +struct ReadAs {
|
| + ReadAs() : ptr(NULL), type(SkRecords::Type(~0)) {}
|
| +
|
| + const U* ptr;
|
| + SkRecords::Type type;
|
| +
|
| + void operator()(const U& r) { ptr = &r; type = U::kType; }
|
| +
|
| + template <typename T>
|
| + void operator()(const T&) { type = U::kType; }
|
| +};
|
| +
|
| +// Assert that the ith command in record is of type T, and return it.
|
| +template <typename T>
|
| +static const T* assert_type(skiatest::Reporter* r, const SkRecord& record, unsigned index) {
|
| + ReadAs<T> reader;
|
| + record.visit<void>(index, reader);
|
| + REPORTER_ASSERT(r, T::kType == reader.type);
|
| + REPORTER_ASSERT(r, NULL != reader.ptr);
|
| + return reader.ptr;
|
| +}
|
| +
|
| +#endif//RecordTestUtils_DEFINED
|
|
|