1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2015 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci#include "include/core/SkData.h" 8cb93a386Sopenharmony_ci#include "include/core/SkStream.h" 9cb93a386Sopenharmony_ci#include "include/docs/SkPDFDocument.h" 10cb93a386Sopenharmony_ci#include "tests/Test.h" 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_ciDEF_TEST(SkPDF_Metadata, r) { 13cb93a386Sopenharmony_ci REQUIRE_PDF_DOCUMENT(SkPDF_Metadata, r); 14cb93a386Sopenharmony_ci SkTime::DateTime now; 15cb93a386Sopenharmony_ci SkTime::GetDateTime(&now); 16cb93a386Sopenharmony_ci SkPDF::Metadata metadata; 17cb93a386Sopenharmony_ci metadata.fTitle = "A1"; 18cb93a386Sopenharmony_ci metadata.fAuthor = "A2"; 19cb93a386Sopenharmony_ci metadata.fSubject = "A3"; 20cb93a386Sopenharmony_ci metadata.fKeywords = "A4"; 21cb93a386Sopenharmony_ci metadata.fCreator = "A5"; 22cb93a386Sopenharmony_ci metadata.fCreation = now; 23cb93a386Sopenharmony_ci metadata.fModified = now; 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ci SkDynamicMemoryWStream pdf; 26cb93a386Sopenharmony_ci auto doc = SkPDF::MakeDocument(&pdf, metadata); 27cb93a386Sopenharmony_ci doc->beginPage(612.0f, 792.0f); 28cb93a386Sopenharmony_ci doc->close(); 29cb93a386Sopenharmony_ci sk_sp<SkData> data = pdf.detachAsData(); 30cb93a386Sopenharmony_ci static const char* expectations[] = { 31cb93a386Sopenharmony_ci "/Title (A1)", 32cb93a386Sopenharmony_ci "/Author (A2)", 33cb93a386Sopenharmony_ci "/Subject (A3)", 34cb93a386Sopenharmony_ci "/Keywords (A4)", 35cb93a386Sopenharmony_ci "/Creator (A5)", 36cb93a386Sopenharmony_ci "/Producer (Skia/PDF ", 37cb93a386Sopenharmony_ci "/CreationDate (D:", 38cb93a386Sopenharmony_ci "/ModDate (D:" 39cb93a386Sopenharmony_ci }; 40cb93a386Sopenharmony_ci const uint8_t* bytes = data->bytes(); 41cb93a386Sopenharmony_ci for (const char* expectation : expectations) { 42cb93a386Sopenharmony_ci size_t len = strlen(expectation); 43cb93a386Sopenharmony_ci bool found = false; 44cb93a386Sopenharmony_ci size_t N = 1 + data->size() - len; 45cb93a386Sopenharmony_ci for (size_t i = 0; i < N; ++i) { 46cb93a386Sopenharmony_ci if (0 == memcmp(bytes + i, expectation, len)) { 47cb93a386Sopenharmony_ci found = true; 48cb93a386Sopenharmony_ci break; 49cb93a386Sopenharmony_ci } 50cb93a386Sopenharmony_ci } 51cb93a386Sopenharmony_ci if (!found) { 52cb93a386Sopenharmony_ci ERRORF(r, "expectation missing: '%s'.", expectation); 53cb93a386Sopenharmony_ci } 54cb93a386Sopenharmony_ci } 55cb93a386Sopenharmony_ci} 56