def test_candidates_white_space_and_underscores(self):
     # Any white space and '_' can be used to separate keywords in the
     # query string:
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('gatto_	 sorride')[0][:2],
         ('😺', 'gatto che sorride'))
     self.assertEqual(
         mq.candidates('nerd glasses')[0][:2],
         ('🤓', 'nerd face'))
     self.assertEqual(
         mq.candidates('smiling face sun glasses')[0][:2],
         ('😎', 'smiling face with sunglasses'))
 def test_candidates_some_letters(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('a')[0][:2],
         ('🅰\ufe0f', 'negative squared latin capital letter a'))
     self.assertEqual(
         mq.candidates('squared a')[0][:2],
         ('🅰\ufe0f', 'negative squared latin capital letter a'))
     self.assertEqual(
         mq.candidates('squared capital a')[0][:2],
         ('🅰\ufe0f', 'negative squared latin capital letter a'))
     self.assertEqual(
         mq.candidates('c')[0][:2],
         ('©️', 'copyright sign'))
 def test_candidates_skin_tones(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('man tone5')[0][:2],
         ('👨🏿', 'man: dark skin tone “man tone5”'))
     self.assertEqual(
         mq.candidates('skin tone')[0][:2],
         ('🏻', 'emoji modifier fitzpatrick type-1-2 “tone1” [skin tone]'))
     self.assertEqual(
         mq.candidates('tone1')[0][:2],
         ('🏻', 'emoji modifier fitzpatrick type-1-2 “tone1”'))
     self.assertEqual(
         mq.candidates('tone5')[0][:2],
         ('🏿', 'emoji modifier fitzpatrick type-6 “tone5”'))
 def test_candidates_animals(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('animal')[0][:2],
         ('🐵', 'cara de mono [animal]'))
     self.assertEqual(
         mq.candidates('dromedary animal')[0][:2],
         ('🐪', 'dromedary camel'))
     self.assertEqual(
         mq.candidates('camel')[0][:2],
         ('🐫', 'bactrian camel'))
     self.assertEqual(
         mq.candidates('nature')[0][:2],
         ('🙈', 'see-no-evil monkey {nature}'))
 def test_candidates_code_point_input(self) -> None:
     mq = itb_emoji.EmojiMatcher(
         languages = ['fr_FR'])
     self.assertEqual(
         mq.candidates('2019'),
         [('’', 'U+2019 apostrophe droite', 2000)])
     self.assertEqual(
         mq.candidates('41'),
         [('A', 'U+41 latin capital letter a', 2000)])
     self.assertEqual(
         mq.candidates('2a'),
         [('*', 'U+2A astérisque', 2000)])
     self.assertEqual(
         mq.candidates('1b'),
         [('\x1b', 'U+1B', 2000), ('🧔🏻\u200d♂️', 'man: light skin tone, beard', 44), ('🧔🏻\u200d♀️', 'woman: light skin tone, beard', 44), ('🧑🏻\u200d🦲', 'person: light skin tone, bald', 44)])
 def test_candidates_code_point_input(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['fr_FR'])
     self.assertEqual(
         mq.candidates('2019'),
         [('’', 'U+2019 right single quotation mark', 200)])
     self.assertEqual(
         mq.candidates('41'),
         [('A', 'U+41 latin capital letter a', 200)])
     self.assertEqual(
         mq.candidates('2a'),
         [('*', 'U+2A asterisk', 200)])
     self.assertEqual(
         mq.candidates('1b'),
         [('\x1b', 'U+1B', 200)])
 def test_candidates_symbols(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('symbol')[0][:2],
         ('🔣', 'input symbol for symbols {Symbol}'))
     self.assertEqual(
         mq.candidates('atomsymbol')[0][:2],
         ('⚛\ufe0f', 'atom symbol'))
     self.assertEqual(
         mq.candidates('peacesymbol')[0][:2],
         ('☮\ufe0f', 'peace symbol'))
     self.assertEqual(
         mq.candidates('peace symbol')[0][:2],
         ('☮\ufe0f', 'peace symbol {Symbol}'))
 def test_candidates_skin_tones(self) -> None:
     mq = itb_emoji.EmojiMatcher(
         languages = ['ja_JP'])#, 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('man tone5')[0][:2],
         ('👨🏿', 'man: dark skin tone “man tone5”'))
     self.assertEqual(
         mq.candidates('skin tone')[0][:2],
         ('🧑🏾\u200d🤝\u200d🧑🏼', 'people holding hands: medium-dark skin tone, medium-light skin tone “people holding hands medium dark skin tone medium light skin tone”'))
     self.assertEqual(
         mq.candidates('tone1')[0][:2],
         ('🏻', 'emoji modifier fitzpatrick type-1-2 “tone1”'))
     self.assertEqual(
         mq.candidates('tone5')[0][:2],
         ('🏿', 'emoji modifier fitzpatrick type-6 “tone5”'))
Пример #9
0
 def test_similar_white_smiling_face_en_US(self) -> None:
     mq = itb_emoji.EmojiMatcher(
         languages=['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(mq.similar(
         '☺', match_limit=5
     ), [(
         '☺️',
         'white smiling face [☺️, So, people, face, outlined, relaxed, smile, uc1, smiling face]',
         9),
         ('😙', 'kissing face with smiling eyes [So, people, face, smile]',
          4),
         ('😍',
          'smiling face with heart-shaped eyes [So, people, face, smile]',
          4),
         ('😋', 'face savouring delicious food [So, people, face, smile]',
          4), ('😇', 'smiling face with halo [So, people, face, smile]', 4)])
Пример #10
0
 def test_candidates_pykakasi_missing_ja_JP(self) -> None:
     mq = itb_emoji.EmojiMatcher(languages=['ja_JP'])
     self.assertEqual(mq.similar('🐤', match_limit=5),
                      [('🐤', 'ひよこ [🐤, ひな, ひよこ, 動物, 横を向いているひよこ, 顔, 鳥]', 7),
                       ('🐣', '卵からかえったひよこ [ひな, ひよこ, 動物, 顔, 鳥]', 5),
                       ('🐥', '前を向いているひよこ [ひな, ひよこ, 動物, 鳥]', 4),
                       ('🐦', '鳥 [動物, 顔, 鳥]', 3),
                       ('🐔', 'にわとり [動物, 顔, 鳥]', 3)])
     self.assertEqual(mq.similar('🐌', match_limit=5),
                      [('🐌', 'かたつむり [🐌, かたつむり, でんでん虫, 虫]', 4),
                       ('🦋', 'チョウ [虫]', 1), ('🐛', '毛虫 [虫]', 1),
                       ('🐜', 'アリ [虫]', 1), ('🐝', 'ミツバチ [虫]', 1)])
     self.assertEqual(mq.similar('😱', match_limit=5),
                      [('😱', '恐怖 [😱, がーん, ショック, 叫び, 恐怖, 顔]', 6),
                       ('🙀', '絶望する猫 [がーん, ショック, 顔]', 3),
                       ('😨', '青ざめ [がーん, 顔]', 2), ('🤯', '頭爆発 [ショック, 顔]', 2),
                       ('😭', '大泣き [顔]', 1)])
 def test_candidates_various_unicode_chars(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('euro sign')[0][:2],
         ('€', 'euro sign'))
     self.assertEqual(
         mq.candidates('superscript one')[0][:2],
         ('¹', 'superscript one'))
     self.assertEqual(
         mq.candidates('currency')[0][:2],
         ('₳', 'austral sign {Currency} [currency]'))
     self.assertEqual(
         mq.candidates('connector')[0][:2],
         ('﹎', 'centreline low line {Connector}'))
     self.assertEqual(
         mq.candidates('dash')[0][:2],
         ('💨', 'dash symbol'))
     self.assertEqual(
         mq.candidates('close')[0][:2],
         ('〉', 'right angle bracket “close angle bracket” {Close}'))
     self.assertEqual(
         mq.candidates('punctuation')[0][:2],
         ('‼\ufe0f', 'double exclamation mark {Punctuation} [punctuation]'))
     self.assertEqual(
         mq.candidates('final quote')[0][:2],
         ('’', 'right single quotation mark {Final quote}'))
     self.assertEqual(
         mq.candidates('initial quote')[0][:2],
         ('‘', 'left single quotation mark {Initial quote}'))
     self.assertEqual(
         mq.candidates('modifier')[0][:2],
         ('🏻', 'emoji modifier fitzpatrick type-1-2 {Modifier}'))
     self.assertEqual(
         mq.candidates('math')[0][:2],
         ('𝜵', 'mathematical bold italic nabla {Math}'))
     self.assertEqual(
         mq.candidates('separator line')[0][:2],
         ('
', 'U+2028 line separator {Line}'))
     self.assertEqual(
         mq.candidates('separator paragraph')[0][:2],
         ('
', 'U+2029 paragraph separator {Paragraph}'))
     self.assertEqual(
         mq.candidates('separator space')[0][:2],
         (' ', 'U+20 space {Space}'))
 def test_candidates_flags(self) -> None:
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US'])
     self.assertEqual(
         mq.candidates('us')[0][:2],
         ('🇺🇸', 'flag: united states “us”'))
     self.assertEqual(
         mq.candidates('flag us')[0][:2],
         ('🇺🇸', 'flag: united states “us”'))
     self.assertEqual(
         mq.candidates('united nations')[0][:2],
         ('🇺🇳', 'flag: united nations'))
     self.assertEqual(
         mq.candidates('united')[0][:2],
         ('🇺🇳', 'flag: united nations'))
     self.assertEqual(
         mq.candidates('outlying islands')[0][:2],
         ('🇺🇲', 'flag: u.s. outlying islands'))
     self.assertEqual(
         mq.candidates('flag united arab')[0][:2],
         ('🇦🇪', 'flag: united arab emirates “flag ae”'))
     self.assertEqual(
         mq.candidates('mm')[0][:2],
         ('🇲🇲', 'flag: myanmar (burma) “mm”'))
     self.assertEqual(
         mq.candidates('flag mm')[0][:2],
         ('🇲🇲', 'flag: myanmar (burma) “mm”'))
     self.assertEqual(
         mq.candidates('myanmar')[0][:2],
         ('🇲🇲', 'flag: myanmar (burma) “flag: myanmar burma”'))
     self.assertEqual(
         mq.candidates('sj')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen “sj”'))
     self.assertEqual(
         mq.candidates('flag sj')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen “sj”'))
     self.assertEqual(
         mq.candidates('svalbard')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen “flag: svalbard & jan mayen”'))
     self.assertEqual(
         mq.candidates('jan mayen')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen “flag: svalbard & jan mayen”'))
     self.assertEqual(
         mq.candidates('mayen')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen “flag: svalbard & jan mayen”'))
 def test_candidates_flags(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('us')[0][:2],
         ('🇺🇸', 'flag: united states “us”'))
     self.assertEqual(
         mq.candidates('flag us')[0][:2],
         ('🇺🇸', 'flag: united states “us”'))
     self.assertEqual(
         mq.candidates('united states')[0][:2],
         ('🇺🇸', 'flag: united states'))
     self.assertEqual(
         mq.candidates('united')[0][:2],
         ('🇦🇪', 'flag: united arab emirates'))
     self.assertEqual(
         mq.candidates('united minor outlying islands')[0][:2],
         ('🇺🇲', 'flag: u.s. outlying islands'))
     self.assertEqual(
         mq.candidates('united arab')[0][:2],
         ('🇦🇪', 'flag: united arab emirates'))
     self.assertEqual(
         mq.candidates('mm')[0][:2],
         ('🇲🇲', 'flag: myanmar (burma) “mm”'))
     self.assertEqual(
         mq.candidates('flag mm')[0][:2],
         ('🇲🇲', 'flag: myanmar (burma) “mm”'))
     self.assertEqual(
         mq.candidates('myanmar')[0][:2],
         ('🇲🇲', 'flag: myanmar (burma) “myanmar burma”'))
     self.assertEqual(
         mq.candidates('sj')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen “sj”'))
     self.assertEqual(
         mq.candidates('flag sj')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen “sj”'))
     self.assertEqual(
         mq.candidates('svalbard')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen'))
     self.assertEqual(
         mq.candidates('jan mayen')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen'))
     self.assertEqual(
         mq.candidates('mayen')[0][:2],
         ('🇸🇯', 'flag: svalbard & jan mayen'))
 def test_candidates_spellchecking(self) -> None:
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US'])
     self.assertEqual(
         ('\U0001f98b', 'butterfly'),
         mq.candidates('buterfly')[0][:2])
     self.assertEqual(
         ('🏸', 'badminton racquet and shuttlecock'),
         mq.candidates('badminton')[0][:2])
     self.assertEqual(
         ('🏸', 'badminton racquet and shuttlecock'),
         mq.candidates('badmynton')[0][:2])
     self.assertEqual(
         ('🏸', 'badminton racquet and shuttlecock'),
         mq.candidates('padminton')[0][:2])
     self.assertEqual(
         ('🦔', 'hedgehog'),
         mq.candidates('hedgehgo')[0][:2])
 def test_candidates_spellchecking(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('buterfly')[0][:2],
         ('\U0001f98b', 'butterfly'))
     self.assertEqual(
         mq.candidates('badminton')[0][:2],
         ('🏸', 'badminton racquet and shuttlecock'))
     self.assertEqual(
         mq.candidates('badmynton')[0][:2],
         ('🏸', 'badminton racquet and shuttlecock'))
     self.assertEqual(
         mq.candidates('padminton')[0][:2],
         ('🏸', 'badminton racquet and shuttlecock'))
     self.assertEqual(
         mq.candidates('fery')[0][:2],
         ('⛴\ufe0f', 'ferry'))
 def test_candidates_pykakasi_available_ja_JP(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['ja_JP'])
     self.assertEqual(
         mq.candidates('katatsumuri')[0][:2],
         ('🐌', 'かたつむり “katatsumuri”'))
     self.assertEqual(
         mq.candidates('かたつむり')[0][:2],
         ('🐌', 'かたつむり'))
     self.assertEqual(
         mq.candidates('かたつむり_')[0][:2],
         ('🐌', 'かたつむり'))
     self.assertEqual(
         mq.candidates('かたつむり_')[0][:2],
         ('🐌', 'かたつむり'))
     self.assertEqual(
         0, len(mq.candidates('カタツムリ')))
     self.assertEqual(
         0, len(mq.candidates('カタツムリ_')))
     self.assertEqual(
         0, len(mq.candidates('カタツムリ_')))
     self.assertEqual(
         mq.candidates('ネコ')[0][:2],
         ('🐈', 'ネコ'))
     self.assertEqual(
         mq.candidates('ネコ_')[0][:2],
         ('🐈', 'ネコ'))
     self.assertEqual(
         mq.candidates('ネコ_')[0][:2],
         ('🐈', 'ネコ'))
     self.assertEqual(
         mq.candidates('ねこ')[0][:2],
         ('🐈', 'ネコ “ねこ”'))
     self.assertEqual(
         mq.candidates('ねこ_')[0][:2],
         ('🐈', 'ネコ “ねこ”'))
     self.assertEqual(
         mq.candidates('ねこ_')[0][:2],
         ('🐈', 'ネコ “ねこ”'))
 def test_candidates_multilingual(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(
         mq.candidates('ant')[0][:2],
         ('🐜', 'ant'))
     self.assertEqual(
         mq.candidates('ameise')[0][:2],
         ('🐜', 'Ameise'))
     self.assertEqual(
         mq.candidates('Ameise')[0][:2],
         ('🐜', 'Ameise'))
     self.assertEqual(
         mq.candidates('formica')[0][:2],
         ('🐜', 'formica'))
     self.assertEqual(
         mq.candidates('hormiga')[0][:2],
         ('🐜', 'hormiga'))
     self.assertEqual(
         mq.candidates('cacca')[0][:2],
         ('💩', 'cacca'))
     self.assertEqual(
         mq.candidates('orso')[0][:2],
         ('🐻', 'orso'))
     self.assertEqual(
         mq.candidates('lupo')[0][:2],
         ('🐺', 'lupo'))
     self.assertEqual(
         mq.candidates('gatto')[0][:2],
         ('🐈', 'gatto'))
     self.assertEqual(
         mq.candidates('gatto sorride')[0][:2],
         ('😺', 'gatto che sorride'))
     self.assertEqual(
         mq.candidates('halo')[0][:2],
         ('😇', 'smiling face with halo'))
     self.assertEqual(
         mq.candidates('factory')[0][:2],
         ('🏭', 'factory'))
Пример #18
0
 def test_similar_query_is_not_an_emoji(self) -> None:
     mq = itb_emoji.EmojiMatcher(
         languages=['en_US', 'it_IT', 'es_MX', 'es_ES', 'de_DE', 'ja_JP'])
     self.assertEqual(mq.similar('this is not an emoji', match_limit=5), [])
Пример #19
0
 def test_similar_horse_racing_pinyin_available_zh_TW(self) -> None:
     mq = itb_emoji.EmojiMatcher(languages=['zh_TW'])
     self.assertEqual(mq.similar('🏇', match_limit=1),
                      [('🏇', '賽馬 [🏇, 賽馬, sàimǎ, 騎馬, qímǎ]', 5)])
Пример #20
0
 def test_similar_horse_racing_pinyin_missing_zh_TW(self) -> None:
     mq = itb_emoji.EmojiMatcher(languages=['zh_TW'])
     self.assertEqual(mq.similar('🏇', match_limit=1),
                      [('🏇', '賽馬 [🏇, 賽馬, 騎馬]', 3)])
Пример #21
0
 def test_similar_horse_racing_pinyin_available_zh_CN(self) -> None:
     mq = itb_emoji.EmojiMatcher(languages=['zh_CN'])
     self.assertEqual(mq.similar('🏇', match_limit=3),
                      [('🏇', '赛马 [🏇, 赛马, sàimǎ, 马, mǎ]', 5),
                       ('🏇🏻', '赛马: 较浅肤色 [赛马, sàimǎ, 马, mǎ]', 4),
                       ('🏇🏼', '赛马: 中等-浅肤色 [赛马, sàimǎ, 马, mǎ]', 4)])
Пример #22
0
 def test_similar_horse_racing_pinyin_missing_zh_CN(self) -> None:
     mq = itb_emoji.EmojiMatcher(languages=['zh_CN'])
     self.assertEqual(mq.similar('🏇', match_limit=3),
                      [('🏇', '赛马 [🏇, 赛马, 马]', 3),
                       ('🏇🏻', '赛马: 较浅肤色 [赛马, 马]', 2),
                       ('🏇🏼', '赛马: 中等-浅肤色 [赛马, 马]', 2)])
 def test_unicode_version_emoji_data_file(self):
     mq = itb_emoji.EmojiMatcher(languages=['en_US'])
     self.assertEqual(mq.unicode_version('☺'), '2.0')
     self.assertEqual(mq.unicode_version('🤿'), '12.1')
     self.assertEqual(mq.unicode_version('⚧'), '13.0')
 def test_candidates_empty_query(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['fr_FR'])
     self.assertEqual(mq.candidates(''), [])
 def test_candidates_french_similar(self):
     mq = itb_emoji.EmojiMatcher(
         languages = ['fr_FR'])
     self.assertEqual(
         mq.candidates('🤔', match_limit = 3),
         [('🤔', 'visage en pleine réflexion [🤔, réflexion, visage, visage en pleine réflexion]', 4), ('🤐', 'visage avec bouche fermeture éclair [visage]', 1), ('🤗', 'visage qui fait un câlin [visage]', 1)])