| // Copyright 2020 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "core/fpdfapi/page/cpdf_function.h" |
| |
| #include "core/fpdfapi/parser/cpdf_array.h" |
| #include "core/fpdfapi/parser/cpdf_dictionary.h" |
| #include "core/fpdfapi/parser/cpdf_number.h" |
| #include "core/fxcrt/retain_ptr.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| TEST(CPDFFunction, BadFunctionType) { |
| auto pDict = pdfium::MakeRetain<CPDF_Dictionary>(); |
| pDict->SetNewFor<CPDF_Number>("FunctionType", -2); |
| EXPECT_EQ(nullptr, CPDF_Function::Load(pDict.Get())); |
| |
| pDict->SetNewFor<CPDF_Number>("FunctionType", 5); |
| EXPECT_EQ(nullptr, CPDF_Function::Load(pDict.Get())); |
| } |
| |
| TEST(CPDFFunction, NoDomain) { |
| auto pDict = pdfium::MakeRetain<CPDF_Dictionary>(); |
| pDict->SetNewFor<CPDF_Number>("FunctionType", 0); |
| EXPECT_EQ(nullptr, CPDF_Function::Load(pDict.Get())); |
| } |
| |
| TEST(CPDFFunction, EmptyDomain) { |
| auto pDict = pdfium::MakeRetain<CPDF_Dictionary>(); |
| pDict->SetNewFor<CPDF_Number>("FunctionType", 0); |
| pDict->SetNewFor<CPDF_Array>("Domain"); |
| EXPECT_EQ(nullptr, CPDF_Function::Load(pDict.Get())); |
| } |
| |
| TEST(CPDFFunction, NoRange) { |
| auto pDict = pdfium::MakeRetain<CPDF_Dictionary>(); |
| pDict->SetNewFor<CPDF_Number>("FunctionType", 0); |
| |
| CPDF_Array* pArray = pDict->SetNewFor<CPDF_Array>("Domain"); |
| pArray->AppendNew<CPDF_Number>(0); |
| pArray->AppendNew<CPDF_Number>(10); |
| EXPECT_EQ(nullptr, CPDF_Function::Load(pDict.Get())); |
| } |