TeraTodayRenderingTests.swift (2078B)
1 @testable import TeraApp 2 import XCTest 3 4 final class TeraTodayRenderingTests: XCTestCase { 5 func testExcerptCharacterAndByteLimitsPreserveFullDetail() { 6 let feed = TeraTodayCardPresentation.feed 7 let detail = TeraTodayCardPresentation.detail 8 let maximum = String(repeating: "a", count: 640) 9 XCTAssertEqual(feed.content(maximum), maximum) 10 XCTAssertEqual(feed.content(maximum + "b").count, 640) 11 XCTAssertTrue(feed.content(maximum + "b").hasSuffix("โฆ")) 12 for value in [String(repeating: "๐จโ๐ฉโ๐งโ๐ฆ", count: 1000), 13 "e" + String(repeating: "\u{301}", count: 100_000), 14 String(repeating: "่พฒ", count: 2000), String(repeating: "๐ฉ๐ฝโ๐พ", count: 1000)] 15 { 16 let excerpt = feed.content(value) 17 XCTAssertLessThanOrEqual(excerpt.utf8.count, 4096) 18 XCTAssertLessThanOrEqual(excerpt.count, 640) 19 XCTAssertFalse(excerpt.contains("๏ฟฝ")) 20 XCTAssertEqual(detail.content(value), value) 21 } 22 } 23 24 func testByteBoundaryNeverIncludesAPartialGrapheme() { 25 let cluster = "๐ฉ๐ฝโ๐พ" 26 let value = "abc" + cluster + "end" 27 for bytes in 3 ... value.utf8.count { 28 let result = TeraTodayCardPresentation.excerpt(value, characters: 100, bytes: bytes) 29 XCTAssertLessThanOrEqual(result.utf8.count, bytes) 30 XCTAssertTrue(value.hasPrefix(String(result.dropLast())) || result == value) 31 XCTAssertFalse(result.contains("๏ฟฝ")) 32 } 33 } 34 35 func testFeedBoundsLabelsAndThumbnailsWhileDetailRetainsEveryReference() { 36 let label = String(repeating: "a", count: 160) 37 XCTAssertEqual(TeraTodayCardPresentation.feed.label(label), label) 38 XCTAssertEqual(TeraTodayCardPresentation.feed.label(label + "b").count, 160) 39 let references = Array(repeating: TeraScopeFixtures.reference(), count: 4) 40 XCTAssertEqual(TeraTodayCardPresentation.feed.media(Array(references.prefix(3))).count, 3) 41 XCTAssertEqual(TeraTodayCardPresentation.feed.media(references).count, 3) 42 XCTAssertEqual(TeraTodayCardPresentation.detail.media(references), references) 43 } 44 }