|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
//
|
|
|
|
|
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
|
|
|
|
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
import XCTest
|
|
|
|
@ -106,4 +106,60 @@ class DisplayableTextTest: SignalBaseTest {
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func test_shouldAllowLinkification() {
|
|
|
|
|
func assertLinkifies(_ text: String, file: StaticString = #file, line: UInt = #line) {
|
|
|
|
|
let displayableText = DisplayableText.displayableText(text)
|
|
|
|
|
XCTAssert(displayableText.shouldAllowLinkification, "was not linkifiable text: \(text)", file: file, line: line)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func assertNotLinkifies(_ text: String, file: StaticString = #file, line: UInt = #line) {
|
|
|
|
|
let displayableText = DisplayableText.displayableText(text)
|
|
|
|
|
XCTAssertFalse(displayableText.shouldAllowLinkification, "was linkifiable text: \(text)", file: file, line: line)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// some basic happy paths
|
|
|
|
|
assertLinkifies("foo google.com")
|
|
|
|
|
assertLinkifies("google.com/foo")
|
|
|
|
|
assertLinkifies("blah google.com/foo")
|
|
|
|
|
assertLinkifies("foo http://google.com")
|
|
|
|
|
assertLinkifies("foo https://google.com")
|
|
|
|
|
|
|
|
|
|
// cyrillic host with ascii tld
|
|
|
|
|
assertNotLinkifies("foo http://asĸ.com")
|
|
|
|
|
assertNotLinkifies("http://asĸ.com")
|
|
|
|
|
assertNotLinkifies("asĸ.com")
|
|
|
|
|
|
|
|
|
|
// Mixed latin and cyrillic text, but it's not a link
|
|
|
|
|
// (nothing to linkify, but there's nothing illegal here)
|
|
|
|
|
assertLinkifies("asĸ")
|
|
|
|
|
|
|
|
|
|
// Cyrillic host with cyrillic TLD
|
|
|
|
|
assertLinkifies("http://кц.рф")
|
|
|
|
|
assertLinkifies("https://кц.рф")
|
|
|
|
|
assertLinkifies("кц.рф")
|
|
|
|
|
assertLinkifies("https://кц.рф/foo")
|
|
|
|
|
assertLinkifies("https://кц.рф/кц")
|
|
|
|
|
assertLinkifies("https://кц.рф/кцfoo")
|
|
|
|
|
|
|
|
|
|
// ascii text outside of the link, with cyrillic host + cyrillic domain
|
|
|
|
|
assertLinkifies("some text: кц.рф")
|
|
|
|
|
|
|
|
|
|
// Mixed ascii/cyrillic text outside of the link, with cyrillic host + cyrillic domain
|
|
|
|
|
assertLinkifies("asĸ кц.рф")
|
|
|
|
|
|
|
|
|
|
assertLinkifies("google.com")
|
|
|
|
|
assertLinkifies("foo.google.com")
|
|
|
|
|
assertLinkifies("https://foo.google.com")
|
|
|
|
|
assertLinkifies("https://foo.google.com/some/path.html")
|
|
|
|
|
|
|
|
|
|
assertNotLinkifies("asĸ.com")
|
|
|
|
|
assertNotLinkifies("https://кц.cфm")
|
|
|
|
|
assertNotLinkifies("https://google.cфm")
|
|
|
|
|
|
|
|
|
|
assertLinkifies("кц.рф")
|
|
|
|
|
assertLinkifies("кц.рф/some/path")
|
|
|
|
|
assertLinkifies("https://кц.рф/some/path")
|
|
|
|
|
assertNotLinkifies("http://foo.кц.рф")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|