summaryrefslogtreecommitdiff
path: root/fpdfsdk/fpdfppo_embeddertest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/fpdfppo_embeddertest.cpp')
-rw-r--r--fpdfsdk/fpdfppo_embeddertest.cpp40
1 files changed, 37 insertions, 3 deletions
diff --git a/fpdfsdk/fpdfppo_embeddertest.cpp b/fpdfsdk/fpdfppo_embeddertest.cpp
index db39700ca1..7e6ff33fc3 100644
--- a/fpdfsdk/fpdfppo_embeddertest.cpp
+++ b/fpdfsdk/fpdfppo_embeddertest.cpp
@@ -1,11 +1,11 @@
// Copyright 2016 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 "public/fpdf_ppo.h"
+#include <string>
#include "core/fxcrt/fx_basic.h"
#include "public/fpdf_edit.h"
+#include "public/fpdf_ppo.h"
#include "public/fpdfview.h"
#include "testing/embedder_test.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -131,7 +131,7 @@ TEST_F(FPDFPPOEmbeddertest, BUG_664284) {
EXPECT_TRUE(OpenDocument("bug_664284.pdf"));
FPDF_PAGE page = LoadPage(0);
- EXPECT_TRUE(page);
+ ASSERT_NE(nullptr, page);
FPDF_DOCUMENT output_doc = FPDF_CreateNewDocument();
EXPECT_TRUE(output_doc);
@@ -140,3 +140,37 @@ TEST_F(FPDFPPOEmbeddertest, BUG_664284) {
UnloadPage(page);
}
+
+TEST_F(FPDFPPOEmbeddertest, ImportWithZeroLengthStream) {
+ EXPECT_TRUE(OpenDocument("zero_length_stream.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_NE(nullptr, page);
+
+ FPDF_BITMAP bitmap = RenderPage(page);
+ ASSERT_EQ(200, FPDFBitmap_GetWidth(bitmap));
+ ASSERT_EQ(200, FPDFBitmap_GetHeight(bitmap));
+ ASSERT_EQ(800, FPDFBitmap_GetStride(bitmap));
+
+ std::string digest = HashBitmap(bitmap, 200, 200);
+ FPDFBitmap_Destroy(bitmap);
+ FPDF_ClosePage(page);
+
+ FPDF_DOCUMENT new_doc = FPDF_CreateNewDocument();
+ EXPECT_TRUE(new_doc);
+ EXPECT_TRUE(FPDF_ImportPages(new_doc, document(), "1", 0));
+
+ EXPECT_EQ(1, FPDF_GetPageCount(new_doc));
+ FPDF_PAGE new_page = FPDF_LoadPage(new_doc, 0);
+ ASSERT_NE(nullptr, new_page);
+ FPDF_BITMAP new_bitmap = RenderPage(new_page);
+ ASSERT_EQ(200, FPDFBitmap_GetWidth(new_bitmap));
+ ASSERT_EQ(200, FPDFBitmap_GetHeight(new_bitmap));
+ ASSERT_EQ(800, FPDFBitmap_GetStride(new_bitmap));
+
+ std::string new_digest = HashBitmap(new_bitmap, 200, 200);
+ FPDFBitmap_Destroy(new_bitmap);
+ FPDF_ClosePage(new_page);
+ FPDF_CloseDocument(new_doc);
+
+ EXPECT_EQ(digest, new_digest);
+}