@@ -315,58 +315,77 @@ class TestAffineTransform : TestAffineTransformSuper {
315
315
checkPointTransformation ( rotateAboutCenter, point: center, expectedPoint: center)
316
316
}
317
317
318
- func test_hashing_identity( ) {
319
- let ref = NSAffineTransform ( )
320
- let val = AffineTransform . identity
321
- expectEqual ( ref. hashValue, val. hashValue)
322
- }
323
-
324
- func test_hashing_values( ) {
318
+ func test_hashing( ) {
325
319
// the transforms are made up and the values don't matter
326
- let values = [
327
- AffineTransform ( m11: 1.0 , m12: 2.5 , m21: 66.2 , m22: 40.2 , tX: - 5.5 , tY: 3.7 ) ,
328
- AffineTransform ( m11: - 55.66 , m12: 22.7 , m21: 1.5 , m22: 0.0 , tX: - 22 , tY: - 33 ) ,
329
- AffineTransform ( m11: 4.5 , m12: 1.1 , m21: 0.025 , m22: 0.077 , tX: - 0.55 , tY: 33.2 ) ,
330
- AffineTransform ( m11: 7.0 , m12: - 2.3 , m21: 6.7 , m22: 0.25 , tX: 0.556 , tY: 0.99 ) ,
331
- AffineTransform ( m11: 0.498 , m12: - 0.284 , m21: - 0.742 , m22: 0.3248 , tX: 12 , tY: 44 )
332
- ]
333
- for val in values {
334
- let ref = val as NSAffineTransform
335
- expectEqual ( ref. hashValue, val. hashValue)
320
+ let a = AffineTransform ( m11: 1.0 , m12: 2.5 , m21: 66.2 , m22: 40.2 , tX: - 5.5 , tY: 3.7 )
321
+ let b = AffineTransform ( m11: - 55.66 , m12: 22.7 , m21: 1.5 , m22: 0.0 , tX: - 22 , tY: - 33 )
322
+ let c = AffineTransform ( m11: 4.5 , m12: 1.1 , m21: 0.025 , m22: 0.077 , tX: - 0.55 , tY: 33.2 )
323
+ let d = AffineTransform ( m11: 7.0 , m12: - 2.3 , m21: 6.7 , m22: 0.25 , tX: 0.556 , tY: 0.99 )
324
+ let e = AffineTransform ( m11: 0.498 , m12: - 0.284 , m21: - 0.742 , m22: 0.3248 , tX: 12 , tY: 44 )
325
+
326
+ // Samples testing that every component is properly hashed
327
+ let x1 = AffineTransform ( m11: 1.0 , m12: 2.0 , m21: 3.0 , m22: 4.0 , tX: 5.0 , tY: 6.0 )
328
+ let x2 = AffineTransform ( m11: 1.5 , m12: 2.0 , m21: 3.0 , m22: 4.0 , tX: 5.0 , tY: 6.0 )
329
+ let x3 = AffineTransform ( m11: 1.0 , m12: 2.5 , m21: 3.0 , m22: 4.0 , tX: 5.0 , tY: 6.0 )
330
+ let x4 = AffineTransform ( m11: 1.0 , m12: 2.0 , m21: 3.5 , m22: 4.0 , tX: 5.0 , tY: 6.0 )
331
+ let x5 = AffineTransform ( m11: 1.0 , m12: 2.0 , m21: 3.0 , m22: 4.5 , tX: 5.0 , tY: 6.0 )
332
+ let x6 = AffineTransform ( m11: 1.0 , m12: 2.0 , m21: 3.0 , m22: 4.0 , tX: 5.5 , tY: 6.0 )
333
+ let x7 = AffineTransform ( m11: 1.0 , m12: 2.0 , m21: 3.0 , m22: 4.0 , tX: 5.0 , tY: 6.5 )
334
+
335
+ @inline ( never)
336
+ func bridged( _ t: AffineTransform ) -> NSAffineTransform {
337
+ return t as NSAffineTransform
336
338
}
337
- }
338
339
339
- func test_AnyHashableContainingAffineTransform( ) {
340
- let values : [ AffineTransform ] = [
341
- AffineTransform . identity,
342
- AffineTransform ( m11: - 55.66 , m12: 22.7 , m21: 1.5 , m22: 0.0 , tX: - 22 , tY: - 33 ) ,
343
- AffineTransform ( m11: - 55.66 , m12: 22.7 , m21: 1.5 , m22: 0.0 , tX: - 22 , tY: - 33 )
340
+ let values : [ [ AffineTransform ] ] = [
341
+ [ AffineTransform . identity, NSAffineTransform ( ) as AffineTransform ] ,
342
+ [ a, bridged ( a) as AffineTransform ] ,
343
+ [ b, bridged ( b) as AffineTransform ] ,
344
+ [ c, bridged ( c) as AffineTransform ] ,
345
+ [ d, bridged ( d) as AffineTransform ] ,
346
+ [ e, bridged ( e) as AffineTransform ] ,
347
+ [ x1] , [ x2] , [ x3] , [ x4] , [ x5] , [ x6] , [ x7]
344
348
]
345
- let anyHashables = values. map ( AnyHashable . init)
346
- expectEqual ( AffineTransform . self, type ( of: anyHashables [ 0 ] . base) )
347
- expectEqual ( AffineTransform . self, type ( of: anyHashables [ 1 ] . base) )
348
- expectEqual ( AffineTransform . self, type ( of: anyHashables [ 2 ] . base) )
349
- expectNotEqual ( anyHashables [ 0 ] , anyHashables [ 1 ] )
350
- expectEqual ( anyHashables [ 1 ] , anyHashables [ 2 ] )
349
+ checkHashableGroups ( values)
351
350
}
352
351
353
- func test_AnyHashableCreatedFromNSAffineTransform ( ) {
352
+ func test_AnyHashable ( ) {
354
353
func makeNSAffineTransform( rotatedByDegrees angle: CGFloat ) -> NSAffineTransform {
355
354
let result = NSAffineTransform ( )
356
355
result. rotate ( byDegrees: angle)
357
356
return result
358
357
}
359
- let values : [ NSAffineTransform ] = [
360
- makeNSAffineTransform ( rotatedByDegrees: 0 ) ,
361
- makeNSAffineTransform ( rotatedByDegrees: 10 ) ,
362
- makeNSAffineTransform ( rotatedByDegrees: 10 ) ,
358
+
359
+ let s1 = AffineTransform . identity
360
+ let s2 = AffineTransform ( m11: - 55.66 , m12: 22.7 , m21: 1.5 , m22: 0.0 , tX: - 22 , tY: - 33 )
361
+ let s3 = AffineTransform ( m11: - 55.66 , m12: 22.7 , m21: 1.5 , m22: 0.0 , tX: - 22 , tY: - 33 )
362
+ let s4 = makeNSAffineTransform ( rotatedByDegrees: 10 ) as AffineTransform
363
+ let s5 = makeNSAffineTransform ( rotatedByDegrees: 10 ) as AffineTransform
364
+
365
+ let c1 = NSAffineTransform ( transform: s1)
366
+ let c2 = NSAffineTransform ( transform: s2)
367
+ let c3 = NSAffineTransform ( transform: s3)
368
+ let c4 = makeNSAffineTransform ( rotatedByDegrees: 10 )
369
+ let c5 = makeNSAffineTransform ( rotatedByDegrees: 10 )
370
+
371
+ let groups : [ [ AnyHashable ] ] = [
372
+ [ s1, c1] ,
373
+ [ s2, c2, s3, c3] ,
374
+ [ s4, c4, s5, c5]
363
375
]
364
- let anyHashables = values. map ( AnyHashable . init)
365
- expectEqual ( AffineTransform . self, type ( of: anyHashables [ 0 ] . base) )
366
- expectEqual ( AffineTransform . self, type ( of: anyHashables [ 1 ] . base) )
367
- expectEqual ( AffineTransform . self, type ( of: anyHashables [ 2 ] . base) )
368
- expectNotEqual ( anyHashables [ 0 ] , anyHashables [ 1 ] )
369
- expectEqual ( anyHashables [ 1 ] , anyHashables [ 2 ] )
376
+ checkHashableGroups ( groups)
377
+
378
+ expectEqual ( AffineTransform . self, type ( of: ( s1 as AnyHashable ) . base) )
379
+ expectEqual ( AffineTransform . self, type ( of: ( s2 as AnyHashable ) . base) )
380
+ expectEqual ( AffineTransform . self, type ( of: ( s3 as AnyHashable ) . base) )
381
+ expectEqual ( AffineTransform . self, type ( of: ( s4 as AnyHashable ) . base) )
382
+ expectEqual ( AffineTransform . self, type ( of: ( s5 as AnyHashable ) . base) )
383
+
384
+ expectEqual ( AffineTransform . self, type ( of: ( c1 as AnyHashable ) . base) )
385
+ expectEqual ( AffineTransform . self, type ( of: ( c2 as AnyHashable ) . base) )
386
+ expectEqual ( AffineTransform . self, type ( of: ( c3 as AnyHashable ) . base) )
387
+ expectEqual ( AffineTransform . self, type ( of: ( c4 as AnyHashable ) . base) )
388
+ expectEqual ( AffineTransform . self, type ( of: ( c5 as AnyHashable ) . base) )
370
389
}
371
390
372
391
func test_unconditionallyBridgeFromObjectiveC( ) {
@@ -400,10 +419,8 @@ AffineTransformTests.test("test_ScalingTranslation") { TestAffineTransform().tes
400
419
AffineTransformTests . test ( " test_AppendTransform " ) { TestAffineTransform ( ) . test_AppendTransform ( ) }
401
420
AffineTransformTests . test ( " test_PrependTransform " ) { TestAffineTransform ( ) . test_PrependTransform ( ) }
402
421
AffineTransformTests . test ( " test_TransformComposition " ) { TestAffineTransform ( ) . test_TransformComposition ( ) }
403
- AffineTransformTests . test ( " test_hashing_identity " ) { TestAffineTransform ( ) . test_hashing_identity ( ) }
404
- AffineTransformTests . test ( " test_hashing_values " ) { TestAffineTransform ( ) . test_hashing_values ( ) }
405
- AffineTransformTests . test ( " test_AnyHashableContainingAffineTransform " ) { TestAffineTransform ( ) . test_AnyHashableContainingAffineTransform ( ) }
406
- AffineTransformTests . test ( " test_AnyHashableCreatedFromNSAffineTransform " ) { TestAffineTransform ( ) . test_AnyHashableCreatedFromNSAffineTransform ( ) }
422
+ AffineTransformTests . test ( " test_hashing " ) { TestAffineTransform ( ) . test_hashing ( ) }
423
+ AffineTransformTests . test ( " test_AnyHashable " ) { TestAffineTransform ( ) . test_AnyHashable ( ) }
407
424
AffineTransformTests . test ( " test_unconditionallyBridgeFromObjectiveC " ) { TestAffineTransform ( ) . test_unconditionallyBridgeFromObjectiveC ( ) }
408
425
AffineTransformTests . test ( " test_rotation_compose " ) { TestAffineTransform ( ) . test_rotation_compose ( ) }
409
426
runAllTests ( )
0 commit comments