@@ -115,6 +115,7 @@ extension TestJSONSerialization {
115
115
( " test_deserialize_invalidValueInArray_withData " , test_deserialize_invalidValueInArray_withData) ,
116
116
( " test_deserialize_badlyFormedArray_withData " , test_deserialize_badlyFormedArray_withData) ,
117
117
( " test_deserialize_invalidEscapeSequence_withData " , test_deserialize_invalidEscapeSequence_withData) ,
118
+ ( " test_deserialize_unicodeMissingLeadingSurrogate_withData " , test_deserialize_unicodeMissingLeadingSurrogate_withData) ,
118
119
( " test_deserialize_unicodeMissingTrailingSurrogate_withData " , test_deserialize_unicodeMissingTrailingSurrogate_withData) ,
119
120
120
121
//Deserialization with Stream
@@ -146,6 +147,7 @@ extension TestJSONSerialization {
146
147
( " test_deserialize_invalidValueInArray_withStream " , test_deserialize_invalidValueInArray_withStream) ,
147
148
( " test_deserialize_badlyFormedArray_withStream " , test_deserialize_badlyFormedArray_withStream) ,
148
149
( " test_deserialize_invalidEscapeSequence_withStream " , test_deserialize_invalidEscapeSequence_withStream) ,
150
+ ( " test_deserialize_unicodeMissingLeadingSurrogate_withStream " , test_deserialize_unicodeMissingLeadingSurrogate_withStream) ,
149
151
( " test_deserialize_unicodeMissingTrailingSurrogate_withStream " , test_deserialize_unicodeMissingTrailingSurrogate_withStream) ,
150
152
( " test_JSONObjectWithStream_withFile " , test_JSONObjectWithStream_withFile) ,
151
153
( " test_JSONObjectWithStream_withURL " , test_JSONObjectWithStream_withURL) ,
@@ -242,6 +244,10 @@ extension TestJSONSerialization {
242
244
deserialize_invalidEscapeSequence ( objectType: . data)
243
245
}
244
246
247
+ func test_deserialize_unicodeMissingLeadingSurrogate_withData( ) {
248
+ deserialize_unicodeMissingLeadingSurrogate ( objectType: . data)
249
+ }
250
+
245
251
func test_deserialize_unicodeMissingTrailingSurrogate_withData( ) {
246
252
deserialize_unicodeMissingTrailingSurrogate ( objectType: . data)
247
253
}
@@ -336,6 +342,10 @@ extension TestJSONSerialization {
336
342
deserialize_invalidEscapeSequence ( objectType: . stream)
337
343
}
338
344
345
+ func test_deserialize_unicodeMissingLeadingSurrogate_withStream( ) {
346
+ deserialize_unicodeMissingLeadingSurrogate ( objectType: . stream)
347
+ }
348
+
339
349
func test_deserialize_unicodeMissingTrailingSurrogate_withStream( ) {
340
350
deserialize_unicodeMissingTrailingSurrogate ( objectType: . stream)
341
351
}
@@ -738,6 +748,20 @@ extension TestJSONSerialization {
738
748
}
739
749
}
740
750
751
+ func deserialize_unicodeMissingLeadingSurrogate( objectType: ObjectType ) {
752
+ let subject = " [ \" \\ uDFF3 \" ] "
753
+ do {
754
+ guard let data = subject. data ( using: . utf8) else {
755
+ XCTFail ( " Unable to convert string to data " )
756
+ return
757
+ }
758
+ let _ = try getjsonObjectResult ( data, objectType) as? [ String ]
759
+ XCTFail ( " Expected error: Missing Leading Surrogate " )
760
+ } catch {
761
+ // Passing case; the unicode character is malformed
762
+ }
763
+ }
764
+
741
765
func deserialize_unicodeMissingTrailingSurrogate( objectType: ObjectType ) {
742
766
let subject = " [ \" \\ uD834 \" ] "
743
767
do {
0 commit comments