| Index: tests/PDFDocumentTest.cpp
|
| diff --git a/tests/PDFDocumentTest.cpp b/tests/PDFDocumentTest.cpp
|
| index b763742b0665281181939778099942186c7fbe47..c871375117cc13f5df2d289aeea0f3d8835b401f 100644
|
| --- a/tests/PDFDocumentTest.cpp
|
| +++ b/tests/PDFDocumentTest.cpp
|
| @@ -105,7 +105,7 @@ static void test_close(skiatest::Reporter* reporter) {
|
| REPORTER_ASSERT(reporter, stream.bytesWritten() != 0);
|
| }
|
|
|
| -DEF_TEST(document_tests, reporter) {
|
| +DEF_TEST(SkPDF_document_tests, reporter) {
|
| REQUIRE_PDF_DOCUMENT(document_tests, reporter);
|
| test_empty(reporter);
|
| test_abort(reporter);
|
| @@ -147,8 +147,8 @@ size_t count_bytes(const SkBitmap& bm, bool useDCT) {
|
| return stream.bytesWritten();
|
| }
|
|
|
| -DEF_TEST(document_dct_encoder, r) {
|
| - REQUIRE_PDF_DOCUMENT(document_dct_encoder, r);
|
| +DEF_TEST(SkPDF_document_dct_encoder, r) {
|
| + REQUIRE_PDF_DOCUMENT(SkPDF_document_dct_encoder, r);
|
| SkBitmap bm;
|
| if (GetResourceAsBitmap("mandrill_64.png", &bm)) {
|
| // Lossy encoding works better on photographs.
|
| @@ -156,8 +156,8 @@ DEF_TEST(document_dct_encoder, r) {
|
| }
|
| }
|
|
|
| -DEF_TEST(document_skbug_4734, r) {
|
| - REQUIRE_PDF_DOCUMENT(document_skbug_4734, r);
|
| +DEF_TEST(SkPDF_document_skbug_4734, r) {
|
| + REQUIRE_PDF_DOCUMENT(SkPDF_document_skbug_4734, r);
|
| SkDynamicMemoryWStream stream;
|
| sk_sp<SkDocument> doc(SkDocument::MakePDF(&stream));
|
| SkCanvas* canvas = doc->beginPage(64, 64);
|
| @@ -167,3 +167,63 @@ DEF_TEST(document_skbug_4734, r) {
|
| const char text[] = "HELLO";
|
| canvas->drawText(text, strlen(text), 0, 0, SkPaint());
|
| }
|
| +
|
| +static bool contains(const uint8_t* result, size_t size, const char expectation[]) {
|
| + size_t len = strlen(expectation);
|
| + size_t N = 1 + size - len;
|
| + for (size_t i = 0; i < N; ++i) {
|
| + if (0 == memcmp(result + i, expectation, len)) {
|
| + return true;
|
| + }
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +// verify that the PDFA flag does something.
|
| +DEF_TEST(SkPDF_pdfa_document, r) {
|
| + REQUIRE_PDF_DOCUMENT(SkPDF_pdfa_document, r);
|
| +
|
| + SkDocument::PDFMetadata pdfMetadata;
|
| + pdfMetadata.fTitle = "test document";
|
| + pdfMetadata.fCreation.fEnabled = true;
|
| + pdfMetadata.fCreation.fDateTime = {0, 1999, 12, 5, 31, 23, 59, 59};
|
| +
|
| + SkDynamicMemoryWStream buffer;
|
| + auto doc = SkDocument::MakePDF(&buffer, SK_ScalarDefaultRasterDPI,
|
| + pdfMetadata, nullptr, /* pdfa = */ true);
|
| + doc->beginPage(64, 64)->drawColor(SK_ColorRED);
|
| + doc->close();
|
| + sk_sp<SkData> data(buffer.copyToData());
|
| + buffer.reset();
|
| + static const char* expectations[] = {
|
| + "sRGB IEC61966-2.1",
|
| + "<dc:title><rdf:Alt><rdf:li xml:lang=\"x-default\">test document",
|
| + "<xmp:CreateDate>1999-12-31T23:59:59+00:00</xmp:CreateDate>",
|
| + "/Subtype /XML",
|
| + "/CreationDate (D:19991231235959+00'00')>>",
|
| + };
|
| + for (const char* expectation : expectations) {
|
| + if (!contains(data->bytes(), data->size(), expectation)) {
|
| + ERRORF(r, "PDFA expectation missing: '%s'.", expectation);
|
| + }
|
| + }
|
| + pdfMetadata.fProducer = "phoney library";
|
| + doc = SkDocument::MakePDF(&buffer, SK_ScalarDefaultRasterDPI,
|
| + pdfMetadata, nullptr, /* pdfa = */ true);
|
| + doc->beginPage(64, 64)->drawColor(SK_ColorRED);
|
| + doc->close();
|
| + data.reset(buffer.copyToData());
|
| + buffer.reset();
|
| +
|
| + static const char* moreExpectations[] = {
|
| + "/Producer (phoney library)",
|
| + "/ProductionLibrary (Skia/PDF m",
|
| + "<!-- <skia:ProductionLibrary>Skia/PDF m",
|
| + "<pdf:Producer>phoney library</pdf:Producer>",
|
| + };
|
| + for (const char* expectation : moreExpectations) {
|
| + if (!contains(data->bytes(), data->size(), expectation)) {
|
| + ERRORF(r, "PDFA expectation missing: '%s'.", expectation);
|
| + }
|
| + }
|
| +}
|
|
|