Skip to content

Commit 538e5c9

Browse files
committedJul 22, 2017

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed
 

‎Foundation/CharacterSet.swift

+17
Original file line numberDiff line numberDiff line change
@@ -506,3 +506,20 @@ extension CharacterSet : _ObjectTypeBridgeable {
506506
}
507507

508508
}
509+
510+
extension CharacterSet : Codable {
511+
private enum CodingKeys : Int, CodingKey {
512+
case bitmap
513+
}
514+
515+
public init(from decoder: Decoder) throws {
516+
let container = try decoder.container(keyedBy: CodingKeys.self)
517+
let bitmap = try container.decode(Data.self, forKey: .bitmap)
518+
self.init(bitmapRepresentation: bitmap)
519+
}
520+
521+
public func encode(to encoder: Encoder) throws {
522+
var container = encoder.container(keyedBy: CodingKeys.self)
523+
try container.encode(self.bitmapRepresentation, forKey: .bitmap)
524+
}
525+
}

‎TestFoundation/TestCodable.swift

+26
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,31 @@ class TestCodable : XCTestCase {
220220
expectRoundTripEqualityThroughJSON(for: decimal)
221221
}
222222
}
223+
224+
// MARK: - CharacterSet
225+
lazy var characterSetValues: [CharacterSet] = [
226+
CharacterSet.controlCharacters,
227+
CharacterSet.whitespaces,
228+
CharacterSet.whitespacesAndNewlines,
229+
CharacterSet.decimalDigits,
230+
CharacterSet.letters,
231+
CharacterSet.lowercaseLetters,
232+
CharacterSet.uppercaseLetters,
233+
CharacterSet.nonBaseCharacters,
234+
CharacterSet.alphanumerics,
235+
CharacterSet.decomposables,
236+
CharacterSet.illegalCharacters,
237+
CharacterSet.punctuationCharacters,
238+
CharacterSet.capitalizedLetters,
239+
CharacterSet.symbols,
240+
CharacterSet.newlines
241+
]
242+
243+
func test_CharacterSet_JSON() {
244+
for characterSet in characterSetValues {
245+
expectRoundTripEqualityThroughJSON(for: characterSet)
246+
}
247+
}
223248

224249
}
225250

@@ -235,6 +260,7 @@ extension TestCodable {
235260
("test_IndexPath_JSON", test_IndexPath_JSON),
236261
("test_AffineTransform_JSON", test_AffineTransform_JSON),
237262
("test_Decimal_JSON", test_Decimal_JSON),
263+
("test_CharacterSet_JSON", test_CharacterSet_JSON),
238264
]
239265
}
240266
}

0 commit comments

Comments
 (0)
Please sign in to comment.