thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 1 | // 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 | |
dsinclair | 39c62fd | 2016-09-29 12:49:17 -0700 | [diff] [blame] | 7 | #include "core/fpdfapi/cpdf_modulemgr.h" |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 8 | #include "testing/gtest/include/gtest/gtest.h" |
| 9 | |
| 10 | class PDFEditTest : public testing::Test { |
Lei Zhang | 76020fc | 2017-05-18 15:51:20 -0700 | [diff] [blame] | 11 | void SetUp() override { CPDF_ModuleMgr::Get()->Init(); } |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 12 | |
| 13 | void TearDown() override { CPDF_ModuleMgr::Destroy(); } |
| 14 | }; |
| 15 | |
| 16 | TEST_F(PDFEditTest, InsertObjectWithInvalidPage) { |
| 17 | FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); |
| 18 | FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); |
Miklos Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 19 | EXPECT_EQ(0, FPDFPage_CountObjects(page)); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 20 | |
| 21 | FPDFPage_InsertObject(nullptr, nullptr); |
Miklos Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 22 | EXPECT_EQ(0, FPDFPage_CountObjects(page)); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 23 | |
| 24 | FPDFPage_InsertObject(page, nullptr); |
Miklos Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 25 | EXPECT_EQ(0, FPDFPage_CountObjects(page)); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 26 | |
Lei Zhang | cbd8957 | 2017-03-15 17:35:47 -0700 | [diff] [blame] | 27 | FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 28 | FPDFPage_InsertObject(nullptr, page_image); |
Miklos Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 29 | EXPECT_EQ(0, FPDFPage_CountObjects(page)); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 30 | |
| 31 | FPDF_ClosePage(page); |
| 32 | FPDF_CloseDocument(doc); |
| 33 | } |
| 34 | |
Lei Zhang | cbd8957 | 2017-03-15 17:35:47 -0700 | [diff] [blame] | 35 | TEST_F(PDFEditTest, NewImageObj) { |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 36 | FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); |
| 37 | FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); |
Miklos Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 38 | EXPECT_EQ(0, FPDFPage_CountObjects(page)); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 39 | |
Lei Zhang | cbd8957 | 2017-03-15 17:35:47 -0700 | [diff] [blame] | 40 | FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 41 | FPDFPage_InsertObject(page, page_image); |
Miklos Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 42 | EXPECT_EQ(1, FPDFPage_CountObjects(page)); |
tsepez | 5937d0d | 2016-11-11 12:05:27 -0800 | [diff] [blame] | 43 | EXPECT_TRUE(FPDFPage_GenerateContent(page)); |
thestig | dc359b0 | 2016-08-09 15:46:20 -0700 | [diff] [blame] | 44 | |
| 45 | FPDF_ClosePage(page); |
| 46 | FPDF_CloseDocument(doc); |
| 47 | } |
thestig | 85af2a3 | 2016-08-09 17:13:14 -0700 | [diff] [blame] | 48 | |
Lei Zhang | cbd8957 | 2017-03-15 17:35:47 -0700 | [diff] [blame] | 49 | TEST_F(PDFEditTest, NewImageObjGenerateContent) { |
thestig | 85af2a3 | 2016-08-09 17:13:14 -0700 | [diff] [blame] | 50 | FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); |
| 51 | FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); |
Miklos Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 52 | EXPECT_EQ(0, FPDFPage_CountObjects(page)); |
thestig | 85af2a3 | 2016-08-09 17:13:14 -0700 | [diff] [blame] | 53 | |
| 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 Zhang | cbd8957 | 2017-03-15 17:35:47 -0700 | [diff] [blame] | 60 | FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); |
thestig | 85af2a3 | 2016-08-09 17:13:14 -0700 | [diff] [blame] | 61 | 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 Vajna | 9262761 | 2017-09-25 12:59:29 +0200 | [diff] [blame] | 65 | EXPECT_EQ(1, FPDFPage_CountObjects(page)); |
thestig | 85af2a3 | 2016-08-09 17:13:14 -0700 | [diff] [blame] | 66 | EXPECT_TRUE(FPDFPage_GenerateContent(page)); |
| 67 | |
| 68 | FPDFBitmap_Destroy(bitmap); |
| 69 | FPDF_ClosePage(page); |
| 70 | FPDF_CloseDocument(doc); |
| 71 | } |