177f488345316fba46c271fc04bea470819ae1712Seigo Nonaka/* 277f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * Copyright (C) 2016 The Android Open Source Project 377f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * 477f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * Licensed under the Apache License, Version 2.0 (the "License"); 577f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * you may not use this file except in compliance with the License. 677f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * You may obtain a copy of the License at 777f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * 877f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * http://www.apache.org/licenses/LICENSE-2.0 977f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * 1077f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * Unless required by applicable law or agreed to in writing, software 1177f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * distributed under the License is distributed on an "AS IS" BASIS, 1277f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1377f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * See the License for the specific language governing permissions and 1477f488345316fba46c271fc04bea470819ae1712Seigo Nonaka * limitations under the License. 1577f488345316fba46c271fc04bea470819ae1712Seigo Nonaka */ 1677f488345316fba46c271fc04bea470819ae1712Seigo Nonaka 1777f488345316fba46c271fc04bea470819ae1712Seigo Nonaka#include <gtest/gtest.h> 1877f488345316fba46c271fc04bea470819ae1712Seigo Nonaka 19754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader#include <unicode/uchar.h> 20754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader 21bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader#include <minikin/Emoji.h> 2277f488345316fba46c271fc04bea470819ae1712Seigo Nonaka 2314e2d136aaef271ba131f917cf5f27baa31ae5adSeigo Nonakanamespace minikin { 2477f488345316fba46c271fc04bea470819ae1712Seigo Nonaka 25bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh PournaderTEST(EmojiTest, isEmojiTest) { 2677f488345316fba46c271fc04bea470819ae1712Seigo Nonaka EXPECT_TRUE(isEmoji(0x0023)); // NUMBER SIGN 2777f488345316fba46c271fc04bea470819ae1712Seigo Nonaka EXPECT_TRUE(isEmoji(0x0035)); // DIGIT FIVE 28754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmoji(0x2640)); // FEMALE SIGN 29754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmoji(0x2642)); // MALE SIGN 30754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmoji(0x2695)); // STAFF OF AESCULAPIUS 3177f488345316fba46c271fc04bea470819ae1712Seigo Nonaka EXPECT_TRUE(isEmoji(0x1F0CF)); // PLAYING CARD BLACK JOKER 3277f488345316fba46c271fc04bea470819ae1712Seigo Nonaka EXPECT_TRUE(isEmoji(0x1F1E9)); // REGIONAL INDICATOR SYMBOL LETTER D 33754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmoji(0x1F6F7)); // SLED 34754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmoji(0x1F9E6)); // SOCKS 3577f488345316fba46c271fc04bea470819ae1712Seigo Nonaka 3677f488345316fba46c271fc04bea470819ae1712Seigo Nonaka EXPECT_FALSE(isEmoji(0x0000)); // <control> 3777f488345316fba46c271fc04bea470819ae1712Seigo Nonaka EXPECT_FALSE(isEmoji(0x0061)); // LATIN SMALL LETTER A 38754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmoji(0x1F93B)); // MODERN PENTATHLON 39754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmoji(0x1F946)); // RIFLE 4077f488345316fba46c271fc04bea470819ae1712Seigo Nonaka EXPECT_FALSE(isEmoji(0x29E3D)); // A han character. 4177f488345316fba46c271fc04bea470819ae1712Seigo Nonaka} 4277f488345316fba46c271fc04bea470819ae1712Seigo Nonaka 43bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh PournaderTEST(EmojiTest, isEmojiModifierTest) { 44754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiModifier(0x1F3FB)); // EMOJI MODIFIER FITZPATRICK TYPE-1-2 45754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiModifier(0x1F3FC)); // EMOJI MODIFIER FITZPATRICK TYPE-3 46754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiModifier(0x1F3FD)); // EMOJI MODIFIER FITZPATRICK TYPE-4 47754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiModifier(0x1F3FE)); // EMOJI MODIFIER FITZPATRICK TYPE-5 48754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiModifier(0x1F3FF)); // EMOJI MODIFIER FITZPATRICK TYPE-6 49754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader 50754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiModifier(0x0000)); // <control> 51754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiModifier(0x1F3FA)); // AMPHORA 52754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiModifier(0x1F400)); // RAT 53754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiModifier(0x29E3D)); // A han character. 54754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader} 55754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader 56bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh PournaderTEST(EmojiTest, isEmojiBaseTest) { 57754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x261D)); // WHITE UP POINTING INDEX 58754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x270D)); // WRITING HAND 59754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F385)); // FATHER CHRISTMAS 60754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F3C2)); // SNOWBOARDER 61754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F3C7)); // HORSE RACING 62754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F3CC)); // GOLFER 63754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F574)); // MAN IN BUSINESS SUIT LEVITATING 64754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F6CC)); // SLEEPING ACCOMMODATION 65754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F91D)); // HANDSHAKE (removed from Emoji 4.0, but we need it) 66754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F91F)); // I LOVE YOU HAND SIGN 67754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F931)); // BREAST-FEEDING 68754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F932)); // PALMS UP TOGETHER 69754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F93C)); // WRESTLERS (removed from Emoji 4.0, but we need it) 70754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F9D1)); // ADULT 71754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_TRUE(isEmojiBase(0x1F9DD)); // ELF 72754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader 73754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiBase(0x0000)); // <control> 74754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiBase(0x261C)); // WHITE LEFT POINTING INDEX 75754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiBase(0x1F384)); // CHRISTMAS TREE 76754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiBase(0x1F9DE)); // GENIE 77754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader EXPECT_FALSE(isEmojiBase(0x29E3D)); // A han character. 78754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader} 79754913bd274b32ad66c1dfcf3bd592bb6c8c01bdRoozbeh Pournader 80bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh PournaderTEST(EmojiTest, emojiBidiOverrideTest) { 81bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader EXPECT_EQ(U_RIGHT_TO_LEFT, emojiBidiOverride(nullptr, 0x05D0)); // HEBREW LETTER ALEF 82bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader EXPECT_EQ(U_LEFT_TO_RIGHT, 83bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader emojiBidiOverride(nullptr, 0x1F170)); // NEGATIVE SQUARED LATIN CAPITAL LETTER A 84bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader EXPECT_EQ(U_OTHER_NEUTRAL, emojiBidiOverride(nullptr, 0x1F6F7)); // SLED 85bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader EXPECT_EQ(U_OTHER_NEUTRAL, emojiBidiOverride(nullptr, 0x1F9E6)); // SOCKS 86bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader} 87bab3b98ceb29fa3fc5d8832284312859d7f32cc7Roozbeh Pournader 8814e2d136aaef271ba131f917cf5f27baa31ae5adSeigo Nonaka} // namespace minikin 89