public void ISelectionProviderEventTest ()
{
TabControl tc = new TabControl ();
TabPage tp1 = new TabPage ();
TabPage tp2 = new TabPage ();
tc.Controls.Add (tp1);
tc.Controls.Add (tp2);
Form.Controls.Add (tc);
IRawElementProviderSimple provider
= ProviderFactory.GetProvider (tc);
ISelectionProvider selectionProvider
= provider.GetPatternProvider (
SelectionPatternIdentifiers.Pattern.Id) as ISelectionProvider;
Assert.IsNotNull (selectionProvider, "Not returning SelectionPatternIdentifiers.");
tc.SelectTab (0);
// Case 1: Select currently selected tab
bridge.ResetEventLists ();
tc.SelectTab (0);
Assert.AreEqual (0, bridge.AutomationEvents.Count,
"EventCount after selecting selected tab");
// Case 2: Select different tab
bridge.ResetEventLists ();
tc.SelectTab (1);
Assert.AreEqual (1,
bridge.GetAutomationPropertyEventCount (SelectionPatternIdentifiers.SelectionProperty),
"EventCount after selecting new tab");
IRawElementProviderSimple[] pageProviders
= selectionProvider.GetSelection ();
Assert.IsNotNull (pageProviders, "Null selection returned");
Assert.AreEqual (1, pageProviders.Length,
"Less/More than one selected page returned");
IRawElementProviderSimple child
= ((IRawElementProviderFragmentRoot) provider)
.Navigate (NavigateDirection.FirstChild);
Assert.IsNotNull (child, "First child is null");
child = ((IRawElementProviderFragment) child)
.Navigate (NavigateDirection.NextSibling);
Assert.IsNotNull (child, "Second child is null");
Assert.AreEqual (child, pageProviders[0],
"Selected child and second child aren't equal");
IRawElementProviderSimple pageProvider = pageProviders[0];
// TODO: flesh this out when we implement TabPageProvider
Assert.IsNotNull (pageProvider);
}