| /* |
| * 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_ |