summaryrefslogtreecommitdiff
path: root/android/PhoneticStringUtilsTest.cpp
diff options
context:
space:
mode:
authorJay Shrauner <shrauner@google.com>2012-12-17 11:12:30 -0800
committerJay Shrauner <shrauner@google.com>2013-02-05 16:14:59 -0800
commitdb8a386d111b11463c877b3a14ab62aec761a3f5 (patch)
tree1a76447eebd49c0b3a5e605a64a1ec74ec942dee /android/PhoneticStringUtilsTest.cpp
parent7dbe9638c4c7cdb01a71528d8cb1f0065120d7b8 (diff)
Fix contacts index labels for i18n
Switch ContactsProvider to using ICU for generation of index labels, and remove custom KO and JA code. Add i18n test cases. Bug:7351596 Change-Id: I7ac25add8b29ff2c6c395f04a83b279b541e4125
Diffstat (limited to 'android/PhoneticStringUtilsTest.cpp')
-rw-r--r--android/PhoneticStringUtilsTest.cpp217
1 files changed, 0 insertions, 217 deletions
diff --git a/android/PhoneticStringUtilsTest.cpp b/android/PhoneticStringUtilsTest.cpp
deleted file mode 100644
index 9885823..0000000
--- a/android/PhoneticStringUtilsTest.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * 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 "PhoneticStringUtils.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <utils/String8.h>
-
-using namespace android;
-
-class TestExecutor {
- public:
- TestExecutor() : m_total_count(0), m_success_count(0), m_success(true) {}
- bool DoAllTests();
- private:
- void DoOneTest(void (TestExecutor::*test)());
-
- void testUtf32At();
- void testGetUtf8FromUtf32();
- void testGetNormalizedString();
- void testLongString();
-
- // Note: When adding a test, do not forget to add it to DoOneTest().
-
- int m_total_count;
- int m_success_count;
-
- bool m_success;
-};
-
-#define ASSERT_EQ_VALUE(input, expected) \
- ({ \
- if ((expected) != (input)) { \
- printf("0x%X(result) != 0x%X(expected)\n", input, expected); \
- m_success = false; \
- return; \
- } \
- })
-
-#define EXPECT_EQ_VALUE(input, expected) \
- ({ \
- if ((expected) != (input)) { \
- printf("0x%X(result) != 0x%X(expected)\n", input, expected); \
- m_success = false; \
- } \
- })
-
-
-bool TestExecutor::DoAllTests() {
- DoOneTest(&TestExecutor::testUtf32At);
- DoOneTest(&TestExecutor::testGetUtf8FromUtf32);
- DoOneTest(&TestExecutor::testGetNormalizedString);
- DoOneTest(&TestExecutor::testLongString);
-
- printf("Test total: %d\nSuccess: %d\nFailure: %d\n",
- m_total_count, m_success_count, m_total_count - m_success_count);
-
- bool success = m_total_count == m_success_count;
- printf("\n%s\n", success ? "Success" : "Failure");
-
- return success;
-}
-
-void TestExecutor::DoOneTest(void (TestExecutor::*test)()) {
- m_success = true;
-
- (this->*test)();
-
- ++m_total_count;
- m_success_count += m_success ? 1 : 0;
-}
-
-#define TEST_GET_UTF32AT(src, index, expected_next, expected_value) \
- ({ \
- size_t next; \
- int32_t ret = utf32_from_utf8_at(src, strlen(src), index, &next); \
- if (ret < 0) { \
- printf("getUtf32At() returned negative value (src: %s, index: %d)\n", \
- (src), (index)); \
- m_success = false; \
- } else if (next != (expected_next)) { \
- printf("next is unexpected value (src: %s, actual: %u, expected: %u)\n", \
- (src), next, (expected_next)); \
- } else { \
- EXPECT_EQ_VALUE(ret, (expected_value)); \
- } \
- })
-
-void TestExecutor::testUtf32At() {
- printf("testUtf32At()\n");
-
- TEST_GET_UTF32AT("a", 0, 1, 97);
- // Japanese hiragana "a"
- TEST_GET_UTF32AT("\xE3\x81\x82", 0, 3, 0x3042);
- // Japanese fullwidth katakana "a" with ascii a
- TEST_GET_UTF32AT("a\xE3\x82\xA2", 1, 4, 0x30A2);
-
- // 2 PUA
- TEST_GET_UTF32AT("\xF3\xBE\x80\x80\xF3\xBE\x80\x88", 0, 4, 0xFE000);
- TEST_GET_UTF32AT("\xF3\xBE\x80\x80\xF3\xBE\x80\x88", 4, 8, 0xFE008);
-}
-
-
-#define EXPECT_EQ_CODEPOINT_UTF8(codepoint, expected) \
- ({ \
- char32_t codepoints[1] = {codepoint}; \
- status_t ret = string8.setTo(codepoints, 1); \
- if (ret != NO_ERROR) { \
- printf("GetUtf8FromCodePoint() returned false at 0x%04X\n", codepoint); \
- m_success = false; \
- } else { \
- const char* string = string8.string(); \
- if (strcmp(string, expected) != 0) { \
- printf("Failed at codepoint 0x%04X\n", codepoint); \
- for (const char *ch = string; *ch != '\0'; ++ch) { \
- printf("0x%X ", *ch); \
- } \
- printf("!= "); \
- for (const char *ch = expected; *ch != '\0'; ++ch) { \
- printf("0x%X ", *ch); \
- } \
- printf("\n"); \
- m_success = false; \
- } \
- } \
- })
-
-void TestExecutor::testGetUtf8FromUtf32() {
- printf("testGetUtf8FromUtf32()\n");
- String8 string8;
-
- EXPECT_EQ_CODEPOINT_UTF8('a', "\x61");
- // Armenian capital letter AYB (2 bytes in UTF8)
- EXPECT_EQ_CODEPOINT_UTF8(0x0530, "\xD4\xB0");
- // Japanese 'a' (3 bytes in UTF8)
- EXPECT_EQ_CODEPOINT_UTF8(0x3042, "\xE3\x81\x82");
- // Kanji
- EXPECT_EQ_CODEPOINT_UTF8(0x65E5, "\xE6\x97\xA5");
- // PUA (4 byets in UTF8)
- EXPECT_EQ_CODEPOINT_UTF8(0xFE016, "\xF3\xBE\x80\x96");
- EXPECT_EQ_CODEPOINT_UTF8(0xFE972, "\xF3\xBE\xA5\xB2");
-}
-
-#define EXPECT_EQ_UTF8_UTF8(src, expected) \
- ({ \
- if (!GetNormalizedString(src, &dst, &len)) { \
- printf("GetNormalizedSortableString() returned false.\n"); \
- m_success = false; \
- } else { \
- if (strcmp(dst, expected) != 0) { \
- for (const char *ch = dst; *ch != '\0'; ++ch) { \
- printf("0x%X ", *ch); \
- } \
- printf("!= "); \
- for (const char *ch = expected; *ch != '\0'; ++ch) { \
- printf("0x%X ", *ch); \
- } \
- printf("\n"); \
- m_success = false; \
- } \
- free(dst); \
- } \
- })
-
-void TestExecutor::testGetNormalizedString() {
- printf("testGetNormalizedString()\n");
- char *dst;
- size_t len;
-
- // halfwidth alphabets/symbols -> keep it as is.
- EXPECT_EQ_UTF8_UTF8("ABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%^&'()",
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%^&'()");
- EXPECT_EQ_UTF8_UTF8("abcdefghijklmnopqrstuvwxyz[]{}\\@/",
- "abcdefghijklmnopqrstuvwxyz[]{}\\@/");
-
- // halfwidth/fullwidth-katakana -> hiragana
- EXPECT_EQ_UTF8_UTF8(
- "\xE3\x81\x82\xE3\x82\xA4\xE3\x81\x86\xEF\xBD\xB4\xE3\x82\xAA",
- "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86\xE3\x81\x88\xE3\x81\x8A");
-
- // whitespace -> keep it as is.
- EXPECT_EQ_UTF8_UTF8(" \t", " \t");
-}
-
-void TestExecutor::testLongString() {
- printf("testLongString()\n");
- char * dst;
- size_t len;
- EXPECT_EQ_UTF8_UTF8("Qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqtttttttttttttttttttttttttttttttttttttttttttttttttgggggggggggggggggggggggggggggggggggggggbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
- "Qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqtttttttttttttttttttttttttttttttttttttttttttttttttggggggggggggggggggggggggggggggggggg");
-}
-
-
-int main() {
- TestExecutor executor;
- if(executor.DoAllTests()) {
- return 0;
- } else {
- return 1;
- }
-}