| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- //
- // GlucoseValueTests.swift
- // LoopKitTests
- //
- // Created by Darin Krauss on 5/4/20.
- // Copyright © 2020 LoopKit Authors. All rights reserved.
- //
- import XCTest
- import HealthKit
- @testable import LoopKit
- class SimpleGlucoseValueTests: XCTestCase {
- func testInitializerMilligramsPerDeciliter() {
- let startDate = Date()
- let endDate = Date().addingTimeInterval(.hours(1))
- let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 234.5)
- let simpleGlucoseValue = SimpleGlucoseValue(startDate: startDate, endDate: endDate, quantity: quantity)
- XCTAssertEqual(simpleGlucoseValue.startDate, startDate)
- XCTAssertEqual(simpleGlucoseValue.endDate, endDate)
- XCTAssertEqual(simpleGlucoseValue.quantity, quantity)
- }
-
- func testInitializerMillimolesPerLiter() {
- let startDate = Date()
- let endDate = Date().addingTimeInterval(.hours(1))
- let quantity = HKQuantity(unit: .millimolesPerLiter, doubleValue: 12.3)
- let simpleGlucoseValue = SimpleGlucoseValue(startDate: startDate, endDate: endDate, quantity: quantity)
- XCTAssertEqual(simpleGlucoseValue.startDate, startDate)
- XCTAssertEqual(simpleGlucoseValue.endDate, endDate)
- XCTAssertEqual(simpleGlucoseValue.quantity, quantity)
- }
-
- func testInitializerMissingEndDate() {
- let startDate = Date()
- let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 234.5)
- let simpleGlucoseValue = SimpleGlucoseValue(startDate: startDate, quantity: quantity)
- XCTAssertEqual(simpleGlucoseValue.startDate, startDate)
- XCTAssertEqual(simpleGlucoseValue.endDate, startDate)
- XCTAssertEqual(simpleGlucoseValue.quantity, quantity)
- }
-
- func testInitializerGlucoseValue() {
- let startDate = Date()
- let endDate = Date().addingTimeInterval(.hours(1))
- let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 234.5)
- let simpleGlucoseValue = SimpleGlucoseValue(SimpleGlucoseValue(startDate: startDate, endDate: endDate, quantity: quantity))
- XCTAssertEqual(simpleGlucoseValue.startDate, startDate)
- XCTAssertEqual(simpleGlucoseValue.endDate, endDate)
- XCTAssertEqual(simpleGlucoseValue.quantity, quantity)
- }
- }
- class SimpleGlucoseValueCodableTests: XCTestCase {
- func testCodableMilligramsPerDeciliter() throws {
- try assertSimpleGlucoseValueCodable(SimpleGlucoseValue(startDate: dateFormatter.date(from: "2020-05-14T22:00:03Z")!,
- endDate: dateFormatter.date(from: "2020-05-14T23:00:03Z")!,
- quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 234.5)),
- encodesJSON: """
- {
- "endDate" : "2020-05-14T23:00:03Z",
- "quantity" : 234.5,
- "quantityUnit" : "mg/dL",
- "startDate" : "2020-05-14T22:00:03Z"
- }
- """
- )
- }
-
- func testCodableMillimolesPerLiter() throws {
- try assertSimpleGlucoseValueCodable(SimpleGlucoseValue(startDate: dateFormatter.date(from: "2020-05-14T14:05:03Z")!,
- endDate: dateFormatter.date(from: "2020-05-14T15:05:03Z")!,
- quantity: HKQuantity(unit: .millimolesPerLiter, doubleValue: 13.2)),
- encodesJSON: """
- {
- "endDate" : "2020-05-14T15:05:03Z",
- "quantity" : 237.80576160007135,
- "quantityUnit" : "mg/dL",
- "startDate" : "2020-05-14T14:05:03Z"
- }
- """
- )
- }
-
- private func assertSimpleGlucoseValueCodable(_ original: SimpleGlucoseValue, encodesJSON string: String) throws {
- let data = try encoder.encode(original)
- XCTAssertEqual(String(data: data, encoding: .utf8), string)
- let decoded = try decoder.decode(SimpleGlucoseValue.self, from: data)
- XCTAssertEqual(decoded, original)
- }
-
- private let dateFormatter = ISO8601DateFormatter()
-
- private let encoder: JSONEncoder = {
- let encoder = JSONEncoder()
- encoder.outputFormatting = [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]
- encoder.dateEncodingStrategy = .iso8601
- return encoder
- }()
-
- private let decoder: JSONDecoder = {
- let decoder = JSONDecoder()
- decoder.dateDecodingStrategy = .iso8601
- return decoder
- }()
- }
- class PredictedGlucoseValueCodableTests: XCTestCase {
- func testCodableMilligramsPerDeciliter() throws {
- try assertPredictedGlucoseValueCodable(PredictedGlucoseValue(startDate: dateFormatter.date(from: "2020-05-14T22:38:26Z")!,
- quantity: HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 234.5)),
- encodesJSON: """
- {
- "quantity" : 234.5,
- "quantityUnit" : "mg/dL",
- "startDate" : "2020-05-14T22:38:26Z"
- }
- """
- )
- }
-
- func testCodableMillimolesPerLiter() throws {
- try assertPredictedGlucoseValueCodable(PredictedGlucoseValue(startDate: dateFormatter.date(from: "2020-05-14T21:23:33Z")!,
- quantity: HKQuantity(unit: .millimolesPerLiter, doubleValue: 12.3)),
- encodesJSON: """
- {
- "quantity" : 221.59173240006652,
- "quantityUnit" : "mg/dL",
- "startDate" : "2020-05-14T21:23:33Z"
- }
- """
- )
- }
-
- private func assertPredictedGlucoseValueCodable(_ original: PredictedGlucoseValue, encodesJSON string: String) throws {
- let data = try encoder.encode(original)
- XCTAssertEqual(String(data: data, encoding: .utf8), string)
- let decoded = try decoder.decode(PredictedGlucoseValue.self, from: data)
- XCTAssertEqual(decoded, original)
- }
-
- private let dateFormatter = ISO8601DateFormatter()
-
- private let encoder: JSONEncoder = {
- let encoder = JSONEncoder()
- encoder.outputFormatting = [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]
- encoder.dateEncodingStrategy = .iso8601
- return encoder
- }()
-
- private let decoder: JSONDecoder = {
- let decoder = JSONDecoder()
- decoder.dateDecodingStrategy = .iso8601
- return decoder
- }()
- }
|