Files
kangkang/康康Tests/BenchmarkStoreTests.swift

46 lines
1.9 KiB
Swift

import Testing
import Foundation
@testable import
struct BenchmarkStoreTests {
/// suite, Swift Testing
private func freshDefaults(_ name: String) -> UserDefaults {
let suite = "test.kk.benchmark.\(name)"
let d = UserDefaults(suiteName: suite)!
d.removePersistentDomain(forName: suite)
return d
}
@Test func savesAndLoadsPerBackend() {
let d = freshDefaults("savesAndLoads")
let mnn = BenchmarkResult(backendLabel: "MNN · SME2", promptTokens: 30, genTokens: 80,
prefillTokensPerSecond: 120, decodeTokensPerSecond: 25,
totalSeconds: 4.2, date: .now)
let mlx = BenchmarkResult(backendLabel: "MLX · GPU", promptTokens: 30, genTokens: 80,
prefillTokensPerSecond: 300, decodeTokensPerSecond: 40,
totalSeconds: 2.5, date: .now)
BenchmarkService.save(mnn, defaults: d)
BenchmarkService.save(mlx, defaults: d)
let all = BenchmarkService.load(defaults: d)
#expect(all.count == 2)
#expect(all["MNN · SME2"]?.decodeTokensPerSecond == 25)
}
@Test func overwritesSameBackend() {
let d = freshDefaults("overwrites")
let old = BenchmarkResult(backendLabel: "MLX · GPU", promptTokens: 1, genTokens: 1,
prefillTokensPerSecond: 1, decodeTokensPerSecond: 1,
totalSeconds: 1, date: .now)
var new = old
new.decodeTokensPerSecond = 99
BenchmarkService.save(old, defaults: d)
BenchmarkService.save(new, defaults: d)
#expect(BenchmarkService.load(defaults: d)["MLX · GPU"]?.decodeTokensPerSecond == 99)
}
@Test func loadOnEmptyReturnsEmpty() {
#expect(BenchmarkService.load(defaults: freshDefaults("loadEmpty")).isEmpty)
}
}