diff options
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla30317.cs')
-rw-r--r-- | Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla30317.cs | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla30317.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla30317.cs new file mode 100644 index 00000000..7cc07709 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla30317.cs @@ -0,0 +1,260 @@ +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 + } +} |