aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/PDFJpegEmbedTest.cpp
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2015-05-07 11:46:59 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-05-07 11:46:59 -0700
commit96287f7af7ff6aaa48b8d28ec6b7b79836da2d7c (patch)
treec8dd447d551c2fc5d6843c8c26739eb6306f07cd /tests/PDFJpegEmbedTest.cpp
parente64eb570a5b9480bc24d0656ccabcff1ab13a229 (diff)
SkPDF: detect YUV-JPEG without relying on ImageGenerator
Diffstat (limited to 'tests/PDFJpegEmbedTest.cpp')
-rw-r--r--tests/PDFJpegEmbedTest.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/PDFJpegEmbedTest.cpp b/tests/PDFJpegEmbedTest.cpp
index 133d84a3ff..cfe6776bf5 100644
--- a/tests/PDFJpegEmbedTest.cpp
+++ b/tests/PDFJpegEmbedTest.cpp
@@ -87,3 +87,41 @@ DEF_TEST(PDFJpegEmbedTest, r) {
// embedded into the PDF directly.
REPORTER_ASSERT(r, !is_subset_of(cmykData, pdfData));
}
+
+#include "SkJpegInfo.h"
+
+DEF_TEST(JpegIdentification, r) {
+ static struct {
+ const char* path;
+ bool isJfif;
+ SkJFIFInfo::Type type;
+ } kTests[] = {{"CMYK.jpg", false, SkJFIFInfo::kGrayscale},
+ {"color_wheel.jpg", true, SkJFIFInfo::kYCbCr},
+ {"grayscale.jpg", true, SkJFIFInfo::kGrayscale},
+ {"mandrill_512_q075.jpg", true, SkJFIFInfo::kYCbCr},
+ {"randPixels.jpg", true, SkJFIFInfo::kYCbCr}};
+ for (size_t i = 0; i < SK_ARRAY_COUNT(kTests); ++i) {
+ SkAutoTUnref<SkData> data(
+ load_resource(r, "JpegIdentification", kTests[i].path));
+ if (!data) {
+ continue;
+ }
+ SkJFIFInfo info;
+ bool isJfif = SkIsJFIF(data, &info);
+ if (isJfif != kTests[i].isJfif) {
+ ERRORF(r, "%s failed isJfif test", kTests[i].path);
+ continue;
+ }
+ if (!isJfif) {
+ continue; // not applicable
+ }
+ if (kTests[i].type != info.fType) {
+ ERRORF(r, "%s failed jfif type test", kTests[i].path);
+ continue;
+ }
+ if (r->verbose()) {
+ SkDebugf("\nJpegIdentification: %s [%d x %d]\n", kTests[i].path,
+ info.fWidth, info.fHeight);
+ }
+ }
+}