maui-linux/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issu.../Issue1461.cs

287 строки
8.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals;
#if UITEST
using NUnit.Framework;
using Xamarin.UITest;
using Xamarin.UITest.iOS;
#endif
namespace Xamarin.Forms.Controls.Issues
{
#if UITEST
public static class Issue1461Helpers
{
public static bool ShouldRunTest (IApp app)
{
var appAs = app as iOSApp;
return (appAs != null && appAs.Device.IsTablet);
}
}
#endif
[Preserve (AllMembers = true)]
[Issue (IssueTracker.Github, 1461, "1461 - (Popover in Portrait and Landscape)", PlatformAffected.iOS)]
public class Issue1461 : TestContentPage
{
protected override async void Init ()
{
await Navigation.PushModalAsync (new Issue1461Page (MasterBehavior.Popover, false));
}
#if UITEST
[Test]
[UiTest (typeof (MasterDetailPage), "IsPresented")]
[UiTest (typeof (MasterDetailPage), "Master")]
public void Test1 ()
{
if (Issue1461Helpers.ShouldRunTest (RunningApp)) {
RunningApp.SetOrientationLandscape ();
var query = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (!query.Any (), "Master should not present");
RunningApp.Screenshot ("Master should not present");
RunningApp.SetOrientationPortrait ();
query = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (!query.Any (), "Master should not present");
RunningApp.Screenshot ("Master should not present");
RunningApp.Tap (q => q.Marked ("Go Back"));
} else {
Assert.Inconclusive ("Only run on iOS Tablet");
}
}
#endif
}
[Preserve (AllMembers = true)]
[Issue (IssueTracker.Github, 1461, "1461 - Default", PlatformAffected.iOS)]
public class Issue1461A : TestContentPage
{
protected override async void Init ()
{
await Navigation.PushModalAsync (new Issue1461Page (MasterBehavior.Default, null));
}
#if UITEST
[Test]
[UiTest (typeof (MasterDetailPage), "IsPresented")]
[UiTest (typeof (MasterDetailPage), "Master")]
public void Test2 ()
{
if (Issue1461Helpers.ShouldRunTest(RunningApp)) {
RunningApp.SetOrientationLandscape ();
var query = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (query.Any (), "Master should be present");
RunningApp.Screenshot ("Master should not present");
RunningApp.SetOrientationPortrait ();
query = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (!query.Any (), "Master should not present");
RunningApp.Screenshot ("Master should not present");
RunningApp.Tap (q => q.Marked ("Go Back"));
} else {
Assert.Inconclusive ("Only run on iOS Tablet");
}
}
#if UITEST
[Test]
[UiTest (typeof (MasterDetailPage), "Button")]
public void TestButton ()
{
if (Issue1461Helpers.ShouldRunTest(RunningApp)) {
RunningApp.SetOrientationLandscape ();
RunningApp.WaitForNoElement (q => q.Marked ("bank"));
RunningApp.SetOrientationPortrait ();
RunningApp.WaitForElement (q => q.Marked ("bank"));
} else {
Assert.Inconclusive ("Only run on iOS Tablet");
}
}
#endif
#endif
}
[Preserve (AllMembers = true)]
[Issue (IssueTracker.Github, 1461, "1461 - (Splitview in Landscape)", PlatformAffected.iOS)]
public class Issue1461B : TestContentPage
{
protected override async void Init ()
{
await Navigation.PushModalAsync (new Issue1461Page (MasterBehavior.SplitOnLandscape, null));
}
#if UITEST
[Test]
[UiTest (typeof (MasterDetailPage), "IsPresented")]
[UiTest (typeof (MasterDetailPage), "Master")]
public void Test3 ()
{
if (Issue1461Helpers.ShouldRunTest(RunningApp)) {
RunningApp.SetOrientationLandscape ();
var query = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (query.Any (), "Master should be present");
RunningApp.Screenshot ("Master should not present");
RunningApp.SetOrientationPortrait ();
query = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (!query.Any (), "Master should not present");
RunningApp.Screenshot ("Master should not present");
RunningApp.Tap (q => q.Marked ("Go Back"));
} else {
Assert.Inconclusive ("Only run on iOS Tablet");
}
}
#endif
}
[Preserve (AllMembers = true)]
[Issue (IssueTracker.Github, 1461, "1461 - (Splitview in Portrait)", PlatformAffected.iOS)]
public class Issue1461C : TestContentPage
{
protected override async void Init ()
{
await Navigation.PushModalAsync (new Issue1461Page (MasterBehavior.SplitOnPortrait, null));
}
#if UITEST
[Test]
[UiTest (typeof (MasterDetailPage), "IsPresented")]
[UiTest (typeof (MasterDetailPage), "Master")]
public void Test4 ()
{
if (Issue1461Helpers.ShouldRunTest(RunningApp)) {
RunningApp.SetOrientationPortrait ();
var s = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (s.Any (), "Master should be present");
RunningApp.Screenshot ("Master should present");
RunningApp.SetOrientationLandscape ();
s = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (!s.Any (), "Master should not present on landscape");
RunningApp.Screenshot ("Master should not present");
RunningApp.Tap (q => q.Marked ("Go Back"));
} else {
Assert.Inconclusive ("Only run on iOS Tablet");
}
}
#endif
}
[Preserve (AllMembers = true)]
[Issue (IssueTracker.Github, 1461, "1461 - (Splitview in Portrait and Landscape)", PlatformAffected.iOS)]
public class Issue1461D : TestContentPage
{
protected override async void Init ()
{
await Navigation.PushModalAsync (new Issue1461Page (MasterBehavior.Split, null));
}
#if UITEST
[Test]
[UiTest (typeof (MasterDetailPage), "IsPresented")]
[UiTest (typeof (MasterDetailPage), "Master")]
public void Test5 ()
{
if (Issue1461Helpers.ShouldRunTest(RunningApp)) {
RunningApp.SetOrientationPortrait ();
var s = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (s.Any (), "Master should be present");
RunningApp.Screenshot ("Master should be present");
RunningApp.SetOrientationLandscape ();
s = RunningApp.Query (q => q.Marked ("Master_Label"));
Assert.IsTrue (s.Any (), "Master should be present");
RunningApp.Screenshot ("Master should be present");
RunningApp.Tap (q => q.Marked ("Go Back"));
} else {
Assert.Inconclusive ("Only run on iOS Tablet");
}
}
#endif
}
internal sealed class Issue1461Page : MasterDetailPage
{
public Issue1461Page ()
: this (MasterBehavior.Default,null)
{ }
bool? _showButton;
public Issue1461Page (MasterBehavior state, bool? initState)
{
var btn = new Button { Text = "hide me" };
btn.Clicked += bnToggle_Clicked;
Master = new ContentPage {
Title = string.Format ("Master sample for {0}", state),
Icon = "bank.png",
Padding = Device.RuntimePlatform == Device.iOS ? new Thickness(5, 60, 5, 5) : new Thickness(5),
Content =
new StackLayout { Children = {
new Label {
Text = "Master Label",
AutomationId = "Master_Label",
BackgroundColor = Color.Gray
},
btn
}
},
//BackgroundColor = Color.Red
};
if(initState.HasValue)
_showButton = initState.Value;
var lbl = new Label {
HorizontalOptions = LayoutOptions.End,
BindingContext = this
};
lbl.SetBinding (Label.TextProperty, "IsPresented");
var bnToggle = new Button {
Text = "Toggle IsPresented",
};
var bnGoBack = new Button {
Text = "Go Back",
};
bnGoBack.Clicked += bnGoBack_Clicked;
bnToggle.Clicked += bnToggle_Clicked;
Detail = new NavigationPage( new ContentPage {
Title = "Detail Title",
Content = new StackLayout{ Spacing=10, Children= { lbl, bnToggle, bnGoBack} }
});
MasterBehavior = state;
}
public override bool ShouldShowToolbarButton ()
{
if (_showButton.HasValue)
return _showButton.Value;
return base.ShouldShowToolbarButton ();
}
async void bnGoBack_Clicked (object sender, EventArgs e)
{
await Navigation.PopModalAsync ();
}
async void bnToggle_Clicked (object sender, EventArgs e)
{
try {
IsPresented = !IsPresented;
} catch (InvalidOperationException ex) {
await DisplayAlert ("Error", ex.Message, "ok");
}
}
}
}