blob: fcc081ab7689096defb944ca4c30cf0030efc35a [file] [log] [blame]
thestigdc359b02016-08-09 15:46:20 -07001// Copyright 2016 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "public/fpdf_edit.h"
6
dsinclair39c62fd2016-09-29 12:49:17 -07007#include "core/fpdfapi/cpdf_modulemgr.h"
thestigdc359b02016-08-09 15:46:20 -07008#include "testing/gtest/include/gtest/gtest.h"
9
10class PDFEditTest : public testing::Test {
Lei Zhang76020fc2017-05-18 15:51:20 -070011 void SetUp() override { CPDF_ModuleMgr::Get()->Init(); }
thestigdc359b02016-08-09 15:46:20 -070012
13 void TearDown() override { CPDF_ModuleMgr::Destroy(); }
14};
15
16TEST_F(PDFEditTest, InsertObjectWithInvalidPage) {
17 FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
18 FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
Miklos Vajna92627612017-09-25 12:59:29 +020019 EXPECT_EQ(0, FPDFPage_CountObjects(page));
thestigdc359b02016-08-09 15:46:20 -070020
21 FPDFPage_InsertObject(nullptr, nullptr);
Miklos Vajna92627612017-09-25 12:59:29 +020022 EXPECT_EQ(0, FPDFPage_CountObjects(page));
thestigdc359b02016-08-09 15:46:20 -070023
24 FPDFPage_InsertObject(page, nullptr);
Miklos Vajna92627612017-09-25 12:59:29 +020025 EXPECT_EQ(0, FPDFPage_CountObjects(page));
thestigdc359b02016-08-09 15:46:20 -070026
Lei Zhangcbd89572017-03-15 17:35:47 -070027 FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
thestigdc359b02016-08-09 15:46:20 -070028 FPDFPage_InsertObject(nullptr, page_image);
Miklos Vajna92627612017-09-25 12:59:29 +020029 EXPECT_EQ(0, FPDFPage_CountObjects(page));
thestigdc359b02016-08-09 15:46:20 -070030
31 FPDF_ClosePage(page);
32 FPDF_CloseDocument(doc);
33}
34
Lei Zhangcbd89572017-03-15 17:35:47 -070035TEST_F(PDFEditTest, NewImageObj) {
thestigdc359b02016-08-09 15:46:20 -070036 FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
37 FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
Miklos Vajna92627612017-09-25 12:59:29 +020038 EXPECT_EQ(0, FPDFPage_CountObjects(page));
thestigdc359b02016-08-09 15:46:20 -070039
Lei Zhangcbd89572017-03-15 17:35:47 -070040 FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
thestigdc359b02016-08-09 15:46:20 -070041 FPDFPage_InsertObject(page, page_image);
Miklos Vajna92627612017-09-25 12:59:29 +020042 EXPECT_EQ(1, FPDFPage_CountObjects(page));
tsepez5937d0d2016-11-11 12:05:27 -080043 EXPECT_TRUE(FPDFPage_GenerateContent(page));
thestigdc359b02016-08-09 15:46:20 -070044
45 FPDF_ClosePage(page);
46 FPDF_CloseDocument(doc);
47}
thestig85af2a32016-08-09 17:13:14 -070048
Lei Zhangcbd89572017-03-15 17:35:47 -070049TEST_F(PDFEditTest, NewImageObjGenerateContent) {
thestig85af2a32016-08-09 17:13:14 -070050 FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
51 FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
Miklos Vajna92627612017-09-25 12:59:29 +020052 EXPECT_EQ(0, FPDFPage_CountObjects(page));
thestig85af2a32016-08-09 17:13:14 -070053
54 constexpr int kBitmapSize = 50;
55 FPDF_BITMAP bitmap = FPDFBitmap_Create(kBitmapSize, kBitmapSize, 0);
56 FPDFBitmap_FillRect(bitmap, 0, 0, kBitmapSize, kBitmapSize, 0x00000000);
57 EXPECT_EQ(kBitmapSize, FPDFBitmap_GetWidth(bitmap));
58 EXPECT_EQ(kBitmapSize, FPDFBitmap_GetHeight(bitmap));
59
Lei Zhangcbd89572017-03-15 17:35:47 -070060 FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
thestig85af2a32016-08-09 17:13:14 -070061 ASSERT_TRUE(FPDFImageObj_SetBitmap(&page, 0, page_image, bitmap));
62 ASSERT_TRUE(
63 FPDFImageObj_SetMatrix(page_image, kBitmapSize, 0, 0, kBitmapSize, 0, 0));
64 FPDFPage_InsertObject(page, page_image);
Miklos Vajna92627612017-09-25 12:59:29 +020065 EXPECT_EQ(1, FPDFPage_CountObjects(page));
thestig85af2a32016-08-09 17:13:14 -070066 EXPECT_TRUE(FPDFPage_GenerateContent(page));
67
68 FPDFBitmap_Destroy(bitmap);
69 FPDF_ClosePage(page);
70 FPDF_CloseDocument(doc);
71}