@@ -96,12 +96,15 @@ extension TestingScenariosManagerRequirements {
96
96
// MARK: - Implementation details
97
97
98
98
private enum ScenarioLoadingError : LocalizedError {
99
- case noTestingManagersEnabled
99
+ case noTestingCGMManagerEnabled
100
+ case noTestingPumpManagerEnabled
100
101
101
102
var errorDescription : String ? {
102
103
switch self {
103
- case . noTestingManagersEnabled:
104
- return " Testing pump and CGM managers must be enabled to load scenarios "
104
+ case . noTestingCGMManagerEnabled:
105
+ return " Testing CGM manager must be enabled to load CGM scenarios "
106
+ case . noTestingPumpManagerEnabled:
107
+ return " Testing pump manager must be enabled to load pump scenarios "
105
108
}
106
109
}
107
110
}
@@ -186,13 +189,28 @@ extension TestingScenariosManagerRequirements {
186
189
log. error ( " %{public}@ " , String ( describing: error) )
187
190
completion ( error)
188
191
}
189
-
190
- guard
191
- let pumpManager = deviceManager. pumpManager as? TestingPumpManager ,
192
- let cgmManager = deviceManager. cgmManager as? TestingCGMManager
193
- else {
194
- bail ( with: ScenarioLoadingError . noTestingManagersEnabled)
195
- return
192
+
193
+ let instance = scenario. instantiate ( )
194
+
195
+ var testingCGMManager : TestingCGMManager ?
196
+ var testingPumpManager : TestingPumpManager ?
197
+
198
+ if instance. hasCGMData {
199
+ if let cgmManager = deviceManager. cgmManager as? TestingCGMManager {
200
+ testingCGMManager = cgmManager
201
+ } else {
202
+ bail ( with: ScenarioLoadingError . noTestingCGMManagerEnabled)
203
+ return
204
+ }
205
+ }
206
+
207
+ if instance. hasPumpData {
208
+ if let pumpManager = deviceManager. pumpManager as? TestingPumpManager {
209
+ testingPumpManager = pumpManager
210
+ } else {
211
+ bail ( with: ScenarioLoadingError . noTestingPumpManagerEnabled)
212
+ return
213
+ }
196
214
}
197
215
198
216
wipeExistingData { error in
@@ -201,14 +219,12 @@ extension TestingScenariosManagerRequirements {
201
219
return
202
220
}
203
221
204
- let instance = scenario. instantiate ( )
205
-
206
222
self . deviceManager. carbStore. addCarbEntries ( instance. carbEntries) { result in
207
223
switch result {
208
224
case . success( _) :
209
- pumpManager . reservoirFillFraction = 1.0
210
- pumpManager . injectPumpEvents ( instance. pumpEvents)
211
- cgmManager . injectGlucoseSamples ( instance. pastGlucoseSamples, futureSamples: instance. futureGlucoseSamples)
225
+ testingPumpManager ? . reservoirFillFraction = 1.0
226
+ testingPumpManager ? . injectPumpEvents ( instance. pumpEvents)
227
+ testingCGMManager ? . injectGlucoseSamples ( instance. pastGlucoseSamples, futureSamples: instance. futureGlucoseSamples)
212
228
self . activeScenario = scenario
213
229
completion ( nil )
214
230
case . failure( let error) :
0 commit comments