package com.vdurmont.emoji; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @RunWith(JUnit4.class) public class EmojiManagerTest { @Test public void getForTag_with_unknown_tag_returns_null() throws IOException { // GIVEN // WHEN Set<Emoji> emojis = EmojiManager.getForTag("jkahsgdfjksghfjkshf"); // THEN assertNull(emojis); } @Test public void getForTag_returns_the_emojis_for_the_tag() throws IOException { // GIVEN // WHEN Set<Emoji> emojis = EmojiManager.getForTag("happy"); // THEN assertEquals(4, emojis.size()); assertTrue(TestTools.containsEmojis( emojis, "smile", "smiley", "grinning", "satisfied" )); } @Test public void getForAlias_with_unknown_alias_returns_null() throws IOException { // GIVEN // WHEN Emoji emoji = EmojiManager.getForAlias("jkahsgdfjksghfjkshf"); // THEN assertNull(emoji); } @Test public void getForAlias_returns_the_emoji_for_the_alias() throws IOException { // GIVEN // WHEN Emoji emoji = EmojiManager.getForAlias("smile"); // THEN assertEquals( "smiling face with open mouth and smiling eyes", emoji.getDescription() ); } @Test public void getForAlias_with_colons_returns_the_emoji_for_the_alias() throws IOException { // GIVEN // WHEN Emoji emoji = EmojiManager.getForAlias(":smile:"); // THEN assertEquals( "smiling face with open mouth and smiling eyes", emoji.getDescription() ); } @Test public void isEmoji_for_an_emoji_returns_true() { // GIVEN String emoji = "😀"; // WHEN boolean isEmoji = EmojiManager.isEmoji(emoji); // THEN assertTrue(isEmoji); } @Test public void isEmoji_for_a_non_emoji_returns_false() { // GIVEN String str = "test"; // WHEN boolean isEmoji = EmojiManager.isEmoji(str); // THEN assertFalse(isEmoji); } @Test public void isEmoji_for_an_emoji_and_other_chars_returns_false() { // GIVEN String str = "😀 test"; // WHEN boolean isEmoji = EmojiManager.isEmoji(str); // THEN assertFalse(isEmoji); } @Test public void isOnlyEmojis_for_an_emoji_returns_true() { // GIVEN String str = "😀"; // WHEN boolean isEmoji = EmojiManager.isOnlyEmojis(str); // THEN assertTrue(isEmoji); } @Test public void isOnlyEmojis_for_emojis_returns_true() { // GIVEN String str = "😀😀😀"; // WHEN boolean isEmoji = EmojiManager.isOnlyEmojis(str); // THEN assertTrue(isEmoji); } @Test public void isOnlyEmojis_for_random_string_returns_false() { // GIVEN String str = "😀a"; // WHEN boolean isEmoji = EmojiManager.isOnlyEmojis(str); // THEN assertFalse(isEmoji); } @Test public void getAllTags_returns_the_tags() { // GIVEN // WHEN Collection<String> tags = EmojiManager.getAllTags(); // THEN // We know the number of distinct tags int the...! assertEquals(594, tags.size()); } @Test public void getAll_doesnt_return_duplicates() { // GIVEN // WHEN Collection<Emoji> emojis = EmojiManager.getAll(); // THEN Set<String> unicodes = new HashSet<String>(); for (Emoji emoji : emojis) { assertFalse( "Duplicate: " + emoji.getDescription(), unicodes.contains(emoji.getUnicode()) ); unicodes.add(emoji.getUnicode()); } assertEquals(unicodes.size(), emojis.size()); } @Test public void no_duplicate_alias() { // GIVEN // WHEN Collection<Emoji> emojis = EmojiManager.getAll(); // THEN Set<String> aliases = new HashSet<String>(); Set<String> duplicates = new HashSet<String>(); for (Emoji emoji : emojis) { for (String alias : emoji.getAliases()) { if (aliases.contains(alias)) { duplicates.add(alias); } aliases.add(alias); } } assertEquals("Duplicates: " + duplicates, duplicates.size(), 0); } }