@@ -74,30 +74,6 @@ if #available(OSX 10.10, iOS 8.0, *) {
74
74
}
75
75
}
76
76
77
- DispatchAPI . test ( " dispatch_data_t enumeration " ) {
78
- // Ensure we can iterate the empty iterator
79
- for _ in DispatchData . empty {
80
- _ = 1
81
- }
82
- }
83
-
84
- DispatchAPI . test ( " dispatch_data_t deallocator " ) {
85
- let q = DispatchQueue ( label: " dealloc queue " )
86
- var t = 0
87
-
88
- autoreleasepool {
89
- let size = 1024
90
- let p = UnsafeMutablePointer< UInt8> . allocate( capacity: size)
91
- let _ = DispatchData ( bytesNoCopy: UnsafeBufferPointer ( start: p, count: size) , deallocator: . custom( q, {
92
- t = 1
93
- } ) )
94
- }
95
-
96
- q. sync {
97
- expectEqual ( 1 , t)
98
- }
99
- }
100
-
101
77
DispatchAPI . test ( " DispatchTime comparisons " ) {
102
78
do {
103
79
let now = DispatchTime . now ( )
@@ -203,317 +179,6 @@ DispatchAPI.test("DispatchTime.uptimeNanos") {
203
179
expectEqual ( NSEC_PER_SEC, diffNanos)
204
180
}
205
181
206
- DispatchAPI . test ( " DispatchData.copyBytes " ) {
207
- let source1 : [ UInt8 ] = [ 0 , 1 , 2 , 3 ]
208
- let srcPtr1 = UnsafeBufferPointer ( start: source1, count: source1. count)
209
-
210
- var dest : [ UInt8 ] = [ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ]
211
- let destPtr = UnsafeMutableBufferPointer ( start: UnsafeMutablePointer ( & dest) ,
212
- count: dest. count)
213
-
214
- var dispatchData = DispatchData ( bytes: srcPtr1)
215
-
216
- // Copy from offset 0
217
- var count = dispatchData. copyBytes ( to: destPtr, from: 0 ..< 2 )
218
- expectEqual ( count, 2 )
219
- expectEqual ( destPtr [ 0 ] , 0 )
220
- expectEqual ( destPtr [ 1 ] , 1 )
221
- expectEqual ( destPtr [ 2 ] , 0xFF )
222
- expectEqual ( destPtr [ 3 ] , 0xFF )
223
- expectEqual ( destPtr [ 4 ] , 0xFF )
224
- expectEqual ( destPtr [ 5 ] , 0xFF )
225
-
226
- // Copy from offset 2
227
- count = dispatchData. copyBytes ( to: destPtr, from: 2 ..< 4 )
228
- expectEqual ( count, 2 )
229
- expectEqual ( destPtr [ 0 ] , 2 )
230
- expectEqual ( destPtr [ 1 ] , 3 )
231
- expectEqual ( destPtr [ 2 ] , 0xFF )
232
- expectEqual ( destPtr [ 3 ] , 0xFF )
233
- expectEqual ( destPtr [ 4 ] , 0xFF )
234
- expectEqual ( destPtr [ 5 ] , 0xFF )
235
-
236
- // Add two more regions
237
- let source2 : [ UInt8 ] = [ 0x10 , 0x11 , 0x12 , 0x13 ]
238
- let srcPtr2 = UnsafeBufferPointer ( start: source2, count: source2. count)
239
- dispatchData. append ( DispatchData ( bytes: srcPtr2) )
240
-
241
- let source3 : [ UInt8 ] = [ 0x14 , 0x15 , 0x16 ]
242
- let srcPtr3 = UnsafeBufferPointer ( start: source3, count: source3. count)
243
- dispatchData. append ( DispatchData ( bytes: srcPtr3) )
244
-
245
- // Copy from offset 0. Copies across the first two regions
246
- count = dispatchData. copyBytes ( to: destPtr, from: 0 ..< 6 )
247
- expectEqual ( count, 6 )
248
- expectEqual ( destPtr [ 0 ] , 0 )
249
- expectEqual ( destPtr [ 1 ] , 1 )
250
- expectEqual ( destPtr [ 2 ] , 2 )
251
- expectEqual ( destPtr [ 3 ] , 3 )
252
- expectEqual ( destPtr [ 4 ] , 0x10 )
253
- expectEqual ( destPtr [ 5 ] , 0x11 )
254
-
255
- // Copy from offset 2. Copies across the first two regions
256
- count = dispatchData. copyBytes ( to: destPtr, from: 2 ..< 8 )
257
- expectEqual ( count, 6 )
258
- expectEqual ( destPtr [ 0 ] , 2 )
259
- expectEqual ( destPtr [ 1 ] , 3 )
260
- expectEqual ( destPtr [ 2 ] , 0x10 )
261
- expectEqual ( destPtr [ 3 ] , 0x11 )
262
- expectEqual ( destPtr [ 4 ] , 0x12 )
263
- expectEqual ( destPtr [ 5 ] , 0x13 )
264
-
265
- // Copy from offset 3. Copies across all three regions
266
- count = dispatchData. copyBytes ( to: destPtr, from: 3 ..< 9 )
267
- expectEqual ( count, 6 )
268
- expectEqual ( destPtr [ 0 ] , 3 )
269
- expectEqual ( destPtr [ 1 ] , 0x10 )
270
- expectEqual ( destPtr [ 2 ] , 0x11 )
271
- expectEqual ( destPtr [ 3 ] , 0x12 )
272
- expectEqual ( destPtr [ 4 ] , 0x13 )
273
- expectEqual ( destPtr [ 5 ] , 0x14 )
274
-
275
- // Copy from offset 5. Skips the first region and the first byte of the second
276
- count = dispatchData. copyBytes ( to: destPtr, from: 5 ..< 11 )
277
- expectEqual ( count, 6 )
278
- expectEqual ( destPtr [ 0 ] , 0x11 )
279
- expectEqual ( destPtr [ 1 ] , 0x12 )
280
- expectEqual ( destPtr [ 2 ] , 0x13 )
281
- expectEqual ( destPtr [ 3 ] , 0x14 )
282
- expectEqual ( destPtr [ 4 ] , 0x15 )
283
- expectEqual ( destPtr [ 5 ] , 0x16 )
284
-
285
- // Copy from offset 8. Skips the first two regions
286
- destPtr [ 3 ] = 0xFF
287
- destPtr [ 4 ] = 0xFF
288
- destPtr [ 5 ] = 0xFF
289
- count = dispatchData. copyBytes ( to: destPtr, from: 8 ..< 11 )
290
- expectEqual ( count, 3 )
291
- expectEqual ( destPtr [ 0 ] , 0x14 )
292
- expectEqual ( destPtr [ 1 ] , 0x15 )
293
- expectEqual ( destPtr [ 2 ] , 0x16 )
294
- expectEqual ( destPtr [ 3 ] , 0xFF )
295
- expectEqual ( destPtr [ 4 ] , 0xFF )
296
- expectEqual ( destPtr [ 5 ] , 0xFF )
297
-
298
- // Copy from offset 9. Skips the first two regions and the first byte of the third
299
- destPtr [ 2 ] = 0xFF
300
- destPtr [ 3 ] = 0xFF
301
- destPtr [ 4 ] = 0xFF
302
- destPtr [ 5 ] = 0xFF
303
- count = dispatchData. copyBytes ( to: destPtr, from: 9 ..< 11 )
304
- expectEqual ( count, 2 )
305
- expectEqual ( destPtr [ 0 ] , 0x15 )
306
- expectEqual ( destPtr [ 1 ] , 0x16 )
307
- expectEqual ( destPtr [ 2 ] , 0xFF )
308
- expectEqual ( destPtr [ 3 ] , 0xFF )
309
- expectEqual ( destPtr [ 4 ] , 0xFF )
310
- expectEqual ( destPtr [ 5 ] , 0xFF )
311
-
312
- // Copy from offset 9, but only 1 byte. Ends before the end of the data
313
- destPtr [ 1 ] = 0xFF
314
- destPtr [ 2 ] = 0xFF
315
- destPtr [ 3 ] = 0xFF
316
- destPtr [ 4 ] = 0xFF
317
- destPtr [ 5 ] = 0xFF
318
- count = dispatchData. copyBytes ( to: destPtr, from: 9 ..< 10 )
319
- expectEqual ( count, 1 )
320
- expectEqual ( destPtr [ 0 ] , 0x15 )
321
- expectEqual ( destPtr [ 1 ] , 0xFF )
322
- expectEqual ( destPtr [ 2 ] , 0xFF )
323
- expectEqual ( destPtr [ 3 ] , 0xFF )
324
- expectEqual ( destPtr [ 4 ] , 0xFF )
325
- expectEqual ( destPtr [ 5 ] , 0xFF )
326
-
327
- // Copy from offset 2, but only 1 byte. This copy is bounded within the
328
- // first region.
329
- destPtr [ 1 ] = 0xFF
330
- destPtr [ 2 ] = 0xFF
331
- destPtr [ 3 ] = 0xFF
332
- destPtr [ 4 ] = 0xFF
333
- destPtr [ 5 ] = 0xFF
334
- count = dispatchData. copyBytes ( to: destPtr, from: 2 ..< 3 )
335
- expectEqual ( count, 1 )
336
- expectEqual ( destPtr [ 0 ] , 2 )
337
- expectEqual ( destPtr [ 1 ] , 0xFF )
338
- expectEqual ( destPtr [ 2 ] , 0xFF )
339
- expectEqual ( destPtr [ 3 ] , 0xFF )
340
- expectEqual ( destPtr [ 4 ] , 0xFF )
341
- expectEqual ( destPtr [ 5 ] , 0xFF )
342
- }
343
-
344
- DispatchAPI . test ( " DispatchData.copyBytesUnsafeRawBufferPointer " ) {
345
- let source1 : [ UInt8 ] = [ 0 , 1 , 2 , 3 ]
346
- let srcPtr1 = UnsafeRawBufferPointer ( start: source1, count: source1. count)
347
-
348
- var dest : [ UInt8 ] = [ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ]
349
- let destPtr = UnsafeMutableRawBufferPointer ( start: UnsafeMutablePointer ( & dest) ,
350
- count: dest. count)
351
- var dispatchData = DispatchData ( bytes: srcPtr1)
352
-
353
- // Copy from offset 0
354
- dispatchData. copyBytes ( to: destPtr, from: 0 ..< 2 )
355
- expectEqual ( destPtr [ 0 ] , 0 )
356
- expectEqual ( destPtr [ 1 ] , 1 )
357
- expectEqual ( destPtr [ 2 ] , 0xFF )
358
- expectEqual ( destPtr [ 3 ] , 0xFF )
359
- expectEqual ( destPtr [ 4 ] , 0xFF )
360
- expectEqual ( destPtr [ 5 ] , 0xFF )
361
-
362
- // Copy from offset 2
363
- dispatchData. copyBytes ( to: destPtr, from: 2 ..< 4 )
364
- expectEqual ( destPtr [ 0 ] , 2 )
365
- expectEqual ( destPtr [ 1 ] , 3 )
366
- expectEqual ( destPtr [ 2 ] , 0xFF )
367
- expectEqual ( destPtr [ 3 ] , 0xFF )
368
- expectEqual ( destPtr [ 4 ] , 0xFF )
369
- expectEqual ( destPtr [ 5 ] , 0xFF )
370
-
371
- // Add two more regions
372
- let source2 : [ UInt8 ] = [ 0x10 , 0x11 , 0x12 , 0x13 ]
373
- let srcPtr2 = UnsafeRawBufferPointer ( start: source2, count: source2. count)
374
- dispatchData. append ( DispatchData ( bytes: srcPtr2) )
375
-
376
- let source3 : [ UInt8 ] = [ 0x14 , 0x15 , 0x16 ]
377
- let srcPtr3 = UnsafeRawBufferPointer ( start: source3, count: source3. count)
378
- dispatchData. append ( DispatchData ( bytes: srcPtr3) )
379
-
380
- // Copy from offset 0. Copies across the first two regions
381
- dispatchData. copyBytes ( to: destPtr, from: 0 ..< 6 )
382
- expectEqual ( destPtr [ 0 ] , 0 )
383
- expectEqual ( destPtr [ 1 ] , 1 )
384
- expectEqual ( destPtr [ 2 ] , 2 )
385
- expectEqual ( destPtr [ 3 ] , 3 )
386
- expectEqual ( destPtr [ 4 ] , 0x10 )
387
- expectEqual ( destPtr [ 5 ] , 0x11 )
388
-
389
- // Copy from offset 2. Copies across the first two regions
390
- dispatchData. copyBytes ( to: destPtr, from: 2 ..< 8 )
391
- expectEqual ( destPtr [ 0 ] , 2 )
392
- expectEqual ( destPtr [ 1 ] , 3 )
393
- expectEqual ( destPtr [ 2 ] , 0x10 )
394
- expectEqual ( destPtr [ 3 ] , 0x11 )
395
- expectEqual ( destPtr [ 4 ] , 0x12 )
396
- expectEqual ( destPtr [ 5 ] , 0x13 )
397
-
398
- // Copy from offset 3. Copies across all three regions
399
- dispatchData. copyBytes ( to: destPtr, from: 3 ..< 9 )
400
- expectEqual ( destPtr [ 0 ] , 3 )
401
- expectEqual ( destPtr [ 1 ] , 0x10 )
402
- expectEqual ( destPtr [ 2 ] , 0x11 )
403
- expectEqual ( destPtr [ 3 ] , 0x12 )
404
- expectEqual ( destPtr [ 4 ] , 0x13 )
405
- expectEqual ( destPtr [ 5 ] , 0x14 )
406
-
407
- // Copy from offset 5. Skips the first region and the first byte of the second
408
- dispatchData. copyBytes ( to: destPtr, from: 5 ..< 11 )
409
- expectEqual ( destPtr [ 0 ] , 0x11 )
410
- expectEqual ( destPtr [ 1 ] , 0x12 )
411
- expectEqual ( destPtr [ 2 ] , 0x13 )
412
- expectEqual ( destPtr [ 3 ] , 0x14 )
413
- expectEqual ( destPtr [ 4 ] , 0x15 )
414
- expectEqual ( destPtr [ 5 ] , 0x16 )
415
-
416
- // Copy from offset 8. Skips the first two regions
417
- destPtr [ 3 ] = 0xFF
418
- destPtr [ 4 ] = 0xFF
419
- destPtr [ 5 ] = 0xFF
420
- dispatchData. copyBytes ( to: destPtr, from: 8 ..< 11 )
421
- expectEqual ( destPtr [ 0 ] , 0x14 )
422
- expectEqual ( destPtr [ 1 ] , 0x15 )
423
- expectEqual ( destPtr [ 2 ] , 0x16 )
424
- expectEqual ( destPtr [ 3 ] , 0xFF )
425
- expectEqual ( destPtr [ 4 ] , 0xFF )
426
- expectEqual ( destPtr [ 5 ] , 0xFF )
427
-
428
- // Copy from offset 9. Skips the first two regions and the first byte of the third
429
- destPtr [ 2 ] = 0xFF
430
- destPtr [ 3 ] = 0xFF
431
- destPtr [ 4 ] = 0xFF
432
- destPtr [ 5 ] = 0xFF
433
- dispatchData. copyBytes ( to: destPtr, from: 9 ..< 11 )
434
- expectEqual ( destPtr [ 0 ] , 0x15 )
435
- expectEqual ( destPtr [ 1 ] , 0x16 )
436
- expectEqual ( destPtr [ 2 ] , 0xFF )
437
- expectEqual ( destPtr [ 3 ] , 0xFF )
438
- expectEqual ( destPtr [ 4 ] , 0xFF )
439
- expectEqual ( destPtr [ 5 ] , 0xFF )
440
-
441
- // Copy from offset 9, but only 1 byte. Ends before the end of the data
442
- destPtr [ 1 ] = 0xFF
443
- destPtr [ 2 ] = 0xFF
444
- destPtr [ 3 ] = 0xFF
445
- destPtr [ 4 ] = 0xFF
446
- destPtr [ 5 ] = 0xFF
447
- dispatchData. copyBytes ( to: destPtr, from: 9 ..< 10 )
448
- expectEqual ( destPtr [ 0 ] , 0x15 )
449
- expectEqual ( destPtr [ 1 ] , 0xFF )
450
- expectEqual ( destPtr [ 2 ] , 0xFF )
451
- expectEqual ( destPtr [ 3 ] , 0xFF )
452
- expectEqual ( destPtr [ 4 ] , 0xFF )
453
- expectEqual ( destPtr [ 5 ] , 0xFF )
454
-
455
- // Copy from offset 2, but only 1 byte. This copy is bounded within the
456
- // first region.
457
- destPtr [ 1 ] = 0xFF
458
- destPtr [ 2 ] = 0xFF
459
- destPtr [ 3 ] = 0xFF
460
- destPtr [ 4 ] = 0xFF
461
- destPtr [ 5 ] = 0xFF
462
- dispatchData. copyBytes ( to: destPtr, from: 2 ..< 3 )
463
- expectEqual ( destPtr [ 0 ] , 2 )
464
- expectEqual ( destPtr [ 1 ] , 0xFF )
465
- expectEqual ( destPtr [ 2 ] , 0xFF )
466
- expectEqual ( destPtr [ 3 ] , 0xFF )
467
- expectEqual ( destPtr [ 4 ] , 0xFF )
468
- expectEqual ( destPtr [ 5 ] , 0xFF )
469
- }
470
-
471
- DispatchAPI . test ( " DispatchData.buffers " ) {
472
- let bytes = [ UInt8 ( 0 ) , UInt8 ( 1 ) , UInt8 ( 2 ) , UInt8 ( 2 ) ]
473
- var ptr = UnsafeBufferPointer < UInt8 > ( start: bytes, count: bytes. count)
474
- var data = DispatchData ( bytes: ptr)
475
- expectEqual ( bytes. count, data. count)
476
- for i in 0 ..< data. count {
477
- expectEqual ( data [ i] , bytes [ i] )
478
- }
479
-
480
- data = DispatchData ( bytesNoCopy: ptr, deallocator: . custom( nil , { } ) )
481
- expectEqual ( bytes. count, data. count)
482
- for i in 0 ..< data. count {
483
- expectEqual ( data [ i] , bytes [ i] )
484
- }
485
-
486
- ptr = UnsafeBufferPointer < UInt8 > ( start: nil , count: 0 )
487
- data = DispatchData ( bytes: ptr)
488
- expectEqual ( data. count, 0 )
489
-
490
- data = DispatchData ( bytesNoCopy: ptr, deallocator: . custom( nil , { } ) )
491
- expectEqual ( data. count, 0 )
492
- }
493
-
494
- DispatchAPI . test ( " DispatchData.bufferUnsafeRawBufferPointer " ) {
495
- let bytes = [ UInt8 ( 0 ) , UInt8 ( 1 ) , UInt8 ( 2 ) , UInt8 ( 2 ) ]
496
- var ptr = UnsafeRawBufferPointer ( start: bytes, count: bytes. count)
497
- var data = DispatchData ( bytes: ptr)
498
- expectEqual ( bytes. count, data. count)
499
- for i in 0 ..< data. count {
500
- expectEqual ( data [ i] , bytes [ i] )
501
- }
502
-
503
- data = DispatchData ( bytesNoCopy: ptr, deallocator: . custom( nil , { } ) )
504
- expectEqual ( bytes. count, data. count)
505
- for i in 0 ..< data. count {
506
- expectEqual ( data [ i] , bytes [ i] )
507
- }
508
-
509
- ptr = UnsafeRawBufferPointer ( start: nil , count: 0 )
510
- data = DispatchData ( bytes: ptr)
511
- expectEqual ( data. count, 0 )
512
-
513
- data = DispatchData ( bytesNoCopy: ptr, deallocator: . custom( nil , { } ) )
514
- expectEqual ( data. count, 0 )
515
- }
516
-
517
182
DispatchAPI . test ( " DispatchIO.initRelativePath " ) {
518
183
let q = DispatchQueue ( label: " initRelativePath queue " )
519
184
#if swift(>=4.0)
0 commit comments