@@ -190,8 +190,7 @@ final class TLVCodingTests: XCTestCase {
190190 Data ( [
191191 0 , 32 , 0 , 1 , 0 , 1 , 27 , 0 , 16 , 184 , 61 , 214 , 244 , 164 , 41 , 65 , 179 , 148 , 90 , 62 , 14 , 229 , 145 , 92 , 161 , 1 , 7 , 86 , 97 , 108 , 117 , 101 , 32 , 49 ,
192192 1 , 32 , 0 , 1 , 0 , 1 , 27 , 0 , 16 , 184 , 61 , 214 , 244 , 164 , 41 , 65 , 179 , 148 , 90 , 62 , 14 , 229 , 145 , 92 , 162 , 1 , 7 , 86 , 97 , 108 , 117 , 101 , 32 , 50 ,
193- 2 , 50 , 0 , 1 , 1 , 1 , 45 , 0 , 16 , 184 , 61 , 214 , 244 , 164 , 41 , 65 , 179 , 148 , 90 , 62 , 14 , 229 , 145 , 92 , 163 , 1 , 15 , 80 , 101 , 110 , 100 , 105 , 110 , 103 , 32 , 86 , 97 , 108 , 117 , 101 , 32 , 49 , 2 , 8 , 0 , 0 , 0 , 127 , 195 , 99 , 45 , 66
194- ] )
193+ 2 , 50 , 0 , 1 , 1 , 1 , 45 , 0 , 16 , 184 , 61 , 214 , 244 , 164 , 41 , 65 , 179 , 148 , 90 , 62 , 14 , 229 , 145 , 92 , 163 , 1 , 15 , 80 , 101 , 110 , 100 , 105 , 110 , 103 , 32 , 86 , 97 , 108 , 117 , 101 , 32 , 49 , 2 , 8 , 0 , 0 , 0 , 16 , 99 , 216 , 45 , 66 ] )
195194 )
196195
197196 }
@@ -216,7 +215,8 @@ final class TLVCodingTests: XCTestCase {
216215 let value = CustomEncodable (
217216 data: nil ,
218217 uuid: UUID ( ) ,
219- number: nil
218+ number: nil ,
219+ date: nil
220220 )
221221
222222 var encodedData = Data ( )
@@ -243,6 +243,56 @@ final class TLVCodingTests: XCTestCase {
243243 }
244244 }
245245 }
246+
247+ func testDate( ) {
248+
249+ let dateFormatter = DateFormatter ( )
250+ dateFormatter. locale = Locale ( identifier: " en_US_POSIX " )
251+ dateFormatter. dateFormat = " yyyy-MM-dd'T'HH:mm:ss.SSS'Z' "
252+ dateFormatter. calendar = Calendar ( identifier: . gregorian)
253+ dateFormatter. timeZone = TimeZone ( secondsFromGMT: 0 )
254+
255+ var formats : [ TLVDateFormat ] = [ . secondsSince1970, . millisecondsSince1970, . formatted( dateFormatter) ]
256+
257+ if #available( macOS 10 . 12 , iOS 10 . 0 , watchOS 3 . 0 , tvOS 10 . 0 , * ) {
258+ formats. append ( . iso8601)
259+ }
260+
261+ let date = Date ( timeIntervalSince1970: 60 * 60 * 24 * 365 )
262+
263+ for format in formats {
264+
265+ let value = CustomEncodable (
266+ data: nil ,
267+ uuid: nil ,
268+ number: nil ,
269+ date: date
270+ )
271+
272+ var encodedData = Data ( )
273+ var encoder = TLVEncoder ( )
274+ encoder. dateFormat = format
275+ encoder. log = { print ( " Encoder: " , $0) }
276+ do {
277+ encodedData = try encoder. encode ( value)
278+ } catch {
279+ dump ( error)
280+ XCTFail ( " Could not encode \( value) " )
281+ return
282+ }
283+
284+ var decoder = TLVDecoder ( )
285+ decoder. dateFormat = format
286+ decoder. log = { print ( " Decoder: " , $0) }
287+ do {
288+ let decodedValue = try decoder. decode ( CustomEncodable . self, from: encodedData)
289+ XCTAssertEqual ( decodedValue, value)
290+ } catch {
291+ dump ( error)
292+ XCTFail ( " Could not decode \( value) " )
293+ }
294+ }
295+ }
246296}
247297
248298// MARK: - Supporting Types
@@ -358,6 +408,7 @@ public struct CustomEncodable: Codable, Equatable {
358408 public var data : Data ?
359409 public var uuid : UUID ?
360410 public var number : TLVCodableNumber ?
411+ public var date : Date ?
361412}
362413
363414public struct DeviceInformation : Equatable , Codable {
0 commit comments