Prepare v0.4 release and open source docs
This commit is contained in:
46
Tests/IHatePDFsCoreTests/PerformanceBudgetTests.swift
Normal file
46
Tests/IHatePDFsCoreTests/PerformanceBudgetTests.swift
Normal file
@@ -0,0 +1,46 @@
|
||||
import AppKit
|
||||
import PDFKit
|
||||
import XCTest
|
||||
@testable import IHatePDFsCore
|
||||
|
||||
final class PerformanceBudgetTests: XCTestCase {
|
||||
func testLargeDocumentFullAnnotationSnapshotPerformance() {
|
||||
let document = makeLargeAnnotatedDocument(pageCount: 500, annotationEvery: 10)
|
||||
|
||||
measure {
|
||||
let snapshots = AnnotationReader.snapshots(in: document)
|
||||
XCTAssertEqual(snapshots.count, 50)
|
||||
}
|
||||
}
|
||||
|
||||
func testLargeDocumentPageScopedAnnotationRefreshPerformance() throws {
|
||||
let document = makeLargeAnnotatedDocument(pageCount: 500, annotationEvery: 10)
|
||||
let targetPage = try XCTUnwrap(document.page(at: 250))
|
||||
|
||||
measure {
|
||||
let snapshots = AnnotationReader.snapshots(in: document, pages: [targetPage])
|
||||
XCTAssertEqual(snapshots.count, 1)
|
||||
XCTAssertEqual(snapshots.first?.pageIndex, 250)
|
||||
}
|
||||
}
|
||||
|
||||
private func makeLargeAnnotatedDocument(pageCount: Int, annotationEvery stride: Int) -> PDFDocument {
|
||||
let document = PDFDocument()
|
||||
|
||||
for pageIndex in 0..<pageCount {
|
||||
let page = PDFPage()
|
||||
document.insert(page, at: pageIndex)
|
||||
|
||||
guard pageIndex.isMultiple(of: stride) else { continue }
|
||||
let insertion = AnnotationFactory.noteInsertion(
|
||||
on: page,
|
||||
near: CGPoint(x: 120, y: 160),
|
||||
comment: "Note on page \(pageIndex + 1)",
|
||||
author: "Professor"
|
||||
)
|
||||
page.addAnnotation(insertion.annotation)
|
||||
}
|
||||
|
||||
return document
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user