PDFMetadataAttributeTest.cpp 1.5 KB

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