GlucoseTests.swift 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. //
  2. // GlucoseTests.swift
  3. // xDripG5
  4. //
  5. // Created by Nate Racklyeft on 8/6/16.
  6. // Copyright © 2016 Nathan Racklyeft. All rights reserved.
  7. //
  8. import XCTest
  9. import HealthKit
  10. @testable import CGMBLEKit
  11. class GlucoseTests: XCTestCase {
  12. var timeMessage: TransmitterTimeRxMessage!
  13. var calendar = Calendar(identifier: .gregorian)
  14. var activationDate: Date!
  15. override func setUp() {
  16. super.setUp()
  17. let data = Data(hexadecimalString: "2500470272007cff710001000000fa1d")!
  18. timeMessage = TransmitterTimeRxMessage(data: data)!
  19. calendar.timeZone = TimeZone(identifier: "UTC")!
  20. activationDate = calendar.date(from: DateComponents(year: 2016, month: 10, day: 1))!
  21. }
  22. func testMessageData() {
  23. let data = Data(hexadecimalString: "3100680a00008a715700cc0006ffc42a")!
  24. let message = GlucoseRxMessage(data: data)!
  25. let glucose = Glucose(transmitterID: "123456", glucoseMessage: message, timeMessage: timeMessage, activationDate: activationDate)
  26. XCTAssertEqual(TransmitterStatus.ok, glucose.status)
  27. XCTAssertEqual(calendar.date(from: DateComponents(year: 2016, month: 12, day: 6, hour: 7, minute: 51, second: 38))!, glucose.readDate)
  28. XCTAssertEqual(calendar.date(from: DateComponents(year: 2016, month: 12, day: 26, hour: 11, minute: 16, second: 12))!, glucose.sessionStartDate)
  29. XCTAssertFalse(glucose.isDisplayOnly)
  30. XCTAssertEqual(204, glucose.glucose?.doubleValue(for: .milligramsPerDeciliter))
  31. XCTAssertEqual(.known(.ok), glucose.state)
  32. XCTAssertEqual(-1, glucose.trend)
  33. }
  34. func testNegativeTrend() {
  35. let data = Data(hexadecimalString: "31006f0a0000be7957007a0006e4818d")!
  36. let message = GlucoseRxMessage(data: data)!
  37. let glucose = Glucose(transmitterID: "123456", glucoseMessage: message, timeMessage: timeMessage, activationDate: activationDate)
  38. XCTAssertEqual(TransmitterStatus.ok, glucose.status)
  39. XCTAssertEqual(calendar.date(from: DateComponents(year: 2016, month: 12, day: 6, hour: 8, minute: 26, second: 38))!, glucose.readDate)
  40. XCTAssertFalse(glucose.isDisplayOnly)
  41. XCTAssertEqual(122, glucose.glucose?.doubleValue(for: .milligramsPerDeciliter))
  42. XCTAssertEqual(.known(.ok), glucose.state)
  43. XCTAssertEqual(-28, glucose.trend)
  44. }
  45. func testDisplayOnly() {
  46. let data = Data(hexadecimalString: "3100700a0000f17a5700584006e3cee9")!
  47. let message = GlucoseRxMessage(data: data)!
  48. let glucose = Glucose(transmitterID: "123456", glucoseMessage: message, timeMessage: timeMessage, activationDate: activationDate)
  49. XCTAssertEqual(TransmitterStatus.ok, glucose.status)
  50. XCTAssertEqual(calendar.date(from: DateComponents(year: 2016, month: 12, day: 6, hour: 8, minute: 31, second: 45))!, glucose.readDate)
  51. XCTAssertTrue(glucose.isDisplayOnly)
  52. XCTAssertEqual(88, glucose.glucose?.doubleValue(for: .milligramsPerDeciliter))
  53. XCTAssertEqual(.known(.ok), glucose.state)
  54. XCTAssertEqual(-29, message.glucose.trend)
  55. }
  56. func testOldTransmitter() {
  57. let data = Data(hexadecimalString: "3100aa00000095a078008b00060a8b34")!
  58. let message = GlucoseRxMessage(data: data)!
  59. let glucose = Glucose(transmitterID: "123456", glucoseMessage: message, timeMessage: timeMessage, activationDate: activationDate)
  60. XCTAssertEqual(TransmitterStatus.ok, glucose.status)
  61. XCTAssertEqual(calendar.date(from: DateComponents(year: 2016, month: 12, day: 31, hour: 11, minute: 57, second: 09))!, glucose.readDate) // 90 days, status is still OK
  62. XCTAssertFalse(glucose.isDisplayOnly)
  63. XCTAssertEqual(139, glucose.glucose?.doubleValue(for: .milligramsPerDeciliter))
  64. XCTAssertEqual(.known(.ok), glucose.state)
  65. XCTAssertEqual(10, message.glucose.trend)
  66. }
  67. }