| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import Foundation
- import HealthKit
- import LoopKit
- import Testing
- @testable import Trio
- /// Pins the `PumpSettings` → `DeliveryLimits` mapping that
- /// `BaseDeviceDataManager.pumpManager.didSet` performs inline before calling
- /// `pumpManager.syncDeliveryLimits`. Keep this builder identical to the inline
- /// expression in `DeviceDataManager.swift` so a regression that re-introduces
- /// the default-collapse bug breaks here too.
- @Suite("Delivery Limits Sync Tests") struct DeliveryLimitsSyncTests {
- private let basalUnit = HKUnit.internationalUnitsPerHour
- private let bolusUnit = HKUnit.internationalUnit()
- private func makeSettings(maxBasal: Decimal, maxBolus: Decimal) -> PumpSettings {
- PumpSettings(insulinActionCurve: 6, maxBolus: maxBolus, maxBasal: maxBasal)
- }
- private func deliveryLimits(from settings: PumpSettings) -> DeliveryLimits {
- DeliveryLimits(
- maximumBasalRate: HKQuantity(unit: .internationalUnitsPerHour, doubleValue: Double(settings.maxBasal)),
- maximumBolus: HKQuantity(unit: .internationalUnit(), doubleValue: Double(settings.maxBolus))
- )
- }
- @Test("maxBasal maps to maximumBasalRate in U/hr") func testMaxBasalMapping() {
- let settings = makeSettings(maxBasal: 5.0, maxBolus: 10.0)
- let limits = deliveryLimits(from: settings)
- #expect(limits.maximumBasalRate?.doubleValue(for: basalUnit) == 5.0)
- }
- @Test("maxBolus maps to maximumBolus in U") func testMaxBolusMapping() {
- let settings = makeSettings(maxBasal: 5.0, maxBolus: 10.0)
- let limits = deliveryLimits(from: settings)
- #expect(limits.maximumBolus?.doubleValue(for: bolusUnit) == 10.0)
- }
- /// The derived limit must be the user's configured value, not the `PumpInitialSettings` default.
- @Test("User-configured limit is preserved, not collapsed to the 2 U/hr default") func testDoesNotFallBackToDefault() {
- let configuredMaxBasal: Decimal = 3.0
- let defaultMaxBasal = PumpConfig.PumpInitialSettings.default.maxBasalRateUnitsPerHour
- let settings = makeSettings(maxBasal: configuredMaxBasal, maxBolus: 10.0)
- let limits = deliveryLimits(from: settings)
- #expect(limits.maximumBasalRate?.doubleValue(for: basalUnit) == Double(configuredMaxBasal))
- #expect(limits.maximumBasalRate?.doubleValue(for: basalUnit) != defaultMaxBasal)
- }
- /// The derived limit must be the user's configured value, not the `PumpInitialSettings` default.
- @Test("User-configured bolus limit is preserved, not collapsed to the default") func testBolusDoesNotFallBackToDefault() {
- let configuredMaxBolus: Decimal = 25.0
- let defaultMaxBolus = PumpConfig.PumpInitialSettings.default.maxBolusUnits
- let settings = makeSettings(maxBasal: 3.0, maxBolus: configuredMaxBolus)
- let limits = deliveryLimits(from: settings)
- #expect(limits.maximumBolus?.doubleValue(for: bolusUnit) == Double(configuredMaxBolus))
- #expect(limits.maximumBolus?.doubleValue(for: bolusUnit) != defaultMaxBolus)
- }
- }
|