summaryrefslogtreecommitdiff
path: root/test/test_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_utils.cc')
-rw-r--r--test/test_utils.cc89
1 files changed, 89 insertions, 0 deletions
diff --git a/test/test_utils.cc b/test/test_utils.cc
new file mode 100644
index 0000000..4751b92
--- /dev/null
+++ b/test/test_utils.cc
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+#include "test/test_utils.h"
+
+#include <stdio.h>
+#include <unicode/ucnv.h>
+#include <unicode/uchar.h>
+
+#include "gtest/gtest.h"
+#include "sfntly/font.h"
+#include "sfntly/data/memory_byte_array.h"
+#include "sfntly/data/growable_memory_byte_array.h"
+#include "sfntly/port/file_input_stream.h"
+
+namespace sfntly {
+TestUtils::TestUtils() {}
+
+// static
+// OutputStream CreateOutputStream(const char *file_path) {
+// }
+
+// static
+// void TestUtils::CreateNewFile(const char* file_path) {
+// }
+
+// static
+int32_t TestUtils::EncodeOneChar(UConverter* encoder, int16_t uchar) {
+ char* target = new char[ucnv_getMaxCharSize(encoder) * 2];
+ char* target_end;
+ UChar* source = new UChar[2];
+ UChar* source_end;
+ source[0] = (UChar)uchar;
+ source[1] = 0;
+ UErrorCode status = U_ZERO_ERROR;
+ source_end = source;
+ target_end = target;
+ ucnv_fromUnicode(encoder, &target_end, target + 4,
+ (const UChar**)&source_end, source + sizeof(UChar),
+ NULL, TRUE, &status);
+ if (!U_SUCCESS(status)) {
+ fprintf(stderr, "Error occured in conversion of %d: %s\n",
+ uchar, u_errorName(status));
+ delete[] source;
+ delete[] target;
+ return 0;
+ }
+ int32_t enc_char = 0;
+ for (int32_t position = 0; position < target_end - target; ++position) {
+ enc_char <<= 8;
+ enc_char |= (target[position] & 0xff);
+ }
+ delete[] source;
+ delete[] target;
+ return enc_char;
+}
+
+// static
+UConverter* TestUtils::GetEncoder(const char* charset_name) {
+ if (charset_name == NULL || strcmp(charset_name, "") == 0)
+ return NULL;
+ UErrorCode status = U_ZERO_ERROR;
+ UConverter* conv = ucnv_open(charset_name, &status);
+ // if (!U_SUCCESS(status))
+ // return NULL;
+ return conv; // returns NULL @ error anyway
+}
+
+// Get a file's extension
+// static
+const char* TestUtils::Extension(const char* file_path) {
+ if (!file_path)
+ return NULL;
+ return strrchr(file_path, EXTENSION_SEPARATOR);
+}
+}