BatteryConditionTests.swift 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // LoopFollow
  2. // BatteryConditionTests.swift
  3. import Foundation
  4. @testable import LoopFollow
  5. import Testing
  6. struct BatteryConditionTests {
  7. let cond = BatteryCondition()
  8. @Test("#fires when battery ≤ threshold")
  9. func firesBelowOrEqual() {
  10. let alarm = Alarm.battery(threshold: 20)
  11. let data = AlarmData.withBattery(20)
  12. #expect(cond.evaluate(alarm: alarm, data: data, now: .init()))
  13. }
  14. @Test("#does NOT fire when battery > threshold")
  15. func ignoresAbove() {
  16. let alarm = Alarm.battery(threshold: 20)
  17. let data = AlarmData.withBattery(55)
  18. #expect(!cond.evaluate(alarm: alarm, data: data, now: .init()))
  19. }
  20. @Test("#does NOT fire if no battery reading")
  21. func ignoresMissingReading() {
  22. let alarm = Alarm.battery(threshold: 20)
  23. let data = AlarmData.withBattery(nil)
  24. #expect(!cond.evaluate(alarm: alarm, data: data, now: .init()))
  25. }
  26. @Test("#does NOT fire if threshold is nil / zero")
  27. func ignoresBadConfig() {
  28. let alarm = Alarm.battery(threshold: nil)
  29. let data = AlarmData.withBattery(5)
  30. #expect(!cond.evaluate(alarm: alarm, data: data, now: .init()))
  31. }
  32. }