/*
* Copyright 2011 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SFNTLY_CPP_SRC_TEST_TEST_UTILS_H_
#define SFNTLY_CPP_SRC_TEST_TEST_UTILS_H_
// Must include this before ICU to avoid stdint redefinition issue.
#include "sfntly/port/type.h"
#include <unicode/ucnv.h>
#include <string>
#include "sfntly/font.h"
#include "sfntly/data/memory_byte_array.h"
namespace sfntly {
class TestUtils {
TestUtils();
public:
// Compare sections of two byte arrays for equality
// @param b1 byte array 1
// @param offset1 offset for comparison in byte array 1
// @param b2 byte array 2
// @param offset2 offset for comparison in byte array 2
// @param length the length of the byte arrays to compare
// @return true if the array segments are equal; false otherwise
// TODO(dfilimon): implement
static bool Equals(ByteArray* b1,
int32_t offset1,
ByteArray* b2,
int32_t offset2);
// @param offset1 offset to start comparing the first ByteArray from
// @param ba1 the first ByteArray
// @param offset2 offset to start comparing the second ByteArray from
// @param ba2 the second ByteArray
// @param length the number of bytes to compare
// @return true if all bytes in the ranges given are equal; false otherwise
// TODO(dfilimon): implement
static bool Equals(ByteArray* b1,
int32_t offset1,
ByteArray* b2,
int32_t offset2,
int32_t length);
// TODO(dfilimon): implement FileOutputStream in port/file_output_stream.*
// static OutputStream createOutputStream(const char* file_path);
// TODO(dfilimon): adapt & implement
// static FileChannel createFilechannelForWriting(File file);
// Creates a new file including deleting an already existing file with the
// same path and name and creating any needed directories.
// TODO(dfilimon): implement
static void CreateNewFile(const char* file_path);
// Converts an integer into a 4 character string using the ASCII encoding.
// @param i the value to convert
// @return the String based on the number
// TODO(dfilimon): implement
static void DumpLongAsString(int32_t i, std::string* result);
// Calculate an OpenType checksum from the array.
// @param b the array to calculate checksum on
// @param offset the starting index in the array
// @param length the number of bytes to check; must be a multiple of 4
// @return checksum
// TODO(dfilimon): implement
static int64_t CheckSum(ByteArray* b, int32_t offset, int32_t length);
// Encode a single character in UTF-16.
// We only support the BMP for now
// @param encoder the encoder to use for the encoding
// @param uchar the Unicode character to encode
// @return the encoded character
static int32_t EncodeOneChar(UConverter* encoder, int16_t uchar);
// Get an encoder for the charset name.
// If the name is null or the empty string then just return null.
// @param charsetName the charset to get an encoder for
// @return an encoder or null if no encoder available for charset name
static UConverter* GetEncoder(const char* charsetName);
private:
static const char EXTENSION_SEPARATOR = '.';
public:
// Get the extension of a file's name.
// @param file the whose name to process
// @return string containing the extension or an empty string if
// there is no extension
static const char* Extension(const char* file_path);
};
}
#endif // SFNTLY_CPP_SRC_TEST_TEST_UTILS_H_