diff options
Diffstat (limited to 'fpdfsdk/fpdf_editimg_unittest.cpp')
-rw-r--r-- | fpdfsdk/fpdf_editimg_unittest.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/fpdfsdk/fpdf_editimg_unittest.cpp b/fpdfsdk/fpdf_editimg_unittest.cpp new file mode 100644 index 0000000000..fcc081ab76 --- /dev/null +++ b/fpdfsdk/fpdf_editimg_unittest.cpp @@ -0,0 +1,71 @@ +// 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_edit.h" + +#include "core/fpdfapi/cpdf_modulemgr.h" +#include "testing/gtest/include/gtest/gtest.h" + +class PDFEditTest : public testing::Test { + void SetUp() override { CPDF_ModuleMgr::Get()->Init(); } + + void TearDown() override { CPDF_ModuleMgr::Destroy(); } +}; + +TEST_F(PDFEditTest, InsertObjectWithInvalidPage) { + FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); + FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); + EXPECT_EQ(0, FPDFPage_CountObjects(page)); + + FPDFPage_InsertObject(nullptr, nullptr); + EXPECT_EQ(0, FPDFPage_CountObjects(page)); + + FPDFPage_InsertObject(page, nullptr); + EXPECT_EQ(0, FPDFPage_CountObjects(page)); + + FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); + FPDFPage_InsertObject(nullptr, page_image); + EXPECT_EQ(0, FPDFPage_CountObjects(page)); + + FPDF_ClosePage(page); + FPDF_CloseDocument(doc); +} + +TEST_F(PDFEditTest, NewImageObj) { + FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); + FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); + EXPECT_EQ(0, FPDFPage_CountObjects(page)); + + FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); + FPDFPage_InsertObject(page, page_image); + EXPECT_EQ(1, FPDFPage_CountObjects(page)); + EXPECT_TRUE(FPDFPage_GenerateContent(page)); + + FPDF_ClosePage(page); + FPDF_CloseDocument(doc); +} + +TEST_F(PDFEditTest, NewImageObjGenerateContent) { + FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); + FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); + EXPECT_EQ(0, FPDFPage_CountObjects(page)); + + constexpr int kBitmapSize = 50; + FPDF_BITMAP bitmap = FPDFBitmap_Create(kBitmapSize, kBitmapSize, 0); + FPDFBitmap_FillRect(bitmap, 0, 0, kBitmapSize, kBitmapSize, 0x00000000); + EXPECT_EQ(kBitmapSize, FPDFBitmap_GetWidth(bitmap)); + EXPECT_EQ(kBitmapSize, FPDFBitmap_GetHeight(bitmap)); + + FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); + ASSERT_TRUE(FPDFImageObj_SetBitmap(&page, 0, page_image, bitmap)); + ASSERT_TRUE( + FPDFImageObj_SetMatrix(page_image, kBitmapSize, 0, 0, kBitmapSize, 0, 0)); + FPDFPage_InsertObject(page, page_image); + EXPECT_EQ(1, FPDFPage_CountObjects(page)); + EXPECT_TRUE(FPDFPage_GenerateContent(page)); + + FPDFBitmap_Destroy(bitmap); + FPDF_ClosePage(page); + FPDF_CloseDocument(doc); +} |