| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- //
- // GlucoseRangeTests.swift
- // LoopKitTests
- //
- // Created by Nathaniel Hamming on 2021-03-16.
- // Copyright © 2021 LoopKit Authors. All rights reserved.
- //
- import XCTest
- import HealthKit
- @testable import LoopKit
- class GlucoseRangeTests: XCTestCase {
- 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
- }()
- func testInitializerDouble() throws {
- let unit = HKUnit.milligramsPerDeciliter
- let glucoseRange = GlucoseRange(
- minValue: 75,
- maxValue: 90,
- unit: unit)
- let expectedRange = DoubleRange(minValue: 75, maxValue: 90)
- XCTAssertEqual(glucoseRange.range, expectedRange)
- XCTAssertEqual(glucoseRange.unit, unit)
- }
- func testInitializerGlucoseRange() throws {
- let unit = HKUnit.milligramsPerDeciliter
- let expectedRange = DoubleRange(minValue: 75, maxValue: 90)
- let glucoseRange = GlucoseRange(
- range: expectedRange,
- unit: unit)
- XCTAssertEqual(glucoseRange.range, expectedRange)
- XCTAssertEqual(glucoseRange.unit, unit)
- }
- func testQuantityRange() throws {
- let unit = HKUnit.milligramsPerDeciliter
- let range = DoubleRange(minValue: 75, maxValue: 90)
- let glucoseRange = GlucoseRange(
- range: range,
- unit: unit)
- let expectedQuantityRange = range.quantityRange(for: unit)
- XCTAssertEqual(glucoseRange.quantityRange, expectedQuantityRange)
- }
- let encodedString = """
- {
- "bloodGlucoseUnit" : "mg/dL",
- "range" : {
- "maxValue" : 90,
- "minValue" : 75
- }
- }
- """
- func testEncoding() throws {
- let glucoseRange = GlucoseRange(
- minValue: 75,
- maxValue: 90,
- unit: .milligramsPerDeciliter)
- let data = try encoder.encode(glucoseRange)
- XCTAssertEqual(encodedString, String(data: data, encoding: .utf8)!)
- }
- func testDecoding() throws {
- let data = encodedString.data(using: .utf8)!
- let decoded = try decoder.decode(GlucoseRange.self, from: data)
- let expected = GlucoseRange(
- minValue: 75,
- maxValue: 90,
- unit: .milligramsPerDeciliter)
- XCTAssertEqual(expected, decoded)
- XCTAssertEqual(decoded.range, expected.range)
- XCTAssertEqual(decoded.unit, expected.unit)
- }
- func testRawValue() throws {
- let glucoseRange = GlucoseRange(
- minValue: 75,
- maxValue: 90,
- unit: .milligramsPerDeciliter)
- var expectedRawValue: [String:Any] = [:]
- expectedRawValue["bloodGlucoseUnit"] = "mg/dL"
- expectedRawValue["range"] = DoubleRange(minValue: 75, maxValue: 90).rawValue
- XCTAssertEqual(glucoseRange.rawValue["bloodGlucoseUnit"] as? String, expectedRawValue["bloodGlucoseUnit"] as? String)
- XCTAssertEqual(glucoseRange.rawValue["range"] as? DoubleRange.RawValue, expectedRawValue["range"] as? DoubleRange.RawValue)
- }
- func testInitializeFromRawValue() throws {
- var rawValue: [String:Any] = [:]
- rawValue["bloodGlucoseUnit"] = "mg/dL"
- rawValue["range"] = DoubleRange(minValue: 80, maxValue: 100).rawValue
- let glucoseRange = GlucoseRange(rawValue: rawValue)
- let expectedRange = DoubleRange(minValue: 80, maxValue: 100)
- XCTAssertEqual(glucoseRange?.range, expectedRange)
- XCTAssertEqual(glucoseRange?.unit, .milligramsPerDeciliter)
- }
- }
|