TimestampedHistoryEventTests.swift 7.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // TimestampedHistoryEventTests.swift
  3. // RileyLink
  4. //
  5. // Created by Jaim Zuber on 2/24/17.
  6. // Copyright © 2017 Pete Schwamb. All rights reserved.
  7. //
  8. import XCTest
  9. @testable import MinimedKit
  10. class TimestampedHistoryEventTests: XCTestCase {
  11. let hexData523 = Data(hexadecimalString: "5be409a20a1510325000784b502800a400002400a8965c0b404fc038cbd008d5d0010080008000240009a24a15107b0500800c1510180a000ade19a32c15105bde2ba30c1510325000b44b5024006c0000200070965c0b4c78c03482c040c8c001007000700020002ba34c15100a0c22932d75903f2122938d7510c527ad5b0006900f15101a5000b44b500000380000000038965c0e70a1c04c19d03423d04069d00100380038000c0006904f15107b060080101510200e005b0034ab1015100d5000784b500000280000000028965c113858c070f8c04c70d0347ad040c0d00100280028001c0034ab5015100ab005863175903f360586117510c527ad5bb01486111510005100784b50940000000038005c965c14281fc0386fc0700fd04c87d03491d040d7d001005c005c00380014865115105b002291121510285000784b500000840000000084965c145c48c02866c038b6c07056d04cced034d8d0010084008400480022915215107b0700801315102610002100038414151003000000360785341510064a097e009e54b5100c4a03a11415107b0704a11415102610007b0704a11415102610007b0710a1141510261000030003000306a11415100ae937a23475103f1d37a2347510c527ad5be91ea3141510165000784b502c00480000140060965c0e848cc05cd2c028f0c03840d001006000600014001ea35415107b0800801515102a13000a5621ba3515905b5623ba151510005100b455505800000000340024965c116053c084dfc05c25d02843d03893d0010024002400340023ba5515105b00188c161510005000b455500000000000000000965c142411c06061c084edc05c33d02851d038a1d00100180018004c00188c5615100a7339ac3615905b7305ad161510005100b455506800000000480020965c171828c02432c06082c0840ed05c54d02872d038c2d0010034003400440005ad5615100a55158c3775903f2a158cb77510c527ad5b55278c171510005100b455505800000000600000965c1a341bc01843c0244dc0609dc08429d05c6fd0288dd038ddd00100180018006000278c5715100a1930b73715905b1901b8171510005100b455503c00000000440000965c1a1833c03447c0186fc02479c060c9c08455d05c9bd028b9d0010018001800440001b85715107b000080001610000e0007000004f035100000006e351005112ce9b00a000004f001401903b04b00dd01a4013c00d0000005070200040000000000000000de730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fc5e")!
  12. let hexData522 = Data(hexadecimalString: "5a0f7050141d10151300080000000000000000000000000000001e1414211e00000000000000000000005f69000000000000000000000000000000000000000000151300080000000000000000000000000000001e14142d1e00000000000000000000005f6900000000000000000000000000000000000000000044338c4055145d100016014055145d10333e445a145d10001601445a145d10335a4464145d100016014464145d10335e4069145d100016014069145d10010a0a004a6b341d10010f0f007979341d10010a0a00484b351d103383445a155d10001601445a155d10333c4369155d100016014369155d10011919006f7a351d10333c4b41165d100016014b41165d10333c4e55165d100016014e55165d10333c486e165d10001601486e165d10331b4c73165d100016014c73165d10333c5f4b175d100016015f4b175d1001080800554d371d10010808006a5d371d10333c6564175d100016016564175d1001050500766a371d10333c4878175d100016014878175d100700000a6a5d906d5d90050c00e8000000000a6a056234050830000005083000000000000005086413000000130c00e800000033394a50005e100016014a50005e1033394864005e100016014864005e1033004969005e100016014969005e1033004878005e100016014878005e1033004155015e100016014155015e103348495f015e10001601495f015e1033394564015e100016014564015e1033484a69015e100016014a69015e1033104c73015e100016014c73015e1033394578015e100016014578015e1033394550025e100016014550025e103314465a025e10001601465a025e1033004a5f025e100016014a5f025e103300456e025e10001601456e025e1033004241035e100016014241035e1033004550035e100016014550035e103300495f035e10001601495f035e103300456e035e10001601456e035e1033394678035e100016014678035e10338c4d46045e100016014d46045e10338c4664045e100016014664045e1033444a41055e100016014a41055e10010404007561281e1033447968085e100016017968085e10334a7972085e100016017972085e1033444478085e100016014478085e1033444250095e100016014250095e1033147954095e100016017954095e103344415a095e10001601415a095e10338c7968095e100016017968095e10011414006e6c291e1033447972095e100016017972095e10335841460a5e1000160141460a5e10010a0a0047492a1e10336841500a5e1000160141500a5e10010a0a006b512a1e103344415a0a5e10001601415a0a5e10330041500b5e1000160141500b5e103300455f0b5e10001601455f0b5e103346416e0b5e10001601416e0b5e10334641460c5e100000000000005a49")!
  13. var historyPage523: HistoryPage!
  14. var historyPage522: HistoryPage!
  15. override func setUp() {
  16. super.setUp()
  17. historyPage523 = try! HistoryPage(pageData: hexData523, pumpModel: PumpModel.model523)
  18. historyPage522 = try! HistoryPage(pageData: hexData522, pumpModel: PumpModel.model522)
  19. }
  20. func testEventIsntMutable() {
  21. let data = Data(Array<UInt8>([7,6,5,4,3,2,1,0]))
  22. let event = BatteryPumpEvent(availableData: data, pumpModel: PumpModel.model523)!
  23. let sut = TimestampedHistoryEvent(pumpEvent:event, date:Date())
  24. XCTAssertFalse(sut.isMutable(forPump: .model522))
  25. }
  26. func testEventIsNotMutableFor522() {
  27. let data = Data(Array<UInt8>([7,6,5,4,3,2,1,0]))
  28. let event = BatteryPumpEvent(availableData: data, pumpModel: PumpModel.model522)!
  29. let sut = TimestampedHistoryEvent(pumpEvent:event, date:Date())
  30. XCTAssertFalse(sut.isMutable(forPump: .model522))
  31. }
  32. func test523EventIsNotMutable() {
  33. let bolusEvent = getNormalBolusEvent()
  34. let timeStampDate = bolusEvent.timestamp.date!
  35. let dateToCheck = timeStampDate.addingTimeInterval(bolusEvent.deliveryTime + 10) // beyond the delivery time
  36. let sut = TimestampedHistoryEvent(pumpEvent: bolusEvent, date: timeStampDate)
  37. XCTAssertFalse(sut.isMutable(atDate: dateToCheck, forPump: .model523))
  38. }
  39. func test523EventIsMutable() {
  40. let bolusEvent = getNormalBolusEvent()
  41. let timeStampDate = bolusEvent.timestamp.date!
  42. let dateToCheck = timeStampDate.addingTimeInterval(bolusEvent.deliveryTime/2) // within the delivery time
  43. let sut = TimestampedHistoryEvent(pumpEvent: bolusEvent, date: timeStampDate)
  44. // normal boluses on x23 are *not* mutable; they are just delayed append. Only square wave boluses are mutable
  45. XCTAssertFalse(sut.isMutable(atDate: dateToCheck, forPump: .model523))
  46. }
  47. func testSquareWaveIsMutableOnX23() {
  48. let squareBolus = BolusNormalPumpEvent(availableData: Data(hexadecimalString: "010080008000240209a24a1510")!, pumpModel: .model523)!
  49. let squareBolusTimestamp = squareBolus.timestamp.date!
  50. let squareBolusTimestampedEvent = TimestampedHistoryEvent(pumpEvent: squareBolus, date: squareBolusTimestamp)
  51. let dateToCheckForSquareBolus = squareBolusTimestamp.addingTimeInterval(squareBolus.deliveryTime/2) // within the delivery time
  52. XCTAssertTrue(squareBolusTimestampedEvent.isMutable(atDate: dateToCheckForSquareBolus, forPump: .model523))
  53. }
  54. func testSquareWaveIsNotMutableOnX23AfterDeliveryTime() {
  55. let squareBolus = BolusNormalPumpEvent(availableData: Data(hexadecimalString: "010080008000240209a24a1510")!, pumpModel: .model523)!
  56. let squareBolusTimestamp = squareBolus.timestamp.date!
  57. let squareBolusTimestampedEvent = TimestampedHistoryEvent(pumpEvent: squareBolus, date: squareBolusTimestamp)
  58. let dateToCheckForSquareBolus = squareBolusTimestamp.addingTimeInterval(squareBolus.deliveryTime + 1) // 1s after delivery time
  59. XCTAssertTrue(squareBolusTimestampedEvent.isMutable(atDate: dateToCheckForSquareBolus, forPump: .model523))
  60. }
  61. func getNormalBolusEvent() -> BolusNormalPumpEvent {
  62. let events = historyPage523.events
  63. let bolus = events[1] as! BolusNormalPumpEvent
  64. print("Bolus hex = \(bolus.rawData.hexadecimalString)")
  65. return bolus
  66. }
  67. }