forked from LoopKit/LoopKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHKDeviceCodableTests.swift
More file actions
81 lines (74 loc) · 3.46 KB
/
HKDeviceCodableTests.swift
File metadata and controls
81 lines (74 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//
// HKDeviceCodableTests.swift
// LoopKitTests
//
// Created by Rick Pasetto on 8/6/21.
// Copyright © 2021 LoopKit Authors. All rights reserved.
//
import HealthKit
import XCTest
@testable import LoopKit
class HKDeviceCodableTests: XCTestCase {
let device1 = HKDevice(name: "NAME1", manufacturer: "MANUFACTURER", model: "MODEL", hardwareVersion: "HARDWAREVERSION", firmwareVersion: "FIRMWAREVERSION", softwareVersion: "SOFTWAREVERSION", localIdentifier: "LOCALIDENTIFIER", udiDeviceIdentifier: "UDIDEVICEIDENTIFIER")
let device1JSON = """
{
"firmwareVersion" : "FIRMWAREVERSION",
"hardwareVersion" : "HARDWAREVERSION",
"localIdentifier" : "LOCALIDENTIFIER",
"manufacturer" : "MANUFACTURER",
"model" : "MODEL",
"name" : "NAME1",
"softwareVersion" : "SOFTWAREVERSION",
"udiDeviceIdentifier" : "UDIDEVICEIDENTIFIER"
}
"""
let device2 = HKDevice(name: "NAME2", manufacturer: "MANUFACTURER", model: "MODEL", hardwareVersion: "HARDWAREVERSION", firmwareVersion: "FIRMWAREVERSION", softwareVersion: "SOFTWAREVERSION", localIdentifier: "LOCALIDENTIFIER", udiDeviceIdentifier: "UDIDEVICEIDENTIFIER")
let device2JSON = """
{
"firmwareVersion" : "FIRMWAREVERSION",
"hardwareVersion" : "HARDWAREVERSION",
"localIdentifier" : "LOCALIDENTIFIER",
"manufacturer" : "MANUFACTURER",
"model" : "MODEL",
"name" : "NAME2",
"softwareVersion" : "SOFTWAREVERSION",
"udiDeviceIdentifier" : "UDIDEVICEIDENTIFIER"
}
"""
let device3 = HKDevice(name: "NAME3", manufacturer: nil, model: nil, hardwareVersion: nil, firmwareVersion: nil, softwareVersion: nil, localIdentifier: nil, udiDeviceIdentifier: nil)
let device3JSON = """
{
"name" : "NAME3"
}
"""
let jsonEncoder: JSONEncoder = {
let val = JSONEncoder()
val.outputFormatting = [.prettyPrinted, .sortedKeys]
return val
}()
let plistEncoder: PropertyListEncoder = {
let val = PropertyListEncoder()
val.outputFormat = .xml
return val
}()
func testEncode() throws {
XCTAssertEqual(device1JSON, String(data: try jsonEncoder.encode(device1), encoding: .utf8))
XCTAssertEqual(device2JSON, String(data: try jsonEncoder.encode(device2), encoding: .utf8))
XCTAssertEqual(device3JSON, String(data: try jsonEncoder.encode(device3), encoding: .utf8))
XCTAssertNotEqual(device2JSON, String(data: try jsonEncoder.encode(device1), encoding: .utf8))
}
func testDecodeJSON() throws {
XCTAssertEqual(device1, try HKDevice(from: device1JSON.data(using: .utf8)!))
XCTAssertEqual(device2, try HKDevice(from: device2JSON.data(using: .utf8)!))
XCTAssertEqual(device3, try HKDevice(from: device3JSON.data(using: .utf8)!))
}
func testDecodePropertyList() throws {
XCTAssertEqual(device1, try HKDevice(from: plistEncoder.encode(device1)))
XCTAssertEqual(device2, try HKDevice(from: plistEncoder.encode(device2)))
XCTAssertEqual(device3, try HKDevice(from: plistEncoder.encode(device3)))
XCTAssertNotEqual(device3, try HKDevice(from: plistEncoder.encode(device1)))
}
func testDecodeInvalidData() throws {
XCTAssertThrowsError(try HKDevice(from: Data()))
}
}