feat: open-source 小浣熊阅读 for iOS

This commit is contained in:
Aminark
2026-10-14 11:37:36 +08:00
commit ffc9e9d91d
193 changed files with 41382 additions and 0 deletions
@@ -0,0 +1,37 @@
import Foundation
import Testing
@testable import LegadoCore
@Suite struct AddBookURLServiceTests {
@Test func explicitOriginHasPriority() {
var exact = BookSource(bookSourceUrl: "https://site.example", bookSourceName: "域名源")
exact.customOrder = 0
var explicit = BookSource(bookSourceUrl: "https://chosen.example", bookSourceName: "指定源")
explicit.customOrder = 9
let matched = AddBookURLService.matchingSource(
bookURL: "https://site.example/book/1,{\"origin\":\"https://chosen.example\"}",
sources: [exact, explicit]
)
#expect(matched?.bookSourceUrl == explicit.bookSourceUrl)
}
@Test func exactBasePrecedesPattern() {
var pattern = BookSource(bookSourceUrl: "https://fallback.example", bookSourceName: "正则源")
pattern.bookUrlPattern = #"https://site\.example/book/.*"#
pattern.customOrder = 0
var exact = BookSource(bookSourceUrl: "https://site.example", bookSourceName: "域名源")
exact.customOrder = 10
let matched = AddBookURLService.matchingSource(bookURL: "https://site.example/book/1", sources: [pattern, exact])
#expect(matched?.bookSourceUrl == exact.bookSourceUrl)
}
@Test func patternRequiresWholeURLMatchAndEnabledSource() {
var disabled = BookSource(bookSourceUrl: "https://disabled.example", bookSourceName: "停用")
disabled.bookUrlPattern = #"https://site\.example/book/.*"#; disabled.enabled = false
var enabled = BookSource(bookSourceUrl: "https://enabled.example", bookSourceName: "启用")
enabled.bookUrlPattern = #"https://site\.example/book/\d+"#
let matched = AddBookURLService.matchingSource(bookURL: "https://site.example/book/12", sources: [disabled, enabled])
#expect(matched?.bookSourceUrl == enabled.bookSourceUrl)
#expect(AddBookURLService.matchingSource(bookURL: "https://site.example/book/12/extra", sources: [enabled]) == nil)
}
}