| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- //
- // PredictedGlucoseChartTests.swift
- // LoopTests
- //
- // Created by Nathaniel Hamming on 2020-09-29.
- // Copyright © 2020 LoopKit Authors. All rights reserved.
- //
- import XCTest
- import HealthKit
- import LoopKit
- import SwiftCharts
- @testable import LoopKitUI
- class PredictedGlucoseChartTests: XCTestCase {
- private let yAxisStepSizeMGDL: Double = 40
-
- func testClampingPredictedGlucoseValues40To400() {
- let glucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 40), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 120), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 400), startDate: Date())
- ]
- let predictedGlucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 0), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 40), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 280), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 380), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 400), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 480), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 580), startDate: Date())
- ]
- let predictedGlucoseChart = PredictedGlucoseChart(predictedGlucoseBounds: .default,
- yAxisStepSizeMGDLOverride: yAxisStepSizeMGDL)
- predictedGlucoseChart.setGlucoseValues(glucoseValues)
- predictedGlucoseChart.setPredictedGlucoseValues(predictedGlucoseValues)
- let predictedGlucosePoints = predictedGlucoseChart.predictedGlucosePoints
- XCTAssertEqual(predictedGlucosePoints[0].y.scalar, 40)
- XCTAssertEqual(predictedGlucosePoints[1].y.scalar, 40)
- XCTAssertEqual(predictedGlucosePoints[2].y.scalar, 280)
- XCTAssertEqual(predictedGlucosePoints[3].y.scalar, 380)
- XCTAssertEqual(predictedGlucosePoints[4].y.scalar, 400)
- XCTAssertEqual(predictedGlucosePoints[5].y.scalar, 400)
- XCTAssertEqual(predictedGlucosePoints[6].y.scalar, 400)
- }
- func testClampingPredictedGlucoseValues40To600() {
- // the max expected value is 600, but the y-axis will go to 680 due to the step size
- let glucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 40), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 120), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 350), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 480), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600), startDate: Date())
- ]
- let predictedGlucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 0), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 40), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 300), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 450), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 750), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 1000), startDate: Date())
- ]
- let predictedGlucoseChart = PredictedGlucoseChart(predictedGlucoseBounds: .default,
- yAxisStepSizeMGDLOverride: yAxisStepSizeMGDL)
- predictedGlucoseChart.setGlucoseValues(glucoseValues)
- predictedGlucoseChart.setPredictedGlucoseValues(predictedGlucoseValues)
- let predictedGlucosePoints = predictedGlucoseChart.predictedGlucosePoints
- XCTAssertEqual(predictedGlucosePoints[0].y.scalar, 40)
- XCTAssertEqual(predictedGlucosePoints[1].y.scalar, 40)
- XCTAssertEqual(predictedGlucosePoints[2].y.scalar, 300)
- XCTAssertEqual(predictedGlucosePoints[3].y.scalar, 450)
- XCTAssertEqual(predictedGlucosePoints[4].y.scalar, 600)
- XCTAssertEqual(predictedGlucosePoints[5].y.scalar, 680)
- XCTAssertEqual(predictedGlucosePoints[6].y.scalar, 680)
- }
- func testClampingPredictedGlucoseValues0To400() {
- let glucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 0), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 120), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 250), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 400), startDate: Date())
- ]
- let predictedGlucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: -100), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 0), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 100), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 380), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 400), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 480), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 580), startDate: Date())
- ]
- let predictedGlucoseChart = PredictedGlucoseChart(predictedGlucoseBounds: .default,
- yAxisStepSizeMGDLOverride: yAxisStepSizeMGDL)
- predictedGlucoseChart.setGlucoseValues(glucoseValues)
- predictedGlucoseChart.setPredictedGlucoseValues(predictedGlucoseValues)
- let predictedGlucosePoints = predictedGlucoseChart.predictedGlucosePoints
- XCTAssertEqual(predictedGlucosePoints[0].y.scalar, 0)
- XCTAssertEqual(predictedGlucosePoints[1].y.scalar, 0)
- XCTAssertEqual(predictedGlucosePoints[2].y.scalar, 100)
- XCTAssertEqual(predictedGlucosePoints[3].y.scalar, 380)
- XCTAssertEqual(predictedGlucosePoints[4].y.scalar, 400)
- XCTAssertEqual(predictedGlucosePoints[5].y.scalar, 400)
- XCTAssertEqual(predictedGlucosePoints[6].y.scalar, 400)
- }
-
- func testClampingPredictedGlucoseValues0To600() {
- let glucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 0), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 120), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 350), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 480), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600), startDate: Date())
- ]
- let predictedGlucoseValues = [
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: -100), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 0), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 150), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 350), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 750), startDate: Date()),
- GlucoseValueTestable(quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 1000), startDate: Date())
- ]
- let predictedGlucoseChart = PredictedGlucoseChart(predictedGlucoseBounds: .default,
- yAxisStepSizeMGDLOverride: yAxisStepSizeMGDL)
- predictedGlucoseChart.setGlucoseValues(glucoseValues)
- predictedGlucoseChart.setPredictedGlucoseValues(predictedGlucoseValues)
- let predictedGlucosePoints = predictedGlucoseChart.predictedGlucosePoints
- XCTAssertEqual(predictedGlucosePoints[0].y.scalar, 0)
- XCTAssertEqual(predictedGlucosePoints[1].y.scalar, 0)
- XCTAssertEqual(predictedGlucosePoints[2].y.scalar, 150)
- XCTAssertEqual(predictedGlucosePoints[3].y.scalar, 350)
- XCTAssertEqual(predictedGlucosePoints[4].y.scalar, 600)
- XCTAssertEqual(predictedGlucosePoints[5].y.scalar, 600)
- XCTAssertEqual(predictedGlucosePoints[6].y.scalar, 600)
- }
- }
- struct GlucoseValueTestable: GlucoseValue {
- var quantity: HKQuantity
-
- var startDate: Date
- }
|