• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2020 The PDFium Authors
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 "core/fpdfapi/page/cpdf_function.h"
6 
7 #include "core/fpdfapi/parser/cpdf_array.h"
8 #include "core/fpdfapi/parser/cpdf_dictionary.h"
9 #include "core/fpdfapi/parser/cpdf_number.h"
10 #include "core/fxcrt/retain_ptr.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 
TEST(CPDFFunction,BadFunctionType)13 TEST(CPDFFunction, BadFunctionType) {
14   auto pDict = pdfium::MakeRetain<CPDF_Dictionary>();
15   pDict->SetNewFor<CPDF_Number>("FunctionType", -2);
16   EXPECT_FALSE(CPDF_Function::Load(pDict));
17 
18   pDict->SetNewFor<CPDF_Number>("FunctionType", 5);
19   EXPECT_FALSE(CPDF_Function::Load(pDict));
20 }
21 
TEST(CPDFFunction,NoDomain)22 TEST(CPDFFunction, NoDomain) {
23   auto pDict = pdfium::MakeRetain<CPDF_Dictionary>();
24   pDict->SetNewFor<CPDF_Number>("FunctionType", 0);
25   EXPECT_FALSE(CPDF_Function::Load(pDict));
26 }
27 
TEST(CPDFFunction,EmptyDomain)28 TEST(CPDFFunction, EmptyDomain) {
29   auto pDict = pdfium::MakeRetain<CPDF_Dictionary>();
30   pDict->SetNewFor<CPDF_Number>("FunctionType", 0);
31   pDict->SetNewFor<CPDF_Array>("Domain");
32   EXPECT_FALSE(CPDF_Function::Load(pDict));
33 }
34 
TEST(CPDFFunction,NoRange)35 TEST(CPDFFunction, NoRange) {
36   auto pDict = pdfium::MakeRetain<CPDF_Dictionary>();
37   pDict->SetNewFor<CPDF_Number>("FunctionType", 0);
38 
39   auto pArray = pDict->SetNewFor<CPDF_Array>("Domain");
40   pArray->AppendNew<CPDF_Number>(0);
41   pArray->AppendNew<CPDF_Number>(10);
42   EXPECT_FALSE(CPDF_Function::Load(pDict));
43 }
44