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