package humanize.emoji; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.fail; import humanize.emoji.EmojiChar.Vendor; import java.util.Collection; import org.testng.annotations.Test; public class TestEmoji { private static final String SIMPLE_CP = "\u2639"; private static final String UTF16_COMPOUND_CP = "\uD83C\uDDEF\uD83C\uDDF5"; private static final String COMPOUND_CP = "\u0037\u20E3"; private static final String UTF16_CP = "\uD83D\uDD36"; @Test public void testByAnnotations() { Collection<EmojiChar> faces = Emoji.findByAnnotations("face"); assertNotNull(faces, "Faces"); assertEquals(faces.size(), 139, "Faces"); Collection<EmojiChar> smilingFaces = Emoji.findByAnnotations("face smile"); assertNotNull(smilingFaces, "Smiling faces"); assertEquals(smilingFaces.size(), 19, "Smiling faces"); EmojiChar catFace = Emoji.singleByAnnotations("cat smile"); assertEquals(catFace.getName(), "smiling cat face with open mouth"); EmojiChar flag = Emoji.singleByAnnotations("japan flag"); assertEquals(flag.getName(), "flag for Japan"); } @Test public void testByCodePoint() { EmojiChar simple = Emoji.findByCodePoint(SIMPLE_CP); assertNotNull(simple, "Simple face was not found"); EmojiChar supplementary = Emoji.findByCodePoint(UTF16_CP); assertNotNull(supplementary, "Orange diamond was not found"); EmojiChar compound = Emoji.findByCodePoint(COMPOUND_CP); assertNotNull(compound, "7 keyboard was not found"); EmojiChar japanFlag = Emoji.findByCodePoint(UTF16_COMPOUND_CP); assertNotNull(japanFlag, "Japan flag was not found"); } @Test public void testCodePointToRaw() { assertEquals(Emoji.codePointToString("2639"), SIMPLE_CP, "Simple face"); assertEquals(Emoji.codePointToString("1F536"), UTF16_CP, "Orange diamond"); assertEquals(Emoji.codePointsToString("0037", "20E3"), COMPOUND_CP, "7 keyboard"); assertEquals(Emoji.codePointsToString("1F1EF", "1F1F5"), UTF16_COMPOUND_CP, "Japan flag"); assertEquals(Emoji.codePointToString(""), "", "Empty"); assertNull(Emoji.codePointToString(null)); try { Emoji.codePointToString("whatever"); fail("Bad data"); } catch (NumberFormatException ex) { // } } @Test public void testVendorCodePoint() { String tradeMark = "™"; EmojiChar echar = Emoji.findByVendorCodePoint(Vendor.DOCOMO, "\uF9D7"); assertEquals(echar.getRaw(), tradeMark, "DoCoMo"); echar = Emoji.findByVendorCodePoint(Vendor.SOFT_BANK, "\uFBD7"); assertEquals(echar.getRaw(), tradeMark, "Soft Bank"); echar = Emoji.findByVendorCodePoint(Vendor.SOFT_BANK, "\uAAAB"); assertNull(echar, "Not found"); } @Test public void testRawCode() { EmojiChar simple = Emoji.singleByAnnotations("face frowning human"); assertEquals(simple.getRaw(), SIMPLE_CP, "Simple face code point"); EmojiChar supplementary = Emoji.findByCodePoint(UTF16_CP); assertEquals(supplementary.getRaw(), UTF16_CP, "Orange diamond code point"); EmojiChar compound = Emoji.findByCodePoint(COMPOUND_CP); assertEquals(compound.getRaw(), COMPOUND_CP, "7 keyboard code point"); } }