PacketTests.swift 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // PacketTests.swift
  3. // OmniKitTests
  4. //
  5. // Created by Pete Schwamb on 10/14/17.
  6. // Copyright © 2017 Pete Schwamb. All rights reserved.
  7. //
  8. import XCTest
  9. @testable import OmniKit
  10. class PacketTests: XCTestCase {
  11. func testPacketData() {
  12. // 2016-06-26T20:33:28.412197 ID1:1f01482a PTYPE:PDM SEQ:13 ID2:1f01482a B9:10 BLEN:3 BODY:0e0100802c CRC:88
  13. let msg = Message(address: 0x1f01482a, messageBlocks: [GetStatusCommand()], sequenceNum: 4)
  14. let packet = Packet(address: 0x1f01482a, packetType: .pdm, sequenceNum: 13, data: msg.encoded())
  15. XCTAssertEqual("1f01482aad1f01482a10030e0100802c88", packet.encoded().hexadecimalString)
  16. XCTAssertEqual("1f01482a10030e0100802c", packet.data.hexadecimalString)
  17. }
  18. func testPacketDecoding() {
  19. do {
  20. let packet = try Packet(encodedData: Data(hexadecimalString:"1f01482aad1f01482a10030e0100802c88")!)
  21. XCTAssertEqual(0x1f01482a, packet.address)
  22. XCTAssertEqual(13, packet.sequenceNum)
  23. XCTAssertEqual(.pdm, packet.packetType)
  24. XCTAssertEqual("1f01482a10030e0100802c", packet.data.hexadecimalString)
  25. } catch (let error) {
  26. XCTFail("message decoding threw error: \(error)")
  27. }
  28. }
  29. func testPacketFragmenting() {
  30. let longMessageData = Data(hexadecimalString:"02cb5000c92162368024632d8029623f002c62320031623b003463320039633d003c63310041623e0044633200496340004c6333005163448101627c8104627c8109627c810c62198111627c811460198103fe")!
  31. let packet = Packet(address: 0x1f01482a, packetType: .pdm, sequenceNum: 13, data: longMessageData)
  32. XCTAssertEqual(31, packet.data.count)
  33. XCTAssertEqual("02cb5000c92162368024632d8029623f002c62320031623b00346332003963", packet.data.hexadecimalString)
  34. let con1 = Packet(address: 0x1f01482a, packetType: .con, sequenceNum: 14, data: longMessageData.subdata(in: 31..<longMessageData.count))
  35. XCTAssertEqual(31, con1.data.count)
  36. XCTAssertEqual("3d003c63310041623e0044633200496340004c6333005163448101627c8104", con1.data.hexadecimalString)
  37. let con2 = Packet(address: 0x1f01482a, packetType: .con, sequenceNum: 14, data: longMessageData.subdata(in: (31+31)..<longMessageData.count))
  38. XCTAssertEqual(21, con2.data.count)
  39. XCTAssertEqual("627c8109627c810c62198111627c811460198103fe", con2.data.hexadecimalString)
  40. XCTAssertEqual(longMessageData, packet.data + con1.data + con2.data)
  41. }
  42. }