44 lines
1.7 KiB
Swift
44 lines
1.7 KiB
Swift
import Testing
|
|
import SwiftUI
|
|
@testable import 康康
|
|
|
|
@MainActor
|
|
struct TrendInsightCacheTests {
|
|
|
|
private func bucket(values: [Double]) -> SeriesBucket {
|
|
let points = values.enumerated().map { i, v in
|
|
SeriesBucket.Point(id: "p\(i)",
|
|
date: Date(timeIntervalSince1970: Double(i) * 86_400),
|
|
value: v, status: .normal)
|
|
}
|
|
let line = SeriesBucket.SeriesLine(id: "glucose.fasting", seriesKey: "glucose.fasting",
|
|
label: nil, color: .blue, points: points,
|
|
referenceRange: 3.9...6.1)
|
|
return SeriesBucket(id: "glucose.fasting", title: "空腹血糖", unit: "mmol/L",
|
|
lines: [line], latestDate: .now, kind: .monitor)
|
|
}
|
|
|
|
@Test func fingerprintStableForSameData() {
|
|
let a = TrendInsightService.fingerprint(for: bucket(values: [5.2, 5.5]))
|
|
let b = TrendInsightService.fingerprint(for: bucket(values: [5.2, 5.5]))
|
|
#expect(a == b)
|
|
}
|
|
|
|
@Test func fingerprintChangesWhenDataChanges() {
|
|
let a = TrendInsightService.fingerprint(for: bucket(values: [5.2, 5.5]))
|
|
let b = TrendInsightService.fingerprint(for: bucket(values: [5.2, 5.5, 6.0]))
|
|
#expect(a != b)
|
|
}
|
|
|
|
@Test func dataLinesFormatsDateAndValue() {
|
|
let lines = TrendInsightService.dataLines(for: bucket(values: [5.2, 5.5]))
|
|
#expect(lines.contains("1970-01-01 5.2"))
|
|
#expect(lines.contains("1970-01-02 5.5"))
|
|
}
|
|
|
|
@Test func rangeTextRendersReference() {
|
|
#expect(TrendInsightService.rangeText(for: bucket(values: [5.2]))
|
|
== ",参考 3.9-6.1")
|
|
}
|
|
}
|