„Am Netz" beantwortet die Frage nicht, die man hat, wenn der Ladestand stehen bleibt: lädt es gerade nicht, weil das Limit erreicht ist, oder stimmt etwas nicht? Jetzt steht es dort — lädt, angehalten wegen Ladelimit mit der Prozentzahl, am Netz ohne zu laden, oder Akkubetrieb. Der Vergleich mit dem Limit hat zwei Punkte Toleranz: der Ladestand pendelt um die Grenze, und auf das Prozent genau zu vergleichen hieße, den Grund die halbe Zeit zu verschweigen. Weit unter dem Limit wird dagegen kein Limit-Halt behauptet — dann steht das Laden aus einem anderen Grund, und einen falschen zu nennen wäre schlimmer als keinen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
58 lines
2.3 KiB
Swift
58 lines
2.3 KiB
Swift
import Testing
|
|
@testable import MetricsProvider
|
|
|
|
// „Am Netz" allein beantwortet die Frage nicht, die man hat, wenn der
|
|
// Ladestand stehen bleibt: lädt es gerade nicht, weil das Limit erreicht ist,
|
|
// oder stimmt etwas nicht?
|
|
|
|
@Suite("Ladezustand in Worten")
|
|
struct ChargeActivityTests {
|
|
|
|
@Test("Lädt schlägt alles andere")
|
|
func chargingWins() {
|
|
#expect(ChargeActivity.resolve(isCharging: true, isPluggedIn: true,
|
|
charge: 0.5, limit: 85) == .charging)
|
|
}
|
|
|
|
@Test("Ohne Netzteil ist es Akkubetrieb")
|
|
func unpluggedIsOnBattery() {
|
|
#expect(ChargeActivity.resolve(isCharging: false, isPluggedIn: false,
|
|
charge: 0.5, limit: 85) == .onBattery)
|
|
}
|
|
|
|
@Test("Am Limit steht der Grund dabei")
|
|
func atLimitIsExplained() {
|
|
#expect(ChargeActivity.resolve(isCharging: false, isPluggedIn: true,
|
|
charge: 0.85, limit: 85) == .pausedAtLimit(85))
|
|
}
|
|
|
|
@Test("Knapp unter dem Limit zählt auch")
|
|
func justBelowTheLimitCounts() {
|
|
// Der Ladestand pendelt um die Grenze; auf das Prozent genau zu
|
|
// vergleichen hieße, den Grund die halbe Zeit zu verschweigen.
|
|
#expect(ChargeActivity.resolve(isCharging: false, isPluggedIn: true,
|
|
charge: 0.84, limit: 85) == .pausedAtLimit(85))
|
|
}
|
|
|
|
@Test("Weit unter dem Limit ist es kein Limit-Halt")
|
|
func wellBelowIsNotTheLimit() {
|
|
// Dann steht das Laden aus einem anderen Grund — etwa weil macOS den
|
|
// Akku schont. Einen falschen Grund zu nennen wäre schlimmer als
|
|
// keinen.
|
|
#expect(ChargeActivity.resolve(isCharging: false, isPluggedIn: true,
|
|
charge: 0.40, limit: 85) == .pluggedNotCharging)
|
|
}
|
|
|
|
@Test("Ohne bekanntes Limit bleibt es beim schlichten Befund")
|
|
func withoutLimitStaysPlain() {
|
|
#expect(ChargeActivity.resolve(isCharging: false, isPluggedIn: true,
|
|
charge: 0.99, limit: nil) == .pluggedNotCharging)
|
|
}
|
|
|
|
@Test("Ein Limit von hundert ist kein Limit")
|
|
func hundredIsNoLimit() {
|
|
#expect(ChargeActivity.resolve(isCharging: false, isPluggedIn: true,
|
|
charge: 1.0, limit: 100) == .pluggedNotCharging)
|
|
}
|
|
}
|