summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla30317.cs
diff options
context:
space:
mode:
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.cs260
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
+ }
+}