session-ios/Signal/test/util/DisplayableTextFilterTest.s...

101 lines
5.3 KiB
Swift
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
import XCTest
class DisplayableTextTest: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testDisplayableText() {
// show plain text
let boringText = "boring text"
XCTAssertEqual(boringText, DisplayableText.displayableText(boringText))
// show high byte emojis
let emojiText = "🇹🇹🌼🇹🇹🌼🇹🇹"
XCTAssertEqual(emojiText, DisplayableText.displayableText(emojiText))
// show normal diacritic usage
let diacriticalText = "Příliš žluťoučký kůň úpěl ďábelské ódy."
XCTAssertEqual(diacriticalText, DisplayableText.displayableText(diacriticalText))
// filter excessive diacritics
XCTAssertEqual("HAVING TROUBLE READING TEXT?", DisplayableText.displayableText("H҉̸̧͘͠A͢͞V̛̛I̴̸N͏̕͏G҉̵͜͏͢ ̧̧́T̶̛͘͡R̸̵̨̢̀O̷̡U͡҉B̶̛͢͞L̸̸͘͢͟É̸ ̸̛͘͏R͟È͠͞A̸͝Ḑ̕͘͜I̵͘҉͜͞N̷̡̢͠G̴͘͠ ͟͞T͏̢́͡È̀X̕҉̢̀T̢͠?̕͏̢͘͢") )
XCTAssertEqual("LGO!", DisplayableText.displayableText("L̷̳͔̲͝Ģ̵̮̯̤̩̙͍̬̟͉̹̘̹͍͈̮̦̰̣͟͝O̶̴̮̻̮̗͘͡!̴̷̟͓͓"))
}
func testGlyphCount() {
// Plain text
XCTAssertEqual("boring text".glyphCount, 11)
// Emojis
XCTAssertEqual("🇹🇹🌼🇹🇹🌼🇹🇹".glyphCount, 5)
XCTAssertEqual("🇹🇹".glyphCount, 1)
XCTAssertEqual("🇹🇹 ".glyphCount, 2)
XCTAssertEqual("👌🏽👌🏾👌🏿".glyphCount, 3)
XCTAssertEqual("😍".glyphCount, 1)
XCTAssertEqual("👩🏽".glyphCount, 1)
XCTAssertEqual("👾🙇💁🙅🙆🙋🙎🙍".glyphCount, 8)
XCTAssertEqual("🐵🙈🙉🙊".glyphCount, 4)
XCTAssertEqual("❤️💔💌💕💞💓💗💖💘💝💟💜💛💚💙".glyphCount, 15)
XCTAssertEqual("✋🏿💪🏿👐🏿🙌🏿👏🏿🙏🏿".glyphCount, 6)
XCTAssertEqual("🚾🆒🆓🆕🆖🆗🆙🏧".glyphCount, 8)
XCTAssertEqual("0⃣1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣🔟".glyphCount, 11)
XCTAssertEqual("🇺🇸🇷🇺🇦🇫🇦🇲".glyphCount, 4)
XCTAssertEqual("🇺🇸🇷🇺🇸 🇦🇫🇦🇲🇸".glyphCount, 7)
XCTAssertEqual("🇺🇸🇷🇺🇸🇦🇫🇦🇲".glyphCount, 5)
XCTAssertEqual("🇺🇸🇷🇺🇸🇦".glyphCount, 3)
XCTAssertEqual("".glyphCount, 3)
// Normal diacritic usage
XCTAssertEqual("Příliš žluťoučký kůň úpěl ďábelské ódy.".glyphCount, 39)
// Excessive diacritics
XCTAssertEqual("H҉̸̧͘͠A͢͞V̛̛I̴̸N͏̕͏G҉̵͜͏͢ ̧̧́T̶̛͘͡R̸̵̨̢̀O̷̡U͡҉B̶̛͢͞L̸̸͘͢͟É̸ ̸̛͘͏R͟È͠͞A̸͝Ḑ̕͘͜I̵͘҉͜͞N̷̡̢͠G̴͘͠ ͟͞T͏̢́͡È̀X̕҉̢̀T̢͠?̕͏̢͘͢".glyphCount, 115)
XCTAssertEqual("L̷̳͔̲͝Ģ̵̮̯̤̩̙͍̬̟͉̹̘̹͍͈̮̦̰̣͟͝O̶̴̮̻̮̗͘͡!̴̷̟͓͓".glyphCount, 43)
}
func testContainsOnlyEmoji() {
// Plain text
XCTAssertFalse("boring text".containsOnlyEmoji)
// Emojis
XCTAssertTrue("🇹🇹🌼🇹🇹🌼🇹🇹".containsOnlyEmoji)
XCTAssertTrue("🇹🇹".containsOnlyEmoji)
XCTAssertFalse("🇹🇹 ".containsOnlyEmoji)
XCTAssertTrue("👌🏽👌🏾👌🏿".containsOnlyEmoji)
XCTAssertTrue("😍".containsOnlyEmoji)
XCTAssertTrue("👩🏽".containsOnlyEmoji)
XCTAssertTrue("👾🙇💁🙅🙆🙋🙎🙍".containsOnlyEmoji)
XCTAssertTrue("🐵🙈🙉🙊".containsOnlyEmoji)
XCTAssertTrue("❤️💔💌💕💞💓💗💖💘💝💟💜💛💚💙".containsOnlyEmoji)
XCTAssertTrue("✋🏿💪🏿👐🏿🙌🏿👏🏿🙏🏿".containsOnlyEmoji)
XCTAssertTrue("🚾🆒🆓🆕🆖🆗🆙🏧".containsOnlyEmoji)
XCTAssertTrue("0⃣1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣🔟".containsOnlyEmoji)
XCTAssertTrue("🇺🇸🇷🇺🇦🇫🇦🇲".containsOnlyEmoji)
XCTAssertFalse("🇺🇸🇷🇺🇸 🇦🇫🇦🇲🇸".containsOnlyEmoji)
XCTAssertTrue("🇺🇸🇷🇺🇸🇦🇫🇦🇲".containsOnlyEmoji)
XCTAssertTrue("🇺🇸🇷🇺🇸🇦".containsOnlyEmoji)
// Unicode standard doesn't consider these to be Emoji.
XCTAssertFalse("".containsOnlyEmoji)
// Normal diacritic usage
XCTAssertFalse("Příliš žluťoučký kůň úpěl ďábelské ódy.".containsOnlyEmoji)
// Excessive diacritics
XCTAssertFalse("H҉̸̧͘͠A͢͞V̛̛I̴̸N͏̕͏G҉̵͜͏͢ ̧̧́T̶̛͘͡R̸̵̨̢̀O̷̡U͡҉B̶̛͢͞L̸̸͘͢͟É̸ ̸̛͘͏R͟È͠͞A̸͝Ḑ̕͘͜I̵͘҉͜͞N̷̡̢͠G̴͘͠ ͟͞T͏̢́͡È̀X̕҉̢̀T̢͠?̕͏̢͘͢".containsOnlyEmoji)
XCTAssertFalse("L̷̳͔̲͝Ģ̵̮̯̤̩̙͍̬̟͉̹̘̹͍͈̮̦̰̣͟͝O̶̴̮̻̮̗͘͡!̴̷̟͓͓".containsOnlyEmoji)
}
}