Home | History | Annotate | Download | only in fpdfsdk
      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 
      7 #include "core/fpdfapi/cpdf_modulemgr.h"
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 
     10 class PDFEditTest : public testing::Test {
     11   void SetUp() override { CPDF_ModuleMgr::Get()->Init(); }
     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);
     19   EXPECT_EQ(0, FPDFPage_CountObjects(page));
     20 
     21   FPDFPage_InsertObject(nullptr, nullptr);
     22   EXPECT_EQ(0, FPDFPage_CountObjects(page));
     23 
     24   FPDFPage_InsertObject(page, nullptr);
     25   EXPECT_EQ(0, FPDFPage_CountObjects(page));
     26 
     27   FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
     28   FPDFPage_InsertObject(nullptr, page_image);
     29   EXPECT_EQ(0, FPDFPage_CountObjects(page));
     30 
     31   FPDF_ClosePage(page);
     32   FPDF_CloseDocument(doc);
     33 }
     34 
     35 TEST_F(PDFEditTest, NewImageObj) {
     36   FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
     37   FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
     38   EXPECT_EQ(0, FPDFPage_CountObjects(page));
     39 
     40   FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
     41   FPDFPage_InsertObject(page, page_image);
     42   EXPECT_EQ(1, FPDFPage_CountObjects(page));
     43   EXPECT_TRUE(FPDFPage_GenerateContent(page));
     44 
     45   FPDF_ClosePage(page);
     46   FPDF_CloseDocument(doc);
     47 }
     48 
     49 TEST_F(PDFEditTest, NewImageObjGenerateContent) {
     50   FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
     51   FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
     52   EXPECT_EQ(0, FPDFPage_CountObjects(page));
     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 
     60   FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
     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);
     65   EXPECT_EQ(1, FPDFPage_CountObjects(page));
     66   EXPECT_TRUE(FPDFPage_GenerateContent(page));
     67 
     68   FPDFBitmap_Destroy(bitmap);
     69   FPDF_ClosePage(page);
     70   FPDF_CloseDocument(doc);
     71 }
     72