field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

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 }