Files
ihatepdfs/tests/core/PDFRecentDocumentsTests.swift

59 lines
2.2 KiB
Swift
Raw Normal View History

import XCTest
@testable import IHatePDFsCore
final class PDFRecentDocumentsTests: XCTestCase {
func testFilteredPDFsKeepsExistingPDFsOnly() {
let pdf = URL(fileURLWithPath: "/Users/test/Documents/reading.pdf")
let upperPDF = URL(fileURLWithPath: "/Users/test/Documents/report.PDF")
let text = URL(fileURLWithPath: "/Users/test/Documents/notes.txt")
let result = PDFRecentDocuments.filteredPDFs(
from: [pdf, text, upperPDF],
limit: 10,
fileExists: { $0 == pdf || $0 == upperPDF }
)
XCTAssertEqual(result, [pdf, upperPDF])
}
func testFilteredPDFsDeduplicatesExcludesCurrentAndHonorsLimit() {
let first = URL(fileURLWithPath: "/Users/test/Documents/first.pdf")
let second = URL(fileURLWithPath: "/Users/test/Documents/second.pdf")
let third = URL(fileURLWithPath: "/Users/test/Documents/third.pdf")
let result = PDFRecentDocuments.filteredPDFs(
from: [first, second, first, third],
currentURL: second,
limit: 1,
fileExists: { _ in true }
)
XCTAssertEqual(result, [first])
}
func testProgressStoresPageByNormalizedDocumentKey() {
let url = URL(fileURLWithPath: "/Users/test/Documents/../Documents/reading.pdf")
let openedAt = Date(timeIntervalSince1970: 42)
let records = PDFRecentDocuments.updatedProgress(
[:],
url: url,
pageIndex: 8,
openedAt: openedAt
)
let progress = PDFRecentDocuments.progress(for: url, in: records)
XCTAssertEqual(progress?.pageIndex, 8)
XCTAssertEqual(progress?.openedAt, openedAt)
XCTAssertEqual(progress?.key, PDFRecentDocuments.documentKey(for: url))
}
func testProgressClampsSavedPageToAvailablePageCount() {
XCTAssertEqual(PDFRecentDocuments.clampedPageIndex(nil, pageCount: 20), 0)
XCTAssertEqual(PDFRecentDocuments.clampedPageIndex(-4, pageCount: 20), 0)
XCTAssertEqual(PDFRecentDocuments.clampedPageIndex(4, pageCount: 20), 4)
XCTAssertEqual(PDFRecentDocuments.clampedPageIndex(99, pageCount: 20), 19)
XCTAssertEqual(PDFRecentDocuments.clampedPageIndex(4, pageCount: 0), 0)
}
}