Add export method for transform string on UI Tests (#8532)
authorShane Neuville <shneuvil@microsoft.com>
Tue, 19 Nov 2019 00:54:56 +0000 (17:54 -0700)
committerGitHub <noreply@github.com>
Tue, 19 Nov 2019 00:54:56 +0000 (17:54 -0700)
* export transform string

* - add missing renderers to performance tracker

* Update Xamarin.Forms.ControlGallery.iOS/PerformanceTrackerRenderer.cs

Xamarin.Forms.ControlGallery.iOS/PerformanceTrackerRenderer.cs
Xamarin.Forms.Core.UITests.Shared/PlatformQueries.cs
Xamarin.Forms.Core.UITests.Shared/Utilities/ParsingUtils.cs

index 7706cb6..da98f0c 100644 (file)
@@ -1,5 +1,6 @@
 using CoreGraphics;
 using Foundation;
+using ObjCRuntime;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -15,6 +16,8 @@ using Xamarin.Forms.Platform.iOS;
 [assembly: ExportRenderer(typeof(ActivityIndicator), typeof(PerformanceTrackingActivityIndicator))]
 [assembly: ExportRenderer(typeof(BoxView), typeof(PerformanceTrackingBoxView))]
 [assembly: ExportRenderer(typeof(Button), typeof(PerformanceTrackingButton))]
+[assembly: ExportRenderer(typeof(ImageButton), typeof(PerformanceTrackingImageButton))]
+[assembly: ExportRenderer(typeof(CheckBox), typeof(PerformanceTrackingCheckBox))]
 [assembly: ExportRenderer(typeof(DatePicker), typeof(PerformanceTrackingDatePicker))]
 [assembly: ExportRenderer(typeof(Editor), typeof(PerformanceTrackingEditor))]
 [assembly: ExportRenderer(typeof(Entry), typeof(PerformanceTrackingEntry))]
@@ -31,6 +34,8 @@ using Xamarin.Forms.Platform.iOS;
 [assembly: ExportRenderer(typeof(TableView), typeof(PerformanceTrackingTableView))]
 [assembly: ExportRenderer(typeof(TimePicker), typeof(PerformanceTrackingTimePicker))]
 [assembly: ExportRenderer(typeof(WebView), typeof(PerformanceTrackingWebView))]
+[assembly: ExportRenderer(typeof(Entry), typeof(PerformanceTrackingMaterialEntry), new[] { typeof(VisualMarker.MaterialVisual) })]
+[assembly: ExportRenderer(typeof(Frame), typeof(PerformanceTrackingFrame))]
 
 namespace Xamarin.Forms.ControlGallery.iOS
 {
@@ -153,6 +158,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -196,6 +207,61 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
+               public override void Draw(CGRect rect)
+               {
+                       base.Draw(rect);
+                       Drawn++;
+               }
+
+               public override void LayoutSubviews()
+               {
+                       base.LayoutSubviews();
+
+                       MessagingCenter.Instance.Send((IDrawnObservable)this, PerformanceTrackerRenderer.SubviewAddedMessage);
+                       _watcher.SubscribeToDrawn(this);
+               }
+
+               protected override void Dispose(bool disposing)
+               {
+                       _watcher.Dispose();
+                       base.Dispose(disposing);
+               }
+       }
+
+       public class PerformanceTrackingFrame : FrameRenderer, IDrawnObservable
+       {
+               readonly SubviewWatcher<PerformanceTrackingFrame> _watcher;
+               int _Drawn;
+
+               public PerformanceTrackingFrame()
+               {
+                       _watcher = new SubviewWatcher<PerformanceTrackingFrame>(this);
+               }
+
+               [Export(nameof(IDrawnObservable.Drawn))]
+               public int Drawn
+               {
+                       get { return _Drawn; }
+                       set
+                       {
+                               WillChangeValue(nameof(IDrawnObservable.Drawn));
+                               _Drawn = value;
+                               DidChangeValue(nameof(IDrawnObservable.Drawn));
+                       }
+               }
+
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -239,6 +305,110 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
+               public override void Draw(CGRect rect)
+               {
+                       base.Draw(rect);
+                       Drawn++;
+               }
+
+               public override void LayoutSubviews()
+               {
+                       base.LayoutSubviews();
+
+                       MessagingCenter.Instance.Send((IDrawnObservable)this, PerformanceTrackerRenderer.SubviewAddedMessage);
+                       _watcher.SubscribeToDrawn(this);
+               }
+
+               protected override void Dispose(bool disposing)
+               {
+                       _watcher.Dispose();
+                       base.Dispose(disposing);
+               }
+       }
+
+       public class PerformanceTrackingImageButton : ImageButtonRenderer, IDrawnObservable
+       {
+               readonly SubviewWatcher<PerformanceTrackingImageButton> _watcher;
+               int _Drawn;
+
+               public PerformanceTrackingImageButton()
+               {
+                       _watcher = new SubviewWatcher<PerformanceTrackingImageButton>(this);
+               }
+
+               [Export(nameof(IDrawnObservable.Drawn))]
+               public int Drawn
+               {
+                       get { return _Drawn; }
+                       set
+                       {
+                               WillChangeValue(nameof(IDrawnObservable.Drawn));
+                               _Drawn = value;
+                               DidChangeValue(nameof(IDrawnObservable.Drawn));
+                       }
+               }
+
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
+               public override void Draw(CGRect rect)
+               {
+                       base.Draw(rect);
+                       Drawn++;
+               }
+
+               public override void LayoutSubviews()
+               {
+                       base.LayoutSubviews();
+
+                       MessagingCenter.Instance.Send((IDrawnObservable)this, PerformanceTrackerRenderer.SubviewAddedMessage);
+                       _watcher.SubscribeToDrawn(this);
+               }
+
+               protected override void Dispose(bool disposing)
+               {
+                       _watcher.Dispose();
+                       base.Dispose(disposing);
+               }
+       }
+
+       public class PerformanceTrackingCheckBox : CheckBoxRenderer, IDrawnObservable
+       {
+               readonly SubviewWatcher<PerformanceTrackingCheckBox> _watcher;
+               int _Drawn;
+
+               public PerformanceTrackingCheckBox()
+               {
+                       _watcher = new SubviewWatcher<PerformanceTrackingCheckBox>(this);
+               }
+
+               [Export(nameof(IDrawnObservable.Drawn))]
+               public int Drawn
+               {
+                       get { return _Drawn; }
+                       set
+                       {
+                               WillChangeValue(nameof(IDrawnObservable.Drawn));
+                               _Drawn = value;
+                               DidChangeValue(nameof(IDrawnObservable.Drawn));
+                       }
+               }
+
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -282,6 +452,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -325,6 +501,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -368,6 +550,61 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
+               public override void Draw(CGRect rect)
+               {
+                       base.Draw(rect);
+                       Drawn++;
+               }
+
+               public override void LayoutSubviews()
+               {
+                       base.LayoutSubviews();
+
+                       MessagingCenter.Instance.Send((IDrawnObservable)this, PerformanceTrackerRenderer.SubviewAddedMessage);
+                       _watcher.SubscribeToDrawn(this);
+               }
+
+               protected override void Dispose(bool disposing)
+               {
+                       _watcher.Dispose();
+                       base.Dispose(disposing);
+               }
+       }
+
+       public class PerformanceTrackingMaterialEntry : Material.iOS.MaterialEntryRenderer, IDrawnObservable
+       {
+               readonly SubviewWatcher<PerformanceTrackingMaterialEntry> _watcher;
+               int _Drawn;
+
+               public PerformanceTrackingMaterialEntry()
+               {
+                       _watcher = new SubviewWatcher<PerformanceTrackingMaterialEntry>(this);
+               }
+
+               [Export(nameof(IDrawnObservable.Drawn))]
+               public int Drawn
+               {
+                       get { return _Drawn; }
+                       set
+                       {
+                               WillChangeValue(nameof(IDrawnObservable.Drawn));
+                               _Drawn = value;
+                               DidChangeValue(nameof(IDrawnObservable.Drawn));
+                       }
+               }
+
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -411,6 +648,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -455,6 +698,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -499,6 +748,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -543,6 +798,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -586,6 +847,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -629,6 +896,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -672,6 +945,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -715,6 +994,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -758,6 +1043,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -801,6 +1092,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -844,6 +1141,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -887,6 +1190,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -930,6 +1239,12 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        }
                }
 
+               [Export("getLayerTransformString", ArgumentSemantic.Retain)]
+               public NSString GetLayerTransformString
+               {
+                       get => new NSString(Layer.Transform.ToString());
+               }
+
                public override void Draw(CGRect rect)
                {
                        base.Draw(rect);
@@ -996,4 +1311,4 @@ namespace Xamarin.Forms.ControlGallery.iOS
                        _View.Drawn++;
                }
        }
-}
\ No newline at end of file
+}
index 8d420db..61148cc 100644 (file)
@@ -17,15 +17,15 @@ namespace Xamarin.Forms.Core.UITests
                        { Button.TextColorProperty, Tuple.Create (new[] { "titleLabel", "textColor" }, false) },
                        { ImageButton.CornerRadiusProperty, Tuple.Create (new[] { "layer", "cornerRadius" }, false) },
                        { ImageButton.BorderWidthProperty, Tuple.Create (new[] { "layer", "borderWidth" }, false) },
-                       { View.AnchorXProperty, Tuple.Create (new[] { "layer", "transform" }, true) },
-                       { View.AnchorYProperty, Tuple.Create (new[] { "layer", "transform" }, true) },
+                       { View.AnchorXProperty, Tuple.Create (new[] { "getLayerTransformString" }, true) },
+                       { View.AnchorYProperty, Tuple.Create (new[] { "lgetLayerTransformString" }, true) },
                        { View.BackgroundColorProperty, Tuple.Create (new[] { "backgroundColor" }, false) },
                        { View.IsEnabledProperty, Tuple.Create (new[] { "isEnabled" }, false) },
                        { View.OpacityProperty, Tuple.Create (new [] { "alpha" }, true) },
-                       { View.RotationProperty, Tuple.Create (new[] { "layer", "transform" }, true) },
-                       { View.RotationXProperty, Tuple.Create (new[] { "layer", "transform" }, true) },
-                       { View.RotationYProperty, Tuple.Create (new[] { "layer", "transform" }, true) },
-                       { View.ScaleProperty, Tuple.Create (new[] { "layer", "transform" }, true) },
+                       { View.RotationProperty, Tuple.Create (new[] { "getLayerTransformString" }, true) },
+                       { View.RotationXProperty, Tuple.Create (new[] { "getLayerTransformString" }, true) },
+                       { View.RotationYProperty, Tuple.Create (new[] { "getLayerTransformString" }, true) },
+                       { View.ScaleProperty, Tuple.Create (new[] { "getLayerTransformString" }, true) },
                };
 
 #elif __ANDROID__ || __WINDOWS__
index 95568fd..e29b022 100644 (file)
@@ -36,19 +36,14 @@ namespace Xamarin.Forms.Core.UITests
                public static Matrix ParseCATransform3D (string CATransform3D)
                {
                        // Logger.Log (CATransform3D);
-                       char[] delimiters = { '<', ' ', '>' };
+                       char[] delimiters = { '[', ' ', ']', ';' };
                        string[] words = CATransform3D.Split (delimiters, StringSplitOptions.RemoveEmptyEntries);
 
                        List<double> numbers = new List<double> ();
 
                        // Each number is represented by 2 blocks returned by server
-                       for (int i = 0; i < (words.Length - 1); i += 2) {
-                               string word = words[i] + words[i + 1];
-                               var number = Int64.Parse (word, NumberStyles.HexNumber);
-                               byte[] bytes = BitConverter.GetBytes (number);
-                               byte[] reversedBytes = bytes.Reverse ().ToArray ();
-                               double value = BitConverter.ToDouble (reversedBytes, 0);
-                               numbers.Add (value);
+                       for (int i = 0; i < words.Length; i++) {
+                               numbers.Add (Convert.ToDouble(words[i]));
                        }
 
                        var transformationMatrix = new Matrix ();