public void SetFocusTest()
{
AutomationElement [] expectedFocusedElements = new AutomationElement [] {
textbox3Element, button2Element
};
button2Element.SetFocus();
AutomationFocusChangedEventHandler handler = (s, e) => actualFocusedElements.Add((AutomationElement)s);
At.AddAutomationFocusChangedEventHandler(handler);
actualFocusedElements.Clear();
textbox3Element.SetFocus();
Thread.Sleep(100);
Assert.AreEqual(textbox3Element, AutomationElement.FocusedElement, "FocusedElement");
button2Element.SetFocus();
Thread.Sleep(100);
Assert.AreEqual(button2Element, AutomationElement.FocusedElement, "FocusedElement");
Thread.Sleep(1000);
At.RemoveAutomationFocusChangedEventHandler(handler);
Assert.AreEqual(expectedFocusedElements.Length, actualFocusedElements.Count, "Event handler count");
for (int i = 0; i < actualFocusedElements.Count; i++)
{
Assert.AreEqual(expectedFocusedElements [i], actualFocusedElements [i], "Event handler sender #" + i);
}
}