Skip to content

Commit af044a2

Browse files
committed
[AffineTransform Tests] Add platform-independent Vector type.
1 parent cfed8d0 commit af044a2

File tree

1 file changed

+38
-30
lines changed

1 file changed

+38
-30
lines changed

Tests/Foundation/Tests/TestAffineTransform.swift

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@
1515
#endif
1616
#endif
1717

18+
// MARK: - Vector
19+
20+
// CGVector is only available on Darwin.
21+
public struct Vector {
22+
let dx: CGFloat
23+
let dy: CGFloat
24+
}
25+
1826
// MARK: - Tests
1927

2028
class TestAffineTransform: XCTestCase {
@@ -49,7 +57,7 @@ class TestAffineTransform: XCTestCase {
4957

5058
extension TestAffineTransform {
5159
func check(
52-
vector: CGVector,
60+
vector: Vector,
5361
withTransform transform: AffineTransform,
5462
mapsToPoint expectedPoint: CGPoint,
5563
mapsToSize expectedSize: CGSize,
@@ -194,7 +202,7 @@ extension TestAffineTransform {
194202
// = [ x*m11+y*m21+tX x*m12+y*m22+tY ]
195203

196204
check(
197-
vector: CGVector(dx: 10, dy: 20),
205+
vector: Vector(dx: 10, dy: 20),
198206
withTransform: AffineTransform(
199207
m11: 1, m12: 2,
200208
m21: 3, m22: 4,
@@ -213,7 +221,7 @@ extension TestAffineTransform {
213221
)
214222

215223
check(
216-
vector: CGVector(dx: 5, dy: 25),
224+
vector: Vector(dx: 5, dy: 25),
217225
withTransform: AffineTransform(
218226
m11: 5, m12: 4,
219227
m21: 3, m22: 2,
@@ -254,7 +262,7 @@ extension TestAffineTransform {
254262

255263
func testIdentity() {
256264
check(
257-
vector: CGVector(dx: 25, dy: 10),
265+
vector: Vector(dx: 25, dy: 10),
258266
withTransform: .identity,
259267
mapsToPoint: CGPoint(x: 25, y: 10),
260268
mapsToSize: CGSize(width: 25, height: 10)
@@ -288,7 +296,7 @@ extension TestAffineTransform {
288296

289297
func testTranslation() {
290298
check(
291-
vector: CGVector(dx: 10, dy: 10),
299+
vector: Vector(dx: 10, dy: 10),
292300
withTransform: AffineTransform(
293301
translationByX: 0, byY: 0
294302
),
@@ -297,7 +305,7 @@ extension TestAffineTransform {
297305
)
298306

299307
check(
300-
vector: CGVector(dx: 10, dy: 10),
308+
vector: Vector(dx: 10, dy: 10),
301309
withTransform: AffineTransform(
302310
translationByX: 0, byY: 5
303311
),
@@ -306,7 +314,7 @@ extension TestAffineTransform {
306314
)
307315

308316
check(
309-
vector: CGVector(dx: 10, dy: 10),
317+
vector: Vector(dx: 10, dy: 10),
310318
withTransform: AffineTransform(
311319
translationByX: 5, byY: 5
312320
),
@@ -315,7 +323,7 @@ extension TestAffineTransform {
315323
)
316324

317325
check(
318-
vector: CGVector(dx: -2, dy: -3),
326+
vector: Vector(dx: -2, dy: -3),
319327
// Translate by 5
320328
withTransform: {
321329
var transform = AffineTransform.identity
@@ -386,7 +394,7 @@ extension TestAffineTransform {
386394

387395
func testScaling() {
388396
check(
389-
vector: CGVector(dx: 10, dy: 10),
397+
vector: Vector(dx: 10, dy: 10),
390398
withTransform: AffineTransform(
391399
scaleByX: 1, byY: 0
392400
),
@@ -395,7 +403,7 @@ extension TestAffineTransform {
395403
)
396404

397405
check(
398-
vector: CGVector(dx: 10, dy: 10),
406+
vector: Vector(dx: 10, dy: 10),
399407
withTransform: AffineTransform(
400408
scaleByX: 0.5, byY: 1
401409
),
@@ -404,7 +412,7 @@ extension TestAffineTransform {
404412
)
405413

406414
check(
407-
vector: CGVector(dx: 10, dy: 10),
415+
vector: Vector(dx: 10, dy: 10),
408416
withTransform: AffineTransform(
409417
scaleByX: 0, byY: 2
410418
),
@@ -413,7 +421,7 @@ extension TestAffineTransform {
413421
)
414422

415423
check(
416-
vector: CGVector(dx: 10, dy: 10),
424+
vector: Vector(dx: 10, dy: 10),
417425
// Scale by (2, 0)
418426
withTransform: {
419427
var transform = AffineTransform.identity
@@ -442,7 +450,7 @@ extension TestAffineTransform {
442450
file: StaticString = #file,
443451
line: UInt = #line
444452
) {
445-
let vector = CGVector(dx: 10, dy: 15)
453+
let vector = Vector(dx: 10, dy: 15)
446454

447455
self.check(
448456
vector: vector, withTransform: rotation,
@@ -491,46 +499,46 @@ extension TestAffineTransform {
491499

492500
func testRotation() {
493501
check(
494-
vector: CGVector(dx: 10, dy: 15),
502+
vector: Vector(dx: 10, dy: 15),
495503
withTransform: AffineTransform(rotationByDegrees: 0),
496504
mapsToPoint: CGPoint(x: 10, y: 15),
497505
mapsToSize: CGSize(width: 10, height: 15)
498506
)
499507

500508
check(
501-
vector: CGVector(dx: 10, dy: 15),
509+
vector: Vector(dx: 10, dy: 15),
502510
withTransform: AffineTransform(rotationByDegrees: 1080),
503511
mapsToPoint: CGPoint(x: 10, y: 15),
504512
mapsToSize: CGSize(width: 10, height: 15)
505513
)
506514

507515
// Counter-clockwise rotation
508516
check(
509-
vector: CGVector(dx: 15, dy: 10),
517+
vector: Vector(dx: 15, dy: 10),
510518
withTransform: AffineTransform(rotationByRadians: .pi / 2),
511519
mapsToPoint: CGPoint(x: -10, y: 15),
512520
mapsToSize: CGSize(width: -10, height: 15)
513521
)
514522

515523
// Clockwise rotation
516524
check(
517-
vector: CGVector(dx: 15, dy: 10),
525+
vector: Vector(dx: 15, dy: 10),
518526
withTransform: AffineTransform(rotationByDegrees: -90),
519527
mapsToPoint: CGPoint(x: 10, y: -15),
520528
mapsToSize: CGSize(width: 10, height: -15)
521529
)
522530

523531
// Reflect about origin
524532
check(
525-
vector: CGVector(dx: 10, dy: 15),
533+
vector: Vector(dx: 10, dy: 15),
526534
withTransform: AffineTransform(rotationByRadians: .pi),
527535
mapsToPoint: CGPoint(x: -10, y: -15),
528536
mapsToSize: CGSize(width: -10, height: -15)
529537
)
530538

531539
// Composed reflection about origin
532540
check(
533-
vector: CGVector(dx: 10, dy: 15),
541+
vector: Vector(dx: 10, dy: 15),
534542
// Rotate by 180º
535543
withTransform: {
536544
var transform = AffineTransform.identity
@@ -551,7 +559,7 @@ extension TestAffineTransform {
551559
extension TestAffineTransform {
552560
func testTranslationScaling() {
553561
check(
554-
vector: CGVector(dx: 1, dy: 3),
562+
vector: Vector(dx: 1, dy: 3),
555563
// Translate by (2, 0) then scale by (5, -5)
556564
withTransform: {
557565
var transform = AffineTransform.identity
@@ -569,7 +577,7 @@ extension TestAffineTransform {
569577
)
570578

571579
check(
572-
vector: CGVector(dx: 3, dy: 1),
580+
vector: Vector(dx: 3, dy: 1),
573581
// Scale by (-5, 5) then scale by (0, 10)
574582
withTransform: {
575583
var transform = AffineTransform.identity
@@ -586,7 +594,7 @@ extension TestAffineTransform {
586594

587595
func testTranslationRotation() {
588596
check(
589-
vector: CGVector(dx: 10, dy: 10),
597+
vector: Vector(dx: 10, dy: 10),
590598
// Translate by (20, -5) then rotate by 90º
591599
withTransform: {
592600
var transform = AffineTransform.identity
@@ -601,7 +609,7 @@ extension TestAffineTransform {
601609
)
602610

603611
check(
604-
vector: CGVector(dx: 10, dy: 10),
612+
vector: Vector(dx: 10, dy: 10),
605613
// Rotate by 180º and then translate by (20, 15)
606614
withTransform: {
607615
var transform = AffineTransform.identity
@@ -618,7 +626,7 @@ extension TestAffineTransform {
618626

619627
func testScalingRotation() {
620628
check(
621-
vector: CGVector(dx: 20, dy: 5),
629+
vector: Vector(dx: 20, dy: 5),
622630
// Scale by (0.5, 3) then rotate by -90º
623631
withTransform: {
624632
var transform = AffineTransform.identity
@@ -633,7 +641,7 @@ extension TestAffineTransform {
633641
)
634642

635643
check(
636-
vector: CGVector(dx: 20, dy: 5),
644+
vector: Vector(dx: 20, dy: 5),
637645
// Rotate by -90º the scale by (0.5, 3)
638646
withTransform: {
639647
var transform = AffineTransform.identity
@@ -681,7 +689,7 @@ extension TestAffineTransform {
681689
}()
682690

683691
check(
684-
vector: CGVector(dx: 10, dy: 10),
692+
vector: Vector(dx: 10, dy: 10),
685693
withTransform: recoveredIdentity,
686694
mapsToPoint: CGPoint(x: 10, y: 10),
687695
mapsToSize: CGSize(width: 10, height: 10)
@@ -694,7 +702,7 @@ extension TestAffineTransform {
694702
extension TestAffineTransform {
695703
func testPrependTransform() {
696704
check(
697-
vector: CGVector(dx: 10, dy: 15),
705+
vector: Vector(dx: 10, dy: 15),
698706
withTransform: {
699707
var transform = AffineTransform.identity
700708
transform.prepend(.identity)
@@ -705,7 +713,7 @@ extension TestAffineTransform {
705713
)
706714

707715
check(
708-
vector: CGVector(dx: 10, dy: 15),
716+
vector: Vector(dx: 10, dy: 15),
709717
// Scale by 2 then translate by (10, 0)
710718
withTransform: {
711719
let scale = AffineTransform(scale: 2)
@@ -724,7 +732,7 @@ extension TestAffineTransform {
724732

725733
func testAppendTransform() {
726734
check(
727-
vector: CGVector(dx: 10, dy: 15),
735+
vector: Vector(dx: 10, dy: 15),
728736
withTransform: {
729737
var transform = AffineTransform.identity
730738
transform.append(.identity)
@@ -735,7 +743,7 @@ extension TestAffineTransform {
735743
)
736744

737745
check(
738-
vector: CGVector(dx: 10, dy: 15),
746+
vector: Vector(dx: 10, dy: 15),
739747
// Translate by (10, 0) then scale by 2
740748
withTransform: {
741749
let scale = AffineTransform(scale: 2)

0 commit comments

Comments
 (0)