1 // Copyright 2018 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/page/cpdf_pagemodule.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 class PDFEditTest : public testing::Test {
SetUp()11 void SetUp() override { CPDF_PageModule::Create(); }
TearDown()12 void TearDown() override { CPDF_PageModule::Destroy(); }
13 };
14
TEST_F(PDFEditTest,LineJoin)15 TEST_F(PDFEditTest, LineJoin) {
16 EXPECT_FALSE(FPDFPageObj_SetLineJoin(nullptr, -1));
17 EXPECT_FALSE(FPDFPageObj_SetLineJoin(nullptr, FPDF_LINEJOIN_MITER));
18 EXPECT_FALSE(FPDFPageObj_SetLineJoin(nullptr, FPDF_LINEJOIN_ROUND));
19 EXPECT_FALSE(FPDFPageObj_SetLineJoin(nullptr, FPDF_LINEJOIN_BEVEL));
20 EXPECT_FALSE(FPDFPageObj_SetLineJoin(nullptr, 3));
21 EXPECT_FALSE(FPDFPageObj_SetLineJoin(nullptr, 1000));
22
23 FPDF_PAGEOBJECT path = FPDFPageObj_CreateNewPath(0, 0);
24 EXPECT_EQ(FPDF_LINEJOIN_MITER, FPDFPageObj_GetLineJoin(path));
25
26 EXPECT_FALSE(FPDFPageObj_SetLineJoin(path, -1));
27 EXPECT_FALSE(FPDFPageObj_SetLineJoin(path, 3));
28 EXPECT_FALSE(FPDFPageObj_SetLineJoin(path, 1000));
29
30 EXPECT_TRUE(FPDFPageObj_SetLineJoin(path, FPDF_LINEJOIN_BEVEL));
31 EXPECT_EQ(FPDF_LINEJOIN_BEVEL, FPDFPageObj_GetLineJoin(path));
32
33 EXPECT_TRUE(FPDFPageObj_SetLineJoin(path, FPDF_LINEJOIN_ROUND));
34 EXPECT_EQ(FPDF_LINEJOIN_ROUND, FPDFPageObj_GetLineJoin(path));
35
36 EXPECT_TRUE(FPDFPageObj_SetLineJoin(path, FPDF_LINEJOIN_MITER));
37 EXPECT_EQ(FPDF_LINEJOIN_MITER, FPDFPageObj_GetLineJoin(path));
38
39 FPDFPageObj_Destroy(path);
40 }
41
TEST_F(PDFEditTest,LineCap)42 TEST_F(PDFEditTest, LineCap) {
43 EXPECT_FALSE(FPDFPageObj_SetLineCap(nullptr, -1));
44 EXPECT_FALSE(FPDFPageObj_SetLineCap(nullptr, FPDF_LINECAP_BUTT));
45 EXPECT_FALSE(FPDFPageObj_SetLineCap(nullptr, FPDF_LINECAP_ROUND));
46 EXPECT_FALSE(FPDFPageObj_SetLineCap(nullptr, FPDF_LINECAP_PROJECTING_SQUARE));
47 EXPECT_FALSE(FPDFPageObj_SetLineCap(nullptr, 3));
48 EXPECT_FALSE(FPDFPageObj_SetLineCap(nullptr, 1000));
49
50 FPDF_PAGEOBJECT path = FPDFPageObj_CreateNewPath(0, 0);
51 EXPECT_EQ(FPDF_LINECAP_BUTT, FPDFPageObj_GetLineCap(path));
52
53 EXPECT_FALSE(FPDFPageObj_SetLineCap(path, -1));
54 EXPECT_FALSE(FPDFPageObj_SetLineCap(path, 3));
55 EXPECT_FALSE(FPDFPageObj_SetLineCap(path, 1000));
56
57 EXPECT_TRUE(FPDFPageObj_SetLineCap(path, FPDF_LINECAP_PROJECTING_SQUARE));
58 EXPECT_EQ(FPDF_LINECAP_PROJECTING_SQUARE, FPDFPageObj_GetLineCap(path));
59
60 EXPECT_TRUE(FPDFPageObj_SetLineCap(path, FPDF_LINECAP_ROUND));
61 EXPECT_EQ(FPDF_LINECAP_ROUND, FPDFPageObj_GetLineCap(path));
62
63 EXPECT_TRUE(FPDFPageObj_SetLineCap(path, FPDF_LINECAP_BUTT));
64 EXPECT_EQ(FPDF_LINECAP_BUTT, FPDFPageObj_GetLineCap(path));
65
66 FPDFPageObj_Destroy(path);
67 }
68