You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.6 KiB
119 lines
3.6 KiB
// Copyright 2015 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. |
|
|
|
#ifndef TESTING_TEST_SUPPORT_H_ |
|
#define TESTING_TEST_SUPPORT_H_ |
|
|
|
#include <stdlib.h> |
|
#include <memory> |
|
#include <string> |
|
#include <vector> |
|
|
|
#include "public/fpdf_save.h" |
|
#include "public/fpdfview.h" |
|
|
|
#ifdef PDF_ENABLE_V8 |
|
#include "v8/include/v8.h" |
|
#endif // PDF_ENABLE_V8 |
|
|
|
namespace pdfium { |
|
|
|
#define STR_IN_TEST_CASE(input_literal, ...) \ |
|
{ \ |
|
(const unsigned char*) input_literal, sizeof(input_literal) - 1, \ |
|
__VA_ARGS__ \ |
|
} |
|
|
|
#define STR_IN_OUT_CASE(input_literal, expected_literal, ...) \ |
|
{ \ |
|
(const unsigned char*) input_literal, sizeof(input_literal) - 1, \ |
|
(const unsigned char*)expected_literal, sizeof(expected_literal) - 1, \ |
|
__VA_ARGS__ \ |
|
} |
|
|
|
struct StrFuncTestData { |
|
const unsigned char* input; |
|
unsigned int input_size; |
|
const unsigned char* expected; |
|
unsigned int expected_size; |
|
}; |
|
|
|
struct DecodeTestData { |
|
const unsigned char* input; |
|
unsigned int input_size; |
|
const unsigned char* expected; |
|
unsigned int expected_size; |
|
// The size of input string being processed. |
|
unsigned int processed_size; |
|
}; |
|
|
|
struct NullTermWstrFuncTestData { |
|
const wchar_t* input; |
|
const wchar_t* expected; |
|
}; |
|
|
|
// Used with std::unique_ptr to free() objects that can't be deleted. |
|
struct FreeDeleter { |
|
inline void operator()(void* ptr) const { free(ptr); } |
|
}; |
|
|
|
} // namespace pdfium |
|
|
|
// Reads the entire contents of a file into a newly alloc'd buffer. |
|
std::unique_ptr<char, pdfium::FreeDeleter> GetFileContents(const char* filename, |
|
size_t* retlen); |
|
|
|
std::vector<std::string> StringSplit(const std::string& str, char delimiter); |
|
|
|
// Converts a FPDF_WIDESTRING to a std::wstring. |
|
// Deals with differences between UTF16LE and wchar_t. |
|
std::wstring GetPlatformWString(const FPDF_WIDESTRING wstr); |
|
|
|
// Returns a newly allocated FPDF_WIDESTRING. |
|
// Deals with differences between UTF16LE and wchar_t. |
|
std::unique_ptr<unsigned short, pdfium::FreeDeleter> GetFPDFWideString( |
|
const std::wstring& wstr); |
|
|
|
#ifdef PDF_ENABLE_V8 |
|
#ifdef V8_USE_EXTERNAL_STARTUP_DATA |
|
bool InitializeV8ForPDFium(const std::string& exe_path, |
|
const std::string& bin_dir, |
|
v8::StartupData* natives_blob, |
|
v8::StartupData* snapshot_blob, |
|
v8::Platform** platform); |
|
#else // V8_USE_EXTERNAL_STARTUP_DATA |
|
bool InitializeV8ForPDFium(const std::string& exe_path, |
|
v8::Platform** platform); |
|
#endif // V8_USE_EXTERNAL_STARTUP_DATA |
|
#endif // PDF_ENABLE_V8 |
|
|
|
class TestLoader { |
|
public: |
|
TestLoader(const char* pBuf, size_t len); |
|
static int GetBlock(void* param, |
|
unsigned long pos, |
|
unsigned char* pBuf, |
|
unsigned long size); |
|
|
|
private: |
|
const char* const m_pBuf; |
|
const size_t m_Len; |
|
}; |
|
|
|
class TestSaver : public FPDF_FILEWRITE { |
|
public: |
|
TestSaver(); |
|
|
|
void ClearString(); |
|
const std::string& GetString() const { return m_String; } |
|
|
|
private: |
|
static int WriteBlockCallback(FPDF_FILEWRITE* pFileWrite, |
|
const void* data, |
|
unsigned long size); |
|
|
|
std::string m_String; |
|
}; |
|
|
|
#endif // TESTING_TEST_SUPPORT_H_
|
|
|