| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- //
- // GlucoseThresholdTests.swift
- // LoopKitTests
- //
- // Created by Darin Krauss on 8/24/19.
- // Copyright © 2019 LoopKit Authors. All rights reserved.
- //
- import XCTest
- import HealthKit
- @testable import LoopKit
- class GlucoseThresholdTests: XCTestCase {
-
- func testInitializer() {
- let glucoseThreshold = GlucoseThreshold(unit: HKUnit.gram(), value: 1.23)
- XCTAssertEqual(glucoseThreshold.value, 1.23)
- XCTAssertEqual(glucoseThreshold.unit, HKUnit.gram())
- }
-
- func testInitializerWithRawValueValid() {
- let rawValue: GlucoseThreshold.RawValue = [
- "units": "g",
- "value": 1.23
- ]
- let glucoseThreshold = GlucoseThreshold(rawValue: rawValue)
- XCTAssertNotNil(glucoseThreshold)
- XCTAssertEqual(glucoseThreshold!.value, 1.23)
- XCTAssertEqual(glucoseThreshold!.unit, HKUnit.gram())
- }
-
- func testInitializerWithRawValueWithValueMissing() {
- let rawValue: GlucoseThreshold.RawValue = [
- "units": "g"
- ]
- XCTAssertNil(GlucoseThreshold(rawValue: rawValue))
- }
-
- func testInitializerWithRawValueWithValueNotDouble() {
- let rawValue: GlucoseThreshold.RawValue = [
- "units": "g",
- "value": "g"
- ]
- XCTAssertNil(GlucoseThreshold(rawValue: rawValue))
- }
-
- func testInitializerWithRawValueWithUnitMissing() {
- let rawValue: GlucoseThreshold.RawValue = [
- "value": 1.23
- ]
- XCTAssertNil(GlucoseThreshold(rawValue: rawValue))
- }
-
- func testInitializerWithRawValueWithUnitNotString() {
- let rawValue: GlucoseThreshold.RawValue = [
- "units": 1.23,
- "value": 1.23
- ]
- XCTAssertNil(GlucoseThreshold(rawValue: rawValue))
- }
-
- func testQuantity() {
- let glucoseThreshold = GlucoseThreshold(unit: HKUnit.gram(), value: 1.23)
- XCTAssertEqual(glucoseThreshold.quantity, HKQuantity(unit: HKUnit.gram(), doubleValue: 1.23))
- }
-
- func testRawValue() {
- let glucoseThreshold = GlucoseThreshold(unit: HKUnit.gram(), value: 1.23)
- XCTAssertEqual(glucoseThreshold.rawValue.count, 2)
- XCTAssertEqual(glucoseThreshold.rawValue["units"] as! String, "g")
- XCTAssertEqual(glucoseThreshold.rawValue["value"] as! Double, 1.23)
- }
- func testConvertTo() {
- let glucoseThresholdMMOLL = GlucoseThreshold(unit: .millimolesPerLiter, value: 4.4)
- let glucoseThresholdMGDL = glucoseThresholdMMOLL.convertTo(unit: .milligramsPerDeciliter)
- XCTAssertEqual(glucoseThresholdMGDL.unit, .milligramsPerDeciliter)
- XCTAssertEqual(glucoseThresholdMGDL.value, HKQuantity(unit: .millimolesPerLiter, doubleValue: glucoseThresholdMMOLL.value).doubleValue(for: .milligramsPerDeciliter))
- }
- }
- class GlucoseThresholdCodableTests: XCTestCase {
- func testCodableMilligramsPerDeciliter() throws {
- try assertGlucoseThresholdCodable(GlucoseThreshold(unit: .milligramsPerDeciliter, value: 123),
- encodesJSON: """
- {
- "unit" : "mg/dL",
- "value" : 123
- }
- """
- )
- }
- func testCodableMillimolesPerLiter() throws {
- try assertGlucoseThresholdCodable(GlucoseThreshold(unit: .millimolesPerLiter, value: 6.5),
- encodesJSON: """
- {
- "unit" : "mmol<180.1558800000541>/L",
- "value" : 6.5
- }
- """
- )
- }
- private func assertGlucoseThresholdCodable(_ original: GlucoseThreshold, encodesJSON string: String) throws {
- let data = try encoder.encode(original)
- XCTAssertEqual(String(data: data, encoding: .utf8), string)
- let decoded = try decoder.decode(GlucoseThreshold.self, from: data)
- XCTAssertEqual(decoded, original)
- }
- private let encoder: JSONEncoder = {
- let encoder = JSONEncoder()
- encoder.outputFormatting = [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]
- return encoder
- }()
- private let decoder = JSONDecoder()
- }
|