|
|
@ -23,84 +23,88 @@ class MesssagesBubblesSizeCalculatorTest: XCTestCase {
|
|
|
|
func viewItemForText(_ text: String?) -> ConversationViewItem {
|
|
|
|
func viewItemForText(_ text: String?) -> ConversationViewItem {
|
|
|
|
let interaction = TSOutgoingMessage(timestamp: 0, in: thread, messageBody: text)
|
|
|
|
let interaction = TSOutgoingMessage(timestamp: 0, in: thread, messageBody: text)
|
|
|
|
interaction.save()
|
|
|
|
interaction.save()
|
|
|
|
return ConversationViewItem(tsInteraction:interaction, isGroupThread:false)
|
|
|
|
let viewItem = ConversationViewItem(tsInteraction:interaction, isGroupThread:false)
|
|
|
|
|
|
|
|
viewItem.shouldShowDate = false
|
|
|
|
|
|
|
|
viewItem.shouldHideRecipientStatus = true
|
|
|
|
|
|
|
|
return viewItem
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func messageBubbleSize(for viewItem: ConversationViewItem) -> CGSize {
|
|
|
|
func messageBubbleSize(for viewItem: ConversationViewItem) -> CGSize {
|
|
|
|
viewItem.clearCachedLayoutState()
|
|
|
|
viewItem.clearCachedLayoutState()
|
|
|
|
let viewWidth = 367
|
|
|
|
// These are the expected values on iPhone SE.
|
|
|
|
let contentWidth = 367
|
|
|
|
let viewWidth = 320
|
|
|
|
|
|
|
|
let contentWidth = 300
|
|
|
|
return viewItem.cellSize(forViewWidth: Int32(viewWidth), contentWidth:Int32(contentWidth))
|
|
|
|
return viewItem.cellSize(forViewWidth: Int32(viewWidth), contentWidth:Int32(contentWidth))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForNilMessage() {
|
|
|
|
func testHeightForEmptyMessage() {
|
|
|
|
let text: String? = nil
|
|
|
|
let text: String? = ""
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
XCTAssertEqual(37, actual.height)
|
|
|
|
XCTAssertEqual(42, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForShort1LineMessage() {
|
|
|
|
func testHeightForShort1LineMessage() {
|
|
|
|
let text = "foo"
|
|
|
|
let text = "foo"
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
XCTAssertEqual(38, actual.height)
|
|
|
|
XCTAssertEqual(42, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForLong1LineMessage() {
|
|
|
|
func testHeightForLong1LineMessage() {
|
|
|
|
let text = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 x"
|
|
|
|
let text = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 x"
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
XCTAssertEqual(38, actual.height)
|
|
|
|
XCTAssertEqual(64, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForShort2LineMessage() {
|
|
|
|
func testHeightForShort2LineMessage() {
|
|
|
|
let text = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 x 1"
|
|
|
|
let text = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 x 1"
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
XCTAssertEqual(59, actual.height)
|
|
|
|
XCTAssertEqual(64, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForLong2LineMessage() {
|
|
|
|
func testHeightForLong2LineMessage() {
|
|
|
|
let text = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 x"
|
|
|
|
let text = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 x"
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let viewItem = self.viewItemForText(text)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
XCTAssertEqual(59, actual.height)
|
|
|
|
XCTAssertEqual(86, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForiOS10EmojiBug() {
|
|
|
|
func testHeightForiOS10EmojiBug() {
|
|
|
|
let viewItem = self.viewItemForText("Wunderschönen Guten Morgaaaahhhn 😝 - hast du gut geschlafen ☺️😘")
|
|
|
|
let viewItem = self.viewItemForText("Wunderschönen Guten Morgaaaahhhn 😝 - hast du gut geschlafen ☺️😘")
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
|
|
|
|
|
|
|
|
XCTAssertEqual(85.5, actual.height)
|
|
|
|
XCTAssertEqual(108, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForiOS10EmojiBug2() {
|
|
|
|
func testHeightForiOS10EmojiBug2() {
|
|
|
|
let viewItem = self.viewItemForText("Test test test test test test test test test test test test 😊❤️❤️")
|
|
|
|
let viewItem = self.viewItemForText("Test test test test test test test test test test test test 😊❤️❤️")
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
|
|
|
|
|
|
|
|
XCTAssertEqual(62, actual.height)
|
|
|
|
XCTAssertEqual(86, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForChineseWithEmojiBug() {
|
|
|
|
func testHeightForChineseWithEmojiBug() {
|
|
|
|
let viewItem = self.viewItemForText("一二三四五六七八九十甲乙丙😝戊己庚辛壬圭咖啡牛奶餅乾水果蛋糕")
|
|
|
|
let viewItem = self.viewItemForText("一二三四五六七八九十甲乙丙😝戊己庚辛壬圭咖啡牛奶餅乾水果蛋糕")
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
// erroneously seeing 69 with the emoji fix in place.
|
|
|
|
// erroneously seeing 69 with the emoji fix in place.
|
|
|
|
XCTAssertEqual(85.5, actual.height)
|
|
|
|
XCTAssertEqual(86, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForChineseWithoutEmojiBug() {
|
|
|
|
func testHeightForChineseWithoutEmojiBug() {
|
|
|
|
let viewItem = self.viewItemForText("一二三四五六七八九十甲乙丙丁戊己庚辛壬圭咖啡牛奶餅乾水果蛋糕")
|
|
|
|
let viewItem = self.viewItemForText("一二三四五六七八九十甲乙丙丁戊己庚辛壬圭咖啡牛奶餅乾水果蛋糕")
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
// erroneously seeing 69 with the emoji fix in place.
|
|
|
|
// erroneously seeing 69 with the emoji fix in place.
|
|
|
|
XCTAssertEqual(81, actual.height)
|
|
|
|
XCTAssertEqual(86, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func testHeightForiOS10DoubleSpaceNumbersBug() {
|
|
|
|
func testHeightForiOS10DoubleSpaceNumbersBug() {
|
|
|
|
let viewItem = self.viewItemForText("12345678901234567890")
|
|
|
|
let viewItem = self.viewItemForText("12345678901234567890")
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
let actual = messageBubbleSize(for: viewItem)
|
|
|
|
// erroneously seeing 51 with emoji fix in place. It's the call to "fix string"
|
|
|
|
// erroneously seeing 51 with emoji fix in place. It's the call to "fix string"
|
|
|
|
XCTAssertEqual(59, actual.height)
|
|
|
|
XCTAssertEqual(64, actual.height)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|