Add a test for FPDFPage_SetRotation().
Show that it does not have any effect on the loaded document.
BUG=pdfium:1209
Change-Id: I085aefe470c23c72e86fb5b2c3dcc65107a9c1b1
Reviewed-on: https://pdfium-review.googlesource.com/c/47630
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/BUILD.gn b/fpdfsdk/BUILD.gn
index d4b9d6e..87eac73 100644
--- a/fpdfsdk/BUILD.gn
+++ b/fpdfsdk/BUILD.gn
@@ -118,6 +118,7 @@
"fpdf_dataavail_embeddertest.cpp",
"fpdf_doc_embeddertest.cpp",
"fpdf_edit_embeddertest.cpp",
+ "fpdf_editpage_embeddertest.cpp",
"fpdf_editpath_embeddertest.cpp",
"fpdf_ext_embeddertest.cpp",
"fpdf_flatten_embeddertest.cpp",
diff --git a/fpdfsdk/fpdf_editpage_embeddertest.cpp b/fpdfsdk/fpdf_editpage_embeddertest.cpp
new file mode 100644
index 0000000..6be553a
--- /dev/null
+++ b/fpdfsdk/fpdf_editpage_embeddertest.cpp
@@ -0,0 +1,68 @@
+// Copyright 2018 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/fxcrt/fx_system.h"
+#include "public/fpdf_edit.h"
+#include "testing/embedder_test.h"
+
+class FPDFEditPageEmbedderTest : public EmbedderTest {};
+
+TEST_F(FPDFEditPageEmbedderTest, Rotation) {
+ const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe";
+ const char kRotatedMD5[] = "d599429574ff0dcad3bc898ea8b874ca";
+
+ {
+ ASSERT_TRUE(OpenDocument("rectangles.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ {
+ // Render the page as is.
+ EXPECT_EQ(0, FPDFPage_GetRotation(page));
+ const int page_width = static_cast<int>(FPDF_GetPageWidth(page));
+ const int page_height = static_cast<int>(FPDF_GetPageHeight(page));
+ EXPECT_EQ(200, page_width);
+ EXPECT_EQ(300, page_height);
+ ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
+ CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+ }
+
+ FPDFPage_SetRotation(page, 1);
+
+ {
+ // Render the page after rotation.
+ // Note that even though the rotation has changed, nothing else has.
+ // TODO(https://crbug.com/pdfium/1209): Fix tne rendering.
+ EXPECT_EQ(1, FPDFPage_GetRotation(page));
+ const int page_width = static_cast<int>(FPDF_GetPageWidth(page));
+ const int page_height = static_cast<int>(FPDF_GetPageHeight(page));
+ EXPECT_EQ(200, page_width);
+ EXPECT_EQ(300, page_height);
+ ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
+ CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+ }
+
+ UnloadPage(page);
+ }
+
+ {
+ // Save a copy, open the copy, and render it.
+ // Note that it renders the rotation.
+ EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
+ OpenSavedDocument(nullptr);
+ FPDF_PAGE saved_page = LoadSavedPage(0);
+ ASSERT_TRUE(saved_page);
+
+ EXPECT_EQ(1, FPDFPage_GetRotation(saved_page));
+ const int page_width = static_cast<int>(FPDF_GetPageWidth(saved_page));
+ const int page_height = static_cast<int>(FPDF_GetPageHeight(saved_page));
+ EXPECT_EQ(300, page_width);
+ EXPECT_EQ(200, page_height);
+ ScopedFPDFBitmap bitmap = RenderSavedPage(saved_page);
+ CompareBitmap(bitmap.get(), page_width, page_height, kRotatedMD5);
+
+ CloseSavedPage(saved_page);
+ CloseSavedDocument();
+ }
+}