Fix emoji / CoreText crash.
This commit is contained in:
parent
812d96a0b6
commit
4decd11c4b
@ -13,14 +13,6 @@ class EmojiTests: SignalBaseTest {
|
||||
}
|
||||
|
||||
func testSimpleEmojiCases() {
|
||||
XCTAssertFalse("".isSingleEmoji)
|
||||
XCTAssertTrue("😃".isSingleEmoji)
|
||||
XCTAssertFalse("😃😃".isSingleEmoji)
|
||||
XCTAssertFalse("a".isSingleEmoji)
|
||||
XCTAssertFalse(" 😃".isSingleEmoji)
|
||||
XCTAssertFalse("😃 ".isSingleEmoji)
|
||||
XCTAssertTrue("👨👩👧👦".isSingleEmoji)
|
||||
|
||||
XCTAssertFalse("".isSingleEmojiUsingEmojiWithSkinTones)
|
||||
XCTAssertTrue("😃".isSingleEmojiUsingEmojiWithSkinTones)
|
||||
XCTAssertFalse("😃😃".isSingleEmojiUsingEmojiWithSkinTones)
|
||||
@ -28,6 +20,7 @@ class EmojiTests: SignalBaseTest {
|
||||
XCTAssertFalse(" 😃".isSingleEmojiUsingEmojiWithSkinTones)
|
||||
XCTAssertFalse("😃 ".isSingleEmojiUsingEmojiWithSkinTones)
|
||||
XCTAssertTrue("👨👩👧👦".isSingleEmojiUsingEmojiWithSkinTones)
|
||||
XCTAssertTrue("👨🏿🤝👨🏻".isSingleEmojiUsingEmojiWithSkinTones)
|
||||
|
||||
XCTAssertFalse("".isSingleEmojiUsingCoreText)
|
||||
XCTAssertTrue("😃".isSingleEmojiUsingCoreText)
|
||||
@ -36,6 +29,8 @@ class EmojiTests: SignalBaseTest {
|
||||
XCTAssertFalse(" 😃".isSingleEmojiUsingCoreText)
|
||||
XCTAssertFalse("😃 ".isSingleEmojiUsingCoreText)
|
||||
XCTAssertTrue("👨👩👧👦".isSingleEmojiUsingCoreText)
|
||||
// CoreText considers this two glyphs.
|
||||
XCTAssertFalse("👨🏿🤝👨🏻".isSingleEmojiUsingCoreText)
|
||||
|
||||
XCTAssertFalse("".isSingleEmojiUsingCount)
|
||||
XCTAssertTrue("😃".isSingleEmojiUsingCount)
|
||||
@ -44,16 +39,19 @@ class EmojiTests: SignalBaseTest {
|
||||
XCTAssertFalse(" 😃".isSingleEmojiUsingCount)
|
||||
XCTAssertFalse("😃 ".isSingleEmojiUsingCount)
|
||||
XCTAssertTrue("👨👩👧👦".isSingleEmojiUsingCount)
|
||||
XCTAssertTrue("👨🏿🤝👨🏻".isSingleEmojiUsingCount)
|
||||
}
|
||||
|
||||
func testEmojiCounts() {
|
||||
XCTAssertEqual("".count, 0)
|
||||
XCTAssertEqual("😃".count, 1)
|
||||
XCTAssertEqual("😃😃".count, 2)
|
||||
XCTAssertEqual("a".count, 1)
|
||||
XCTAssertEqual(" 😃".count, 2)
|
||||
XCTAssertEqual("😃 ".count, 2)
|
||||
XCTAssertEqual("👨👩👧👦".count, 1)
|
||||
XCTAssertEqual("".glyphCount, 0)
|
||||
XCTAssertEqual("😃".glyphCount, 1)
|
||||
XCTAssertEqual("😃😃".glyphCount, 2)
|
||||
XCTAssertEqual("a".glyphCount, 1)
|
||||
XCTAssertEqual(" 😃".glyphCount, 2)
|
||||
XCTAssertEqual("😃 ".glyphCount, 2)
|
||||
XCTAssertEqual("👨👩👧👦".glyphCount, 1)
|
||||
// CoreText considers this two glyphs.
|
||||
XCTAssertEqual("👨🏿🤝👨🏻".glyphCount, 2)
|
||||
|
||||
XCTAssertEqual("".count, 0)
|
||||
XCTAssertEqual("😃".count, 1)
|
||||
@ -62,6 +60,7 @@ class EmojiTests: SignalBaseTest {
|
||||
XCTAssertEqual(" 😃".count, 2)
|
||||
XCTAssertEqual("😃 ".count, 2)
|
||||
XCTAssertEqual("👨👩👧👦".count, 1)
|
||||
XCTAssertEqual("👨🏿🤝👨🏻".count, 1)
|
||||
}
|
||||
|
||||
func testFancyEmojiCases() {
|
||||
@ -142,6 +141,16 @@ class EmojiTests: SignalBaseTest {
|
||||
XCTAssertEqual(fancyEmoji.count, 1)
|
||||
}
|
||||
|
||||
do {
|
||||
// This emoji has two skin tones.
|
||||
let fancyEmoji = "👨🏿🤝👨🏻"
|
||||
XCTAssertTrue(fancyEmoji.isSingleEmojiUsingEmojiWithSkinTones)
|
||||
// CoreText considers this two glyphs.
|
||||
XCTAssertFalse(fancyEmoji.isSingleEmojiUsingCoreText)
|
||||
XCTAssertTrue(fancyEmoji.isSingleEmojiUsingCount)
|
||||
XCTAssertEqual(fancyEmoji.count, 1)
|
||||
}
|
||||
|
||||
do {
|
||||
let fancyEmoji = "🏳"
|
||||
// EmojiWithSkinTones doesn't recognize this as an emoji...
|
||||
|
||||
Loading…
Reference in New Issue
Block a user