FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix: iOS Affine Transform test verification · NativeScript/NativeScript@bcf0def · GitHub

Repository navigation

Commit bcf0def

Browse files
committed
fix: iOS Affine Transform test verification
1 parent 75ded6d commit bcf0def

4 files changed

Lines changed: 49 additions & 20 deletions

File tree

‎nativescript-core/ui/animation/animation.ios.ts‎

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,12 @@ export class Animation extends AnimationBase {
693693
}
694694
}
695695

696-
export function _getTransformMismatchErrorMessage(view: View): string {
696+
/**
697+
*
698+
* @param view
699+
* @param expectedAffineTransformString in the format [a, b, c, d, tx, ty] @see https://developer.apple.com/documentation/uikit/1624505-cgaffinetransformfromstring?language=objc a,b,c,d in radians
700+
*/
701+
export function _getTransformMismatchErrorMessage(view: View, expectedAffineTransformString?: string): string {
697702
// Order is important: translate, rotate, scale
698703
let result: CGAffineTransform = CGAffineTransformIdentity;
699704
const tx = view.translateX;
@@ -704,8 +709,12 @@ export function _getTransformMismatchErrorMessage(view: View): string {
704709
let viewTransform = NSStringFromCGAffineTransform(result);
705710
let nativeTransform = NSStringFromCGAffineTransform(view.nativeViewProtected.transform);
706711

707-
if (viewTransform !== nativeTransform) {
708-
return "View and Native transforms do not match. View: " + viewTransform + "; Native: " + nativeTransform;
712+
if (!expectedAffineTransformString) {
713+
expectedAffineTransformString = nativeTransform;
714+
}
715+
716+
if (viewTransform !== expectedAffineTransformString) {
717+
return "View transform does not match expected. View: " + viewTransform + "; Expected: " + expectedAffineTransformString;
709718
}
710719

711720
return undefined;

‎nativescript-core/ui/core/view/view.ios.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
import { ios } from "./view-helper";
1010
import { ios as iosBackground, Background } from "../../styling/background";
1111
import { ios as iosUtils } from "../../../utils/utils";
12+
import { ios as iosNativeHelper } from "../../../utils/native-helper";
1213
import {
1314
perspectiveProperty, Visibility,
1415
visibilityProperty, opacityProperty,
@@ -354,7 +355,7 @@ export class View extends ViewCommon implements ViewDefinition {
354355
let transform = CATransform3DIdentity;
355356
transform.m34 = -1 / perspective;
356357
transform = CATransform3DTranslate(transform, this.translateX, this.translateY, 0);
357-
transform = iosUtils.applyRotateTransform(transform, this.rotateX, this.rotateY, this.rotate);
358+
transform = iosNativeHelper.applyRotateTransform(transform, this.rotateX, this.rotateY, this.rotate);
358359
transform = CATransform3DScale(transform, scaleX, scaleY, 1);
359360
this.ios.layer.transform = transform;
360361
if (!CATransform3DEqualToTransform(this.ios.layer.transform, transform)) {

‎nativescript-core/utils/utils.ios.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ export function openUrl(location: string): boolean {
4848
return false;
4949
}
5050

51-
mainScreenScale
51+
mainScreenScale = UIScreen.mainScreen.scale;

‎tests/app/ui/animation/animation-tests.ts‎

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ export function test_AnimatingProperties(done) {
5050
.then(() => {
5151
//console.log("Animation finished.");
5252
// >> (hide)
53-
assertIOSNativeTransformIsCorrect(label);
53+
const expectedIOSAffineTransform = "[-2, 2.4492935982947064e-16, -2.4492935982947064e-16, -2, 100, 100]";
54+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
5455
done();
5556
// << (hide)
5657
})
@@ -163,7 +164,8 @@ export function test_ChainingAnimations(done) {
163164
.then(() => {
164165
//console.log("Animation finished");
165166
// >> (hide)
166-
assertIOSNativeTransformIsCorrect(label);
167+
const expectedIOSAffineTransform = "[1, 0, 0, 1, 0, 0]";
168+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
167169
done();
168170
// << (hide)
169171
})
@@ -192,7 +194,8 @@ export function test_ReusingAnimations(done) {
192194
.then(() => {
193195
//console.log("Animation finished");
194196
// >> (hide)
195-
assertIOSNativeTransformIsCorrect(label);
197+
const expectedIOSAffineTransform = "[1, 0, 0, 1, 0, 0]";
198+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
196199
done();
197200
// << (hide)
198201
})
@@ -231,9 +234,10 @@ export function test_AnimatingMultipleViews(done) {
231234
.then(() => {
232235
//console.log("Animations finished");
233236
// >> (hide)
234-
assertIOSNativeTransformIsCorrect(label1);
235-
assertIOSNativeTransformIsCorrect(label2);
236-
assertIOSNativeTransformIsCorrect(label3);
237+
const expectedIOSAffineTransform = "[1, 0, 0, 1, 200, 200]";
238+
assertIOSNativeTransformIsCorrect(label1, expectedIOSAffineTransform);
239+
assertIOSNativeTransformIsCorrect(label2, expectedIOSAffineTransform);
240+
assertIOSNativeTransformIsCorrect(label3, expectedIOSAffineTransform);
237241
done();
238242
// << (hide)
239243
})
@@ -367,7 +371,9 @@ export function test_AnimateTranslate(done) {
367371
.then(() => {
368372
TKUnit.assertEqual(label.translateX, 100, "label.translateX");
369373
TKUnit.assertEqual(label.translateY, 200, "label.translateY");
370-
assertIOSNativeTransformIsCorrect(label);
374+
375+
const expectedIOSAffineTransform = "[1, 0, 0, 1, 100, 200]";
376+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
371377
done();
372378
})
373379
.catch((e) => {
@@ -382,7 +388,9 @@ export function test_AnimateScale(done) {
382388
.then(() => {
383389
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
384390
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
385-
assertIOSNativeTransformIsCorrect(label);
391+
392+
const expectedIOSAffineTransform = "[2, 0, 0, 3, 0, 0]";
393+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
386394
done();
387395
})
388396
.catch((e) => {
@@ -396,7 +404,9 @@ export function test_AnimateRotate(done) {
396404
label.animate({ rotate: 123, duration: 5 })
397405
.then(() => {
398406
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
399-
assertIOSNativeTransformIsCorrect(label);
407+
408+
const expectedIOSAffineTransform = "[-0.54463903501502708, 0.83867056794542405, -0.83867056794542405, -0.54463903501502708, 0, 0]";
409+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
400410
done();
401411
})
402412
.catch((e) => {
@@ -433,6 +443,7 @@ function animateExtentAndAssertExpected(along: "height" | "width", value: Percen
433443
expectedNumber,
434444
`PercentLength.toDevicePixels(${inputString}) should be "${expectedNumber}" but is "${observedNumber}"`
435445
);
446+
436447
assertIOSNativeTransformIsCorrect(label);
437448
});
438449
}
@@ -524,7 +535,9 @@ export function test_AnimateTranslateScaleAndRotateSimultaneously(done) {
524535
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
525536
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
526537
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
527-
assertIOSNativeTransformIsCorrect(label);
538+
539+
const expectedIOSAffineTransform = "[-1.0892780700300542, 1.6773411358908481, -2.5160117038362722, -1.6339171050450814, 100, 200]";
540+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
528541
done();
529542
})
530543
.catch((e) => {
@@ -539,7 +552,9 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) {
539552
.then(() => {
540553
TKUnit.assertEqual(label.translateX, 100, "label.translateX");
541554
TKUnit.assertEqual(label.translateY, 200, "label.translateY");
542-
assertIOSNativeTransformIsCorrect(label);
555+
556+
const expectedIOSAffineTransform = "[1, 0, 0, 1, 100, 200]";
557+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
543558

544559
return label.animate({ scale: { x: 2, y: 3 }, duration: 5 });
545560
})
@@ -548,7 +563,9 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) {
548563
TKUnit.assertEqual(label.translateY, 200, "label.translateY");
549564
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
550565
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
551-
assertIOSNativeTransformIsCorrect(label);
566+
567+
const expectedIOSAffineTransform = "[2, 0, 0, 3, 100, 200]";
568+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
552569

553570
return label.animate({ rotate: 123, duration: 5 });
554571
})
@@ -558,7 +575,9 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) {
558575
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
559576
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
560577
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
561-
assertIOSNativeTransformIsCorrect(label);
578+
579+
const expectedIOSAffineTransform = "[-1.0892780700300542, 1.6773411358908481, -2.5160117038362722, -1.6339171050450814, 100, 200]";
580+
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
562581
done();
563582
})
564583
.catch((e) => {
@@ -620,9 +639,9 @@ export function test_PlayPromiseIsRejectedWhenAnimationIsCancelled(done) {
620639
animation.cancel();
621640
}
622641

623-
function assertIOSNativeTransformIsCorrect(view: viewModule.View) {
642+
function assertIOSNativeTransformIsCorrect(view: viewModule.View, expectedIOSAffineTransformString?: string) {
624643
if (view.ios) {
625-
var errorMessage = (<any>animation)._getTransformMismatchErrorMessage(view);
644+
var errorMessage = (<any>animation)._getTransformMismatchErrorMessage(view, expectedIOSAffineTransformString);
626645
if (errorMessage) {
627646
TKUnit.assert(false, errorMessage);
628647
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL