@@ -97,8 +97,7 @@ class RecommendTempBasalTests: XCTestCase {
9797 maxBasalRate: maxBasalRate,
9898 glucoseTargetRange: glucoseTargetRange,
9999 insulinSensitivity: insulinSensitivitySchedule,
100- basalRateSchedule: basalRateSchedule,
101- allowPredictiveTempBelowRange: false
100+ basalRateSchedule: basalRateSchedule
102101 )
103102
104103 XCTAssertNil ( dose)
@@ -113,8 +112,7 @@ class RecommendTempBasalTests: XCTestCase {
113112 maxBasalRate: maxBasalRate,
114113 glucoseTargetRange: glucoseTargetRange,
115114 insulinSensitivity: insulinSensitivitySchedule,
116- basalRateSchedule: basalRateSchedule,
117- allowPredictiveTempBelowRange: false
115+ basalRateSchedule: basalRateSchedule
118116 )
119117
120118 XCTAssertNil ( dose)
@@ -134,8 +132,7 @@ class RecommendTempBasalTests: XCTestCase {
134132 maxBasalRate: maxBasalRate,
135133 glucoseTargetRange: glucoseTargetRange,
136134 insulinSensitivity: insulinSensitivitySchedule,
137- basalRateSchedule: basalRateSchedule,
138- allowPredictiveTempBelowRange: false
135+ basalRateSchedule: basalRateSchedule
139136 )
140137
141138 XCTAssertEqual ( 0 , dose!. rate)
@@ -151,21 +148,7 @@ class RecommendTempBasalTests: XCTestCase {
151148 maxBasalRate: maxBasalRate,
152149 glucoseTargetRange: glucoseTargetRange,
153150 insulinSensitivity: insulinSensitivitySchedule,
154- basalRateSchedule: basalRateSchedule,
155- allowPredictiveTempBelowRange: false
156- )
157-
158- XCTAssertEqual ( 0 , dose!. rate)
159- XCTAssertEqual ( TimeInterval ( minutes: 30 ) , dose!. duration)
160-
161- dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
162- atDate: glucose. first!. startDate,
163- lastTempBasal: nil ,
164- maxBasalRate: maxBasalRate,
165- glucoseTargetRange: glucoseTargetRange,
166- insulinSensitivity: insulinSensitivitySchedule,
167- basalRateSchedule: basalRateSchedule,
168- allowPredictiveTempBelowRange: true
151+ basalRateSchedule: basalRateSchedule
169152 )
170153
171154 XCTAssertNil ( dose)
@@ -184,8 +167,7 @@ class RecommendTempBasalTests: XCTestCase {
184167 maxBasalRate: maxBasalRate,
185168 glucoseTargetRange: glucoseTargetRange,
186169 insulinSensitivity: insulinSensitivitySchedule,
187- basalRateSchedule: basalRateSchedule,
188- allowPredictiveTempBelowRange: true
170+ basalRateSchedule: basalRateSchedule
189171 )
190172
191173 XCTAssertEqual ( 0 , dose!. rate)
@@ -195,83 +177,26 @@ class RecommendTempBasalTests: XCTestCase {
195177 func testCorrectLowAtMin( ) {
196178 let glucose = loadGlucoseValueFixture ( " recommend_temp_basal_correct_low_at_min " )
197179
198- var dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
199- atDate: glucose. first!. startDate,
200- lastTempBasal: nil ,
201- maxBasalRate: maxBasalRate,
202- glucoseTargetRange: glucoseTargetRange,
203- insulinSensitivity: insulinSensitivitySchedule,
204- basalRateSchedule: basalRateSchedule,
205- allowPredictiveTempBelowRange: false
206- )
207-
208- XCTAssertEqualWithAccuracy ( 0.125 , dose!. rate, accuracy: 1.0 / 40.0 )
209- XCTAssertEqual ( TimeInterval ( minutes: 30 ) , dose!. duration)
210-
211- // Ignore due to existing dose
212- var lastTempBasal = DoseEntry (
213- type: . tempBasal,
214- startDate: glucose. first!. startDate. addingTimeInterval ( TimeInterval ( minutes: - 11 ) ) ,
215- endDate: glucose. first!. startDate. addingTimeInterval ( TimeInterval ( minutes: 19 ) ) ,
216- value: 0.125 ,
217- unit: . unitsPerHour
218- )
219-
220- dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
221- atDate: glucose. first!. startDate,
222- lastTempBasal: lastTempBasal,
223- maxBasalRate: maxBasalRate,
224- glucoseTargetRange: glucoseTargetRange,
225- insulinSensitivity: insulinSensitivitySchedule,
226- basalRateSchedule: basalRateSchedule,
227- allowPredictiveTempBelowRange: false
228- )
229-
230- XCTAssertNil ( dose)
231-
232180 // Cancel existing dose
233- lastTempBasal = DoseEntry (
234- type: . tempBasal,
235- startDate: glucose. first!. startDate. addingTimeInterval ( TimeInterval ( minutes: - 11 ) ) ,
236- endDate: glucose. first!. startDate. addingTimeInterval ( TimeInterval ( minutes: 19 ) ) ,
237- value: 1.225 ,
238- unit: . unitsPerHour
239- )
240-
241- dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
242- atDate: glucose. first!. startDate,
243- lastTempBasal: lastTempBasal,
244- maxBasalRate: maxBasalRate,
245- glucoseTargetRange: glucoseTargetRange,
246- insulinSensitivity: insulinSensitivitySchedule,
247- basalRateSchedule: basalRateSchedule,
248- allowPredictiveTempBelowRange: false
249- )
250-
251- XCTAssertEqualWithAccuracy ( 0.125 , dose!. rate, accuracy: 1.0 / 40.0 )
252- XCTAssertEqual ( TimeInterval ( minutes: 30 ) , dose!. duration)
253-
254- // Continue existing dose
255- lastTempBasal = DoseEntry (
181+ var lastTempBasal = DoseEntry (
256182 type: . tempBasal,
257183 startDate: glucose. first!. startDate. addingTimeInterval ( TimeInterval ( minutes: - 21 ) ) ,
258184 endDate: glucose. first!. startDate. addingTimeInterval ( TimeInterval ( minutes: 9 ) ) ,
259185 value: 0.125 ,
260186 unit: . unitsPerHour
261187 )
262188
263- dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
189+ var dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
264190 atDate: glucose. first!. startDate,
265191 lastTempBasal: lastTempBasal,
266192 maxBasalRate: maxBasalRate,
267193 glucoseTargetRange: glucoseTargetRange,
268194 insulinSensitivity: insulinSensitivitySchedule,
269- basalRateSchedule: basalRateSchedule,
270- allowPredictiveTempBelowRange: false
195+ basalRateSchedule: basalRateSchedule
271196 )
272197
273- XCTAssertEqualWithAccuracy ( 0.125 , dose!. rate, accuracy : 1.0 / 40.0 )
274- XCTAssertEqual ( TimeInterval ( minutes: 30 ) , dose!. duration)
198+ XCTAssertEqual ( 0 , dose!. rate)
199+ XCTAssertEqual ( TimeInterval ( minutes: 0 ) , dose!. duration)
275200
276201 // Allow predictive temp below range
277202 dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
@@ -280,8 +205,7 @@ class RecommendTempBasalTests: XCTestCase {
280205 maxBasalRate: maxBasalRate,
281206 glucoseTargetRange: glucoseTargetRange,
282207 insulinSensitivity: insulinSensitivitySchedule,
283- basalRateSchedule: basalRateSchedule,
284- allowPredictiveTempBelowRange: true
208+ basalRateSchedule: basalRateSchedule
285209 )
286210
287211 XCTAssertNil ( dose)
@@ -300,8 +224,7 @@ class RecommendTempBasalTests: XCTestCase {
300224 maxBasalRate: maxBasalRate,
301225 glucoseTargetRange: glucoseTargetRange,
302226 insulinSensitivity: insulinSensitivitySchedule,
303- basalRateSchedule: basalRateSchedule,
304- allowPredictiveTempBelowRange: true
227+ basalRateSchedule: basalRateSchedule
305228 )
306229
307230 XCTAssertEqual ( 0 , dose!. rate)
@@ -317,8 +240,7 @@ class RecommendTempBasalTests: XCTestCase {
317240 maxBasalRate: maxBasalRate,
318241 glucoseTargetRange: glucoseTargetRange,
319242 insulinSensitivity: insulinSensitivitySchedule,
320- basalRateSchedule: basalRateSchedule,
321- allowPredictiveTempBelowRange: false
243+ basalRateSchedule: basalRateSchedule
322244 )
323245
324246 XCTAssertEqual ( 0 , dose!. rate)
@@ -328,28 +250,14 @@ class RecommendTempBasalTests: XCTestCase {
328250 func testStartLowEndHigh( ) {
329251 let glucose = loadGlucoseValueFixture ( " recommend_temp_basal_start_low_end_high " )
330252
331- var dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
332- atDate: glucose. first!. startDate,
333- lastTempBasal: nil ,
334- maxBasalRate: maxBasalRate,
335- glucoseTargetRange: glucoseTargetRange,
336- insulinSensitivity: insulinSensitivitySchedule,
337- basalRateSchedule: basalRateSchedule,
338- allowPredictiveTempBelowRange: false
339- )
340-
341- XCTAssertEqual ( 0 , dose!. rate)
342- XCTAssertEqual ( TimeInterval ( minutes: 30 ) , dose!. duration)
343-
344253 // Allow predictive temp below range
345- dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
254+ var dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
346255 atDate: glucose. first!. startDate,
347256 lastTempBasal: nil ,
348257 maxBasalRate: maxBasalRate,
349258 glucoseTargetRange: glucoseTargetRange,
350259 insulinSensitivity: insulinSensitivitySchedule,
351- basalRateSchedule: basalRateSchedule,
352- allowPredictiveTempBelowRange: true
260+ basalRateSchedule: basalRateSchedule
353261 )
354262
355263 XCTAssertNil ( dose)
@@ -368,8 +276,7 @@ class RecommendTempBasalTests: XCTestCase {
368276 maxBasalRate: maxBasalRate,
369277 glucoseTargetRange: glucoseTargetRange,
370278 insulinSensitivity: insulinSensitivitySchedule,
371- basalRateSchedule: basalRateSchedule,
372- allowPredictiveTempBelowRange: true
279+ basalRateSchedule: basalRateSchedule
373280 )
374281
375282 XCTAssertEqual ( 0 , dose!. rate)
@@ -385,8 +292,7 @@ class RecommendTempBasalTests: XCTestCase {
385292 maxBasalRate: maxBasalRate,
386293 glucoseTargetRange: glucoseTargetRange,
387294 insulinSensitivity: insulinSensitivitySchedule,
388- basalRateSchedule: basalRateSchedule,
389- allowPredictiveTempBelowRange: false
295+ basalRateSchedule: basalRateSchedule
390296 )
391297
392298 XCTAssertEqual ( 3.0 , dose!. rate)
@@ -402,8 +308,7 @@ class RecommendTempBasalTests: XCTestCase {
402308 maxBasalRate: maxBasalRate,
403309 glucoseTargetRange: glucoseTargetRange,
404310 insulinSensitivity: insulinSensitivitySchedule,
405- basalRateSchedule: basalRateSchedule,
406- allowPredictiveTempBelowRange: false
311+ basalRateSchedule: basalRateSchedule
407312 )
408313
409314 XCTAssertEqualWithAccuracy ( 1.425 , dose!. rate, accuracy: 1.0 / 40.0 )
@@ -419,8 +324,7 @@ class RecommendTempBasalTests: XCTestCase {
419324 maxBasalRate: maxBasalRate,
420325 glucoseTargetRange: glucoseTargetRange,
421326 insulinSensitivity: insulinSensitivitySchedule,
422- basalRateSchedule: basalRateSchedule,
423- allowPredictiveTempBelowRange: false
327+ basalRateSchedule: basalRateSchedule
424328 )
425329
426330 XCTAssertEqualWithAccuracy ( 1.475 , dose!. rate, accuracy: 1.0 / 40.0 )
@@ -436,8 +340,7 @@ class RecommendTempBasalTests: XCTestCase {
436340 maxBasalRate: maxBasalRate,
437341 glucoseTargetRange: glucoseTargetRange,
438342 insulinSensitivity: self . insulinSensitivitySchedule,
439- basalRateSchedule: basalRateSchedule,
440- allowPredictiveTempBelowRange: false
343+ basalRateSchedule: basalRateSchedule
441344 )
442345
443346 XCTAssertEqual ( 3.0 , dose!. rate)
@@ -452,22 +355,37 @@ class RecommendTempBasalTests: XCTestCase {
452355 maxBasalRate: maxBasalRate,
453356 glucoseTargetRange: glucoseTargetRange,
454357 insulinSensitivity: insulinSensitivitySchedule,
455- basalRateSchedule: basalRateSchedule,
456- allowPredictiveTempBelowRange: false
358+ basalRateSchedule: basalRateSchedule
457359 )
458360
459361 XCTAssertEqualWithAccuracy ( 2.975 , dose!. rate, accuracy: 1.0 / 40.0 )
460362 XCTAssertEqual ( TimeInterval ( minutes: 30 ) , dose!. duration)
461363 }
462364
365+ func testVeryLowAndRising( ) {
366+ let glucose = loadGlucoseValueFixture ( " recommend_tamp_basal_very_low_end_in_range " )
367+
368+ let dose = DoseMath . recommendTempBasalFromPredictedGlucose ( glucose,
369+ atDate: glucose. first!. startDate,
370+ lastTempBasal: nil ,
371+ maxBasalRate: maxBasalRate,
372+ glucoseTargetRange: glucoseTargetRange,
373+ insulinSensitivity: self . insulinSensitivitySchedule,
374+ basalRateSchedule: basalRateSchedule
375+ )
376+
377+ XCTAssertEqual ( 0.0 , dose!. rate)
378+ XCTAssertEqual ( TimeInterval ( minutes: 30 ) , dose!. duration)
379+ }
380+
381+
463382 func testNoInputGlucose( ) {
464383 let dose = DoseMath . recommendTempBasalFromPredictedGlucose ( [ ] ,
465384 lastTempBasal: nil ,
466385 maxBasalRate: maxBasalRate,
467386 glucoseTargetRange: glucoseTargetRange,
468387 insulinSensitivity: insulinSensitivitySchedule,
469- basalRateSchedule: basalRateSchedule,
470- allowPredictiveTempBelowRange: false
388+ basalRateSchedule: basalRateSchedule
471389 )
472390
473391 XCTAssertNil ( dose)
@@ -728,4 +646,5 @@ class RecommendBolusTests: XCTestCase {
728646
729647 XCTAssertEqual ( 0 , dose)
730648 }
649+
731650}
0 commit comments