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

261 строка
7.7 KiB
C#

using System;
using Xamarin.Forms.CustomAttributes;
#if UITEST
using Xamarin.UITest;
using NUnit.Framework;
using Xamarin.UITest.Android;
using System.Collections.Generic;
#endif
namespace Xamarin.Forms.Controls
{
[Preserve (AllMembers = true)]
[Issue (IssueTracker.Bugzilla, 30317, "https://bugzilla.xamarin.com/show_bug.cgi?id=30137")]
public class Bugzilla30317 : TestNavigationPage // or TestMasterDetailPage, etc ...
{
[Preserve (AllMembers = true)]
public class Bugzilla30317ListItem
{
public string Label { get; set; }
}
[Preserve (AllMembers = true)]
public class Bugzilla30317ListCell : ViewCell
{
public Bugzilla30317ListCell()
{
var label = new Label (); ;
label.SetBinding(Label.TextProperty, "Label");
View = label;
}
}
[Preserve (AllMembers = true)]
public class Bugzilla30317Page1 : ContentPage
{
ListView _listView;
public Bugzilla30317Page1 ()
{
AutomationId = "PageOne";
Title = "Set ItemSource On Appearing";
_listView = new ListView ();
_listView.ItemTemplate = new DataTemplate(typeof(Bugzilla30317ListCell));
var nextPageButton = new Button {
AutomationId = "GoToPageTwoButton",
Text = "Go Page 2",
Command = new Command (async () => {
await Navigation.PushAsync (new Bugzilla30317Page2 ());
})
};
Content = new StackLayout { Children = { nextPageButton, _listView } };
}
protected override void OnAppearing ()
{
base.OnAppearing ();
_listView.ItemsSource = new Bugzilla30317ListItem[] {
new Bugzilla30317ListItem { Label = "PageOneItem1" },
new Bugzilla30317ListItem { Label = "PageOneItem2" },
new Bugzilla30317ListItem { Label = "PageOneItem3" },
new Bugzilla30317ListItem { Label = "PageOneItem4" },
new Bugzilla30317ListItem { Label = "PageOneItem5" },
};
}
}
[Preserve (AllMembers = true)]
public class Bugzilla30317Page2 : ContentPage
{
public Bugzilla30317Page2 ()
{
AutomationId = "PageTwo";
Title = "Set ItemSource in ctor";
var listView = new ListView ();
listView.ItemTemplate = new DataTemplate(typeof(Bugzilla30317ListCell));
listView.ItemsSource = new Bugzilla30317ListItem[] {
new Bugzilla30317ListItem { Label = "PageTwoItem1" },
new Bugzilla30317ListItem { Label = "PageTwoItem2" },
new Bugzilla30317ListItem { Label = "PageTwoItem3" },
new Bugzilla30317ListItem { Label = "PageTwoItem4" },
new Bugzilla30317ListItem { Label = "PageTwoItem5" },
};
var nextPageButton = new Button {
AutomationId = "GoToPageThreeButton",
Text = "Go Page 3",
Command = new Command (async () => {
await Navigation.PushModalAsync (new Bugzilla30317Page3 ());
})
};
Content = new StackLayout { Children = { nextPageButton, listView } };
}
}
[Preserve (AllMembers = true)]
public class Bugzilla30317Page3TabOne : ContentPage
{
public Bugzilla30317Page3TabOne ()
{
AutomationId = "TabbedPageOne";
Title = "TabOneCtor";
var listView = new ListView ();
listView.ItemTemplate = new DataTemplate(typeof(Bugzilla30317ListCell));
listView.ItemsSource = new Bugzilla30317ListItem[] {
new Bugzilla30317ListItem { Label = "PageThreeTabOneItem1" },
new Bugzilla30317ListItem { Label = "PageThreeTabOneItem2" },
new Bugzilla30317ListItem { Label = "PageThreeTabOneItem3" },
new Bugzilla30317ListItem { Label = "PageThreeTabOneItem4" },
new Bugzilla30317ListItem { Label = "PageThreeTabOneItem5" },
};
Content = listView;
}
}
[Preserve (AllMembers = true)]
public class Bugzilla30317Page3TabTwo : ContentPage
{
ListView _listView;
public Bugzilla30317Page3TabTwo ()
{
AutomationId = "TabbedPageTwo";
Title = "TabTwoOnAppearing";
_listView = new ListView ();
_listView.ItemTemplate = new DataTemplate(typeof(Bugzilla30317ListCell));
Content = _listView;
}
protected override void OnAppearing ()
{
base.OnAppearing ();
_listView.ItemsSource = new Bugzilla30317ListItem[] {
new Bugzilla30317ListItem { Label = "PageThreeTabTwoItem1" },
new Bugzilla30317ListItem { Label = "PageThreeTabTwoItem2" },
new Bugzilla30317ListItem { Label = "PageThreeTabTwoItem3" },
new Bugzilla30317ListItem { Label = "PageThreeTabTwoItem4" },
new Bugzilla30317ListItem { Label = "PageThreeTabTwoItem5" },
};
}
}
[Preserve (AllMembers = true)]
public class Bugzilla30317Page3 : TabbedPage
{
public Bugzilla30317Page3 ()
{
Children.Add (new Bugzilla30317Page3TabOne ());
Children.Add (new Bugzilla30317Page3TabTwo ());
}
}
protected override void Init ()
{
Navigation.PushAsync (new Bugzilla30317Page1 ());
}
#if UITEST
[Test]
public void Bugzilla30317ItemSourceOnAppearingContentPage ()
{
if (RunningApp is AndroidApp) {
RunningApp.Screenshot ("I am at Bugzilla30317");
RunningApp.WaitForElement (q => q.Marked ("PageOne"));
RunningApp.Screenshot ("I see Page 1");
RunningApp.WaitForElement (q => q.Marked ("PageOneItem1"));
RunningApp.TouchAndHold (q => q.Marked ("PageOneItem1"));
RunningApp.WaitForElement (q => q.Marked ("PageOneItem5"));
RunningApp.TouchAndHold (q => q.Marked ("PageOneItem5"));
RunningApp.Screenshot ("I did not crash");
} else {
Assert.Inconclusive ("Not run on iOS");
}
}
[Test]
public void Bugzilla30317ItemSourceCtorContentPage ()
{
if (RunningApp is AndroidApp) {
RunningApp.WaitForElement (q => q.Marked ("GoToPageTwoButton"));
RunningApp.Tap (q => q.Marked ("GoToPageTwoButton"));
RunningApp.WaitForElement (q => q.Marked ("PageTwo"));
RunningApp.Screenshot ("I see Page 2");
RunningApp.WaitForElement (q => q.Marked ("PageTwoItem1"));
RunningApp.TouchAndHold (q => q.Marked ("PageTwoItem1"));
RunningApp.WaitForElement (q => q.Marked ("PageTwoItem5"));
RunningApp.TouchAndHold (q => q.Marked ("PageTwoItem5"));
RunningApp.Screenshot ("I did not crash");
} else {
Assert.Inconclusive ("Not run on iOS");
}
}
[Test]
public void Bugzilla30317ItemSourceTabbedPage ()
{
if (RunningApp is AndroidApp) {
RunningApp.WaitForElement (q => q.Marked ("GoToPageTwoButton"));
RunningApp.Tap (q => q.Marked ("GoToPageTwoButton"));
RunningApp.Screenshot ("I see Page 2");
RunningApp.WaitForElement (q => q.Marked ("PageTwo"));
RunningApp.WaitForElement (q => q.Marked ("GoToPageThreeButton"));
RunningApp.Tap (q => q.Marked ("GoToPageThreeButton"));
RunningApp.Screenshot ("I see TabbedPage One");
RunningApp.WaitForElement (q => q.Marked ("TabOneCtor"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabOneItem1"));
RunningApp.TouchAndHold (q => q.Marked ("PageThreeTabOneItem1"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabOneItem1"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabOneItem5"));
RunningApp.TouchAndHold (q => q.Marked ("PageThreeTabOneItem5"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabOneItem5"));
RunningApp.Screenshot ("I see TabbedPage Two");
RunningApp.WaitForElement (q => q.Marked ("TabTwoOnAppearing"));
RunningApp.Tap (q => q.Marked ("TabTwoOnAppearing"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabTwoItem1"));
RunningApp.TouchAndHold (q => q.Marked ("PageThreeTabTwoItem1"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabTwoItem1"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabTwoItem5"));
RunningApp.TouchAndHold (q => q.Marked ("PageThreeTabTwoItem5"));
RunningApp.WaitForElement (q => q.Marked ("PageThreeTabTwoItem5"));
} else {
Assert.Inconclusive ("Not run on iOS");
}
}
#endif
}
}