import ConjureKit import Testing @Test func emojiCatalogSupportsOfflineSearchAndOrderedCategories() { #expect(EmojiCatalog.search(" \n ").map(\.value) == EmojiCatalog.all.map(\.value)) #expect(EmojiCatalog.search("", category: "Flags").map(\.value) == EmojiCatalog.all.filter { $0.category == "Flags" }.map(\.value)) // Names, shortcodes, aliases, tags, and literals share the same search path. #expect(EmojiCatalog.search("woman tech").map(\.value) == ["👩‍💻"]) #expect(EmojiCatalog.search(":WOMAN_TECHNOLOGIST:").map(\.value) == ["👩‍💻"]) #expect(EmojiCatalog.search("coder woman", category: "People & Body").map(\.value) == ["👩‍💻"]) #expect(EmojiCatalog.search("coder woman", category: "Objects").isEmpty) #expect(EmojiCatalog.search(":+1:").map(\.value) == ["👍"]) #expect(EmojiCatalog.search("CÁFÉ", category: "Food & Drink").contains { $0.value == "☕" }) #expect(EmojiCatalog.search("👩‍💻").map(\.value) == ["👩‍💻"]) #expect(EmojiCatalog.search("🇩🇰", category: "Flags").map(\.value) == ["🇩🇰"]) #expect(EmojiCatalog.search("no-such-emoji").isEmpty) #expect(EmojiCatalog.search("", category: "no-such-category").isEmpty) }