33 lines
1.2 KiB
Swift
33 lines
1.2 KiB
Swift
import Testing
|
|
@testable import 康康
|
|
|
|
struct VLPromptsOCRTests {
|
|
|
|
@Test func emptyOCRKeepsPromptClean() {
|
|
let p = VLPrompts.reportExtraction(ocrText: "")
|
|
#expect(!p.contains("OCR 参考文本"))
|
|
#expect(!p.contains("{{OCR_SECTION}}"))
|
|
#expect(p.contains("现在请识别图片并输出 JSON"))
|
|
}
|
|
|
|
@Test func ocrTextIsInjectedBeforeFinalInstruction() {
|
|
let p = VLPrompts.reportExtraction(ocrText: "尿酸 486 208-428 μmol/L")
|
|
#expect(p.contains("OCR 参考文本"))
|
|
#expect(p.contains("尿酸 486"))
|
|
let ocrPos = p.range(of: "尿酸 486")!.lowerBound
|
|
let endPos = p.range(of: "现在请识别图片并输出 JSON")!.lowerBound
|
|
#expect(ocrPos < endPos)
|
|
}
|
|
|
|
@Test func clipKeepsShortTextIntact() {
|
|
#expect(VLPrompts.clipOCR("短文本") == "短文本")
|
|
}
|
|
|
|
@Test func clipCutsAtLineBoundary() {
|
|
let long = Array(repeating: "指标行 1.23 mmol/L", count: 400).joined(separator: "\n")
|
|
let clipped = VLPrompts.clipOCR(long, limit: 200)
|
|
#expect(clipped.count < 260)
|
|
#expect(clipped.hasSuffix("(后续内容过长已截断)"))
|
|
}
|
|
}
|