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

112 строки
2.8 KiB
C#

using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals;
using System;
#if UITEST
using Xamarin.UITest;
using NUnit.Framework;
#endif
namespace Xamarin.Forms.Controls.Issues
{
[Preserve(AllMembers = true)]
[Issue(IssueTracker.Bugzilla, 52419, "[A] OnAppearing called for previous pages in a tab's navigation when switching active tabs", PlatformAffected.Android)]
public class Bugzilla52419 : TestTabbedPage
{
protected override void Init()
{
var nav1 = new NavigationPage { Title = "Tab Page 1" };
nav1.PushAsync(new Bugzilla52419Page1());
var nav2 = new NavigationPage { Title = "Tab Page 2" };
nav2.PushAsync(new Bugzilla52419Page2());
Children.Add(nav1);
Children.Add(nav2);
}
#if UITEST
#if __ANDROID__
[Test]
public void Bugzilla52419Test()
{
RunningApp.WaitForElement(q => q.Marked("Push new page"));
RunningApp.Tap(q => q.Marked("Push new page"));
RunningApp.WaitForElement(q => q.Marked("Push new page"));
RunningApp.Tap(q => q.Marked("Push new page"));
RunningApp.WaitForElement(q => q.Marked("Push new page"));
RunningApp.Tap(q => q.Marked("Push new page"));
RunningApp.Tap(q => q.Marked("Tab Page 2"));
RunningApp.Tap(q => q.Marked("Tab Page 1"));
RunningApp.Tap(q => q.Marked("Tab Page 2"));
RunningApp.Tap(q => q.Marked("Tab Page 1"));
RunningApp.Back();
RunningApp.WaitForElement(q => q.Marked("AppearanceLabel"));
var label = RunningApp.Query(q => q.Marked("AppearanceLabel"))[0];
Assert.AreEqual("Times Appeared: 2", label.Text);
}
#endif
#endif
}
class Bugzilla52419Page1 : ContentPage
{
public Label _timesAppeared { get; set; }
int _count;
string _guid = Guid.NewGuid().ToString();
public Bugzilla52419Page1()
{
_timesAppeared = new Label
{
Text = "Times Appeared: " + _count.ToString(),
AutomationId = "AppearanceLabel"
};
Content = new StackLayout
{
Children =
{
new Label
{
Text = "Page Guid: " + _guid
},
_timesAppeared,
new Label
{
Text = "Click the button a couple times, switch to the second tab, and then back to the first. The Appearing event (which increase the counter) should only occur for the visible first tab."
},
new Button
{
Text = "Push new page",
Command = new Command(() => Navigation.PushAsync(new Bugzilla52419Page1()))
}
}
};
Appearing += OnAppearing;
}
void OnAppearing(object sender, EventArgs e)
{
_count++;
_timesAppeared.Text = "Times Appeared: " + _count.ToString();
}
}
class Bugzilla52419Page2 : ContentPage
{
public Bugzilla52419Page2()
{
Title = "Tab Page 2";
Content = new StackLayout
{
Children =
{
new Label
{
Text = "Other content"
}
}
};
}
}
}