xref: /aosp_15_r20/frameworks/minikin/tests/unittest/EmojiTest.cpp (revision 834a2baab5fdfc28e9a428ee87c7ea8f6a06a53d)
1*834a2baaSAndroid Build Coastguard Worker /*
2*834a2baaSAndroid Build Coastguard Worker  * Copyright (C) 2016 The Android Open Source Project
3*834a2baaSAndroid Build Coastguard Worker  *
4*834a2baaSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*834a2baaSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*834a2baaSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*834a2baaSAndroid Build Coastguard Worker  *
8*834a2baaSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*834a2baaSAndroid Build Coastguard Worker  *
10*834a2baaSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*834a2baaSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*834a2baaSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*834a2baaSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*834a2baaSAndroid Build Coastguard Worker  * limitations under the License.
15*834a2baaSAndroid Build Coastguard Worker  */
16*834a2baaSAndroid Build Coastguard Worker 
17*834a2baaSAndroid Build Coastguard Worker #include "minikin/Emoji.h"
18*834a2baaSAndroid Build Coastguard Worker 
19*834a2baaSAndroid Build Coastguard Worker #include <gtest/gtest.h>
20*834a2baaSAndroid Build Coastguard Worker #include <unicode/uchar.h>
21*834a2baaSAndroid Build Coastguard Worker 
22*834a2baaSAndroid Build Coastguard Worker namespace minikin {
23*834a2baaSAndroid Build Coastguard Worker 
TEST(EmojiTest,isEmojiTest)24*834a2baaSAndroid Build Coastguard Worker TEST(EmojiTest, isEmojiTest) {
25*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x0023));   // NUMBER SIGN
26*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x0035));   // DIGIT FIVE
27*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x2640));   // FEMALE SIGN
28*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x2642));   // MALE SIGN
29*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x2695));   // STAFF OF AESCULAPIUS
30*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F0CF));  // PLAYING CARD BLACK JOKER
31*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F1E9));  // REGIONAL INDICATOR SYMBOL LETTER D
32*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F6F7));  // SLED
33*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9E6));  // SOCKS
34*834a2baaSAndroid Build Coastguard Worker 
35*834a2baaSAndroid Build Coastguard Worker     // Unicode 12.0
36*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F6D5));  // HINDU TEMPLE
37*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F7E7));  // ORANGE SQUARE
38*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9CF));  // DEAF PERSON
39*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9CE));  // PERSON KNEELING
40*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9A6));  // OTTER
41*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9A9));  // FLAMINGO
42*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9C6));  // FALAFEL
43*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9AA));  // OYSTER
44*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1FA82));  // PARACHUTE
45*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1FA80));  // YO-YO
46*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1FA70));  // BALLET SHOES
47*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1FA79));  // ADHESIVE BANDAGE
48*834a2baaSAndroid Build Coastguard Worker 
49*834a2baaSAndroid Build Coastguard Worker     // Unicode 13.0
50*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F6D6));  // HUT
51*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F977));  // NINJA
52*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1F9A3));  // MAMMOTH
53*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1FA74));  // THONG SANDAL
54*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1FAC2));  // PEOPLE HUGGING
55*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmoji(0x1FAD6));  // TEAPOT
56*834a2baaSAndroid Build Coastguard Worker 
57*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmoji(0x0000));   // <control>
58*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmoji(0x0061));   // LATIN SMALL LETTER A
59*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmoji(0x1F93B));  // MODERN PENTATHLON
60*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmoji(0x1F946));  // RIFLE
61*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmoji(0x29E3D));  // A han character.
62*834a2baaSAndroid Build Coastguard Worker }
63*834a2baaSAndroid Build Coastguard Worker 
TEST(EmojiTest,isEmojiModifierTest)64*834a2baaSAndroid Build Coastguard Worker TEST(EmojiTest, isEmojiModifierTest) {
65*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiModifier(0x1F3FB));  // EMOJI MODIFIER FITZPATRICK TYPE-1-2
66*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiModifier(0x1F3FC));  // EMOJI MODIFIER FITZPATRICK TYPE-3
67*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiModifier(0x1F3FD));  // EMOJI MODIFIER FITZPATRICK TYPE-4
68*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiModifier(0x1F3FE));  // EMOJI MODIFIER FITZPATRICK TYPE-5
69*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiModifier(0x1F3FF));  // EMOJI MODIFIER FITZPATRICK TYPE-6
70*834a2baaSAndroid Build Coastguard Worker 
71*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiModifier(0x0000));   // <control>
72*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiModifier(0x1F3FA));  // AMPHORA
73*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiModifier(0x1F400));  // RAT
74*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiModifier(0x29E3D));  // A han character.
75*834a2baaSAndroid Build Coastguard Worker }
76*834a2baaSAndroid Build Coastguard Worker 
TEST(EmojiTest,isEmojiBaseTest)77*834a2baaSAndroid Build Coastguard Worker TEST(EmojiTest, isEmojiBaseTest) {
78*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x261D));   // WHITE UP POINTING INDEX
79*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x270D));   // WRITING HAND
80*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F385));  // FATHER CHRISTMAS
81*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F3C2));  // SNOWBOARDER
82*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F3C7));  // HORSE RACING
83*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F3CC));  // GOLFER
84*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F574));  // MAN IN BUSINESS SUIT LEVITATING
85*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F6CC));  // SLEEPING ACCOMMODATION
86*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F91D));  // HANDSHAKE (removed from Emoji 4.0, but we need it)
87*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F91F));  // I LOVE YOU HAND SIGN
88*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F931));  // BREAST-FEEDING
89*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F932));  // PALMS UP TOGETHER
90*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F93C));  // WRESTLERS (removed from Emoji 4.0, but we need it)
91*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9D1));  // ADULT
92*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9DD));  // ELF
93*834a2baaSAndroid Build Coastguard Worker 
94*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9B5));  // LEG
95*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9B6));  // FOOT
96*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9B8));  // SUPERHERO
97*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9B9));  // SUPERVILLAIN
98*834a2baaSAndroid Build Coastguard Worker 
99*834a2baaSAndroid Build Coastguard Worker     // Unicode 12
100*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F90F));  // PINCHING HAND
101*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9BB));  // EAR WITH HEARING AID
102*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9CD));  // PERSON STANDING
103*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F9CF));  // DEAF PERSON
104*834a2baaSAndroid Build Coastguard Worker 
105*834a2baaSAndroid Build Coastguard Worker     // Unicode 13
106*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F90C));  // PINCHED FINGERS
107*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(isEmojiBase(0x1F977));  // NINJA
108*834a2baaSAndroid Build Coastguard Worker 
109*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiBase(0x0000));   // <control>
110*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiBase(0x261C));   // WHITE LEFT POINTING INDEX
111*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiBase(0x1F384));  // CHRISTMAS TREE
112*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiBase(0x1F9DE));  // GENIE
113*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(isEmojiBase(0x29E3D));  // A han character.
114*834a2baaSAndroid Build Coastguard Worker }
115*834a2baaSAndroid Build Coastguard Worker 
TEST(EmojiTest,emojiBidiOverrideTest)116*834a2baaSAndroid Build Coastguard Worker TEST(EmojiTest, emojiBidiOverrideTest) {
117*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(U_RIGHT_TO_LEFT, emojiBidiOverride(nullptr, 0x05D0));  // HEBREW LETTER ALEF
118*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(U_LEFT_TO_RIGHT,
119*834a2baaSAndroid Build Coastguard Worker               emojiBidiOverride(nullptr, 0x1F170));  // NEGATIVE SQUARED LATIN CAPITAL LETTER A
120*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(U_OTHER_NEUTRAL, emojiBidiOverride(nullptr, 0x1F6F7));  // SLED
121*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(U_OTHER_NEUTRAL, emojiBidiOverride(nullptr, 0x1F9E6));  // SOCKS
122*834a2baaSAndroid Build Coastguard Worker }
123*834a2baaSAndroid Build Coastguard Worker 
124*834a2baaSAndroid Build Coastguard Worker }  // namespace minikin
125