Quellcode durchsuchen

Refactor PlatformFact.

To make it inclusive rather than exclusive.
Steven Kirk vor 3 Jahren
Ursprung
Commit
8b9e675bd4

+ 1 - 1
tests/Avalonia.IntegrationTests.Appium/ButtonTests.cs

@@ -44,7 +44,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("Button with TextBlock", button.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void ButtonWithAcceleratorKey()
         {
             var button = _session.FindElementByAccessibilityId("ButtonWithAcceleratorKey");

+ 3 - 3
tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs

@@ -46,7 +46,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("Item 0", comboBox.GetComboBoxValue());
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Can_Change_Selection_With_Keyboard()
         {
             var comboBox = _session.FindElementByAccessibilityId("BasicComboBox");
@@ -63,7 +63,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("Item 1", comboBox.GetComboBoxValue());
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Can_Change_Selection_With_Keyboard_From_Unselected()
         {
             var comboBox = _session.FindElementByAccessibilityId("BasicComboBox");
@@ -80,7 +80,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("Item 0", comboBox.GetComboBoxValue());
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Can_Cancel_Keyboard_Selection_With_Escape()
         {
             var comboBox = _session.FindElementByAccessibilityId("BasicComboBox");

+ 1 - 1
tests/Avalonia.IntegrationTests.Appium/ListBoxTests.cs

@@ -61,7 +61,7 @@ namespace Avalonia.IntegrationTests.Appium
         }
 
         // appium-mac2-driver just hangs
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Can_Select_Range_By_Shift_Clicking()
         {
             var listBox = GetTarget();

+ 8 - 8
tests/Avalonia.IntegrationTests.Appium/MenuTests.cs

@@ -57,7 +57,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("_Grandchild", clickedMenuItem.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Select_Child_With_Alt_Arrow_Keys()
         {
             new Actions(_session)
@@ -69,7 +69,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("_Child 1", clickedMenuItem.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Select_Grandchild_With_Alt_Arrow_Keys()
         {
             new Actions(_session)
@@ -81,7 +81,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("_Grandchild", clickedMenuItem.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Select_Child_With_Alt_Access_Keys()
         {
             new Actions(_session)
@@ -93,7 +93,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("_Child 1", clickedMenuItem.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Select_Grandchild_With_Alt_Access_Keys()
         {
             new Actions(_session)
@@ -105,7 +105,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("_Grandchild", clickedMenuItem.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Select_Child_With_Click_Arrow_Keys()
         {
             var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
@@ -119,7 +119,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("_Child 1", clickedMenuItem.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Select_Grandchild_With_Click_Arrow_Keys()
         {
             var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
@@ -133,7 +133,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("_Grandchild", clickedMenuItem.Text);
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void Child_AcceleratorKey()
         {
             var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
@@ -145,7 +145,7 @@ namespace Avalonia.IntegrationTests.Appium
             Assert.Equal("Ctrl+O", childMenuItem.GetAttribute("AcceleratorKey"));
         }
 
-        [PlatformFact(SkipOnOSX = true)]
+        [PlatformFact(TestPlatforms.Windows)]
         public void PointerOver_Does_Not_Steal_Focus()
         {
             // Issue #7906

+ 1 - 1
tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs

@@ -17,7 +17,7 @@ namespace Avalonia.IntegrationTests.Appium
             tab.Click();
         }
 
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void View_Menu_Select_Button_Tab()
         {
             var tabs = _session.FindElementByAccessibilityId("MainTabs");

+ 22 - 10
tests/Avalonia.IntegrationTests.Appium/PlatformFactAttribute.cs

@@ -5,21 +5,33 @@ using Xunit;
 
 namespace Avalonia.IntegrationTests.Appium
 {
+    [Flags]
+    internal enum TestPlatforms
+    {
+        Windows = 0x01,
+        MacOS = 0x02,
+        All = Windows | MacOS,
+    }
+    
     internal class PlatformFactAttribute : FactAttribute
     {
+        public PlatformFactAttribute(TestPlatforms platforms = TestPlatforms.All) => Platforms = platforms;
+        
+        public TestPlatforms Platforms { get; }
+        
         public override string? Skip
         {
-            get
-            {
-                if (SkipOnWindows && RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
-                    return "Ignored on Windows";
-                if (SkipOnOSX && RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
-                    return "Ignored on MacOS";
-                return null;
-            }
+            get => IsSupported() ? null : $"Ignored on {RuntimeInformation.OSDescription}";
             set => throw new NotSupportedException();
         }
-        public bool SkipOnOSX { get; set; }
-        public bool SkipOnWindows { get; set; }
+
+        private bool IsSupported()
+        {
+            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+                return Platforms.HasAnyFlag(TestPlatforms.Windows);
+            if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
+                return Platforms.HasAnyFlag(TestPlatforms.MacOS);
+            return false;
+        }
     }
 }

+ 7 - 7
tests/Avalonia.IntegrationTests.Appium/WindowTests.cs

@@ -54,7 +54,7 @@ namespace Avalonia.IntegrationTests.Appium
             }
         }
 
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void OSX_WindowOrder_Modal_Dialog_Stays_InFront_Of_Parent()
         {
             var mainWindow = _session.FindElementByAccessibilityId("MainWindow");
@@ -73,7 +73,7 @@ namespace Avalonia.IntegrationTests.Appium
             }
         }
         
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void OSX_WindowOrder_Modal_Dialog_Stays_InFront_Of_Parent_When_Clicking_Resize_Grip()
         {
             var mainWindow = _session.FindWindowOuter("MainWindow");
@@ -100,7 +100,7 @@ namespace Avalonia.IntegrationTests.Appium
             }
         }
         
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void OSX_WindowOrder_Modal_Dialog_Stays_InFront_Of_Parent_When_In_Fullscreen()
         {
             var mainWindow = _session.FindWindowOuter("MainWindow");
@@ -129,7 +129,7 @@ namespace Avalonia.IntegrationTests.Appium
             }
         }
         
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void OSX_WindowOrder_Owned_Dialog_Stays_InFront_Of_Parent()
         {
             var mainWindow = _session.FindElementByAccessibilityId("MainWindow");
@@ -148,7 +148,7 @@ namespace Avalonia.IntegrationTests.Appium
             }
         }
 
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void OSX_WindowOrder_NonOwned_Window_Does_Not_Stay_InFront_Of_Parent()
         {
             var mainWindow = _session.FindElementByAccessibilityId("MainWindow");
@@ -173,7 +173,7 @@ namespace Avalonia.IntegrationTests.Appium
             }
         }
 
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void OSX_Parent_Window_Has_Disabled_ChromeButtons_When_Modal_Dialog_Shown()
         {
             var mainWindowHandle = GetCurrentWindowHandleHack();
@@ -196,7 +196,7 @@ namespace Avalonia.IntegrationTests.Appium
             }
         }
         
-        [PlatformFact(SkipOnWindows = true)]
+        [PlatformFact(TestPlatforms.MacOS)]
         public void OSX_Minimize_Button_Disabled_Modal_Dialog()
         {
             var mainWindowHandle = GetCurrentWindowHandleHack();