summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSeigo Nonaka <nona@google.com>2016-04-19 18:38:59 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-04-19 18:38:59 +0000
commit3bee494eead989500c38d98f7f863986e95e25e0 (patch)
treeb6ddec308ee5b78a70ce99b77af907d9f983e92a /tests
parent994aa84f7b18466806fe552ea57da1852b909f24 (diff)
parent77f488345316fba46c271fc04bea470819ae1712 (diff)
downloadandroid_frameworks_minikin-3bee494eead989500c38d98f7f863986e95e25e0.tar.gz
android_frameworks_minikin-3bee494eead989500c38d98f7f863986e95e25e0.tar.bz2
android_frameworks_minikin-3bee494eead989500c38d98f7f863986e95e25e0.zip
Do not break before and after ZWJ.
am: 77f4883 * commit '77f488345316fba46c271fc04bea470819ae1712': Do not break before and after ZWJ. Change-Id: I00a0e31c19dd5b2fbe2ffb389bec4001dec5d6c1
Diffstat (limited to 'tests')
-rw-r--r--tests/Android.mk1
-rw-r--r--tests/GraphemeBreakTests.cpp4
-rw-r--r--tests/MinikinInternalTest.cpp34
-rw-r--r--tests/WordBreakerTests.cpp7
4 files changed, 45 insertions, 1 deletions
diff --git a/tests/Android.mk b/tests/Android.mk
index e6586d7..b33631e 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -77,6 +77,7 @@ LOCAL_SRC_FILES += \
FontTestUtils.cpp \
HbFontCacheTest.cpp \
MinikinFontForTest.cpp \
+ MinikinInternalTest.cpp \
GraphemeBreakTests.cpp \
LayoutUtilsTest.cpp \
UnicodeUtils.cpp \
diff --git a/tests/GraphemeBreakTests.cpp b/tests/GraphemeBreakTests.cpp
index 3bfa5ec..cec5308 100644
--- a/tests/GraphemeBreakTests.cpp
+++ b/tests/GraphemeBreakTests.cpp
@@ -148,6 +148,10 @@ TEST(GraphemeBreak, tailoring) {
EXPECT_FALSE(IsBreak("U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D | U+1F466"));
EXPECT_FALSE(IsBreak("U+1F441 U+200D | U+1F5E8"));
+ // Do not break before and after zwj with all kind of emoji characters.
+ EXPECT_FALSE(IsBreak("U+1F431 | U+200D U+1F464"));
+ EXPECT_FALSE(IsBreak("U+1F431 U+200D | U+1F464"));
+
// ARABIC LETTER BEH + ZWJ + heart, not a zwj emoji sequence, so we preserve the break
EXPECT_TRUE(IsBreak("U+0628 U+200D | U+2764"));
}
diff --git a/tests/MinikinInternalTest.cpp b/tests/MinikinInternalTest.cpp
new file mode 100644
index 0000000..9c1a1e5
--- /dev/null
+++ b/tests/MinikinInternalTest.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2016 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 <gtest/gtest.h>
+
+#include "MinikinInternal.h"
+
+namespace android {
+
+TEST(MinikinInternalTest, isEmojiTest) {
+ EXPECT_TRUE(isEmoji(0x0023)); // NUMBER SIGN
+ EXPECT_TRUE(isEmoji(0x0035)); // DIGIT FIVE
+ EXPECT_TRUE(isEmoji(0x1F0CF)); // PLAYING CARD BLACK JOKER
+ EXPECT_TRUE(isEmoji(0x1F1E9)); // REGIONAL INDICATOR SYMBOL LETTER D
+
+ EXPECT_FALSE(isEmoji(0x0000)); // <control>
+ EXPECT_FALSE(isEmoji(0x0061)); // LATIN SMALL LETTER A
+ EXPECT_FALSE(isEmoji(0x29E3D)); // A han character.
+}
+
+} // namespace android
diff --git a/tests/WordBreakerTests.cpp b/tests/WordBreakerTests.cpp
index 480c57d..9fa9da3 100644
--- a/tests/WordBreakerTests.cpp
+++ b/tests/WordBreakerTests.cpp
@@ -93,6 +93,8 @@ TEST_F(WordBreakerTest, zwjEmojiSequences) {
UTF16(0x1F469), 0x200D, 0x2764, 0x200D, UTF16(0x1F48B), 0x200D, UTF16(0x1F469),
// eye + zwj + left speech bubble
UTF16(0x1F441), 0x200D, UTF16(0x1F5E8),
+ // CAT FACE + zwj + BUST IN SILHOUETTE
+ UTF16(0x1F431), 0x200D, UTF16(0x1F464),
};
WordBreaker breaker;
breaker.setLocale(icu::Locale::getEnglish());
@@ -104,9 +106,12 @@ TEST_F(WordBreakerTest, zwjEmojiSequences) {
EXPECT_EQ(17, breaker.next()); // after woman + zwj + heart + zwj + woman
EXPECT_EQ(7, breaker.wordStart());
EXPECT_EQ(17, breaker.wordEnd());
- EXPECT_EQ((ssize_t)NELEM(buf), breaker.next()); // end
+ EXPECT_EQ(22, breaker.next()); // after eye + zwj + left speech bubble
EXPECT_EQ(17, breaker.wordStart());
EXPECT_EQ(22, breaker.wordEnd());
+ EXPECT_EQ((ssize_t)NELEM(buf), breaker.next()); // end
+ EXPECT_EQ(22, breaker.wordStart());
+ EXPECT_EQ(27, breaker.wordEnd());
}
TEST_F(WordBreakerTest, emojiWithModifier) {