Ejemplo n.º 1
0
 public void OnePlusTwoEnter()
 {
     using (UIEventWaiter waiter = this.ObjectModel.GetDisplayChangedWaiter())
     {
         Log.Comment("Invoking 1");
         this.ObjectModel.NumPad.OneButton.Invoke();
         waiter.TryWait();
     }
     using (UIEventWaiter waiter = this.ObjectModel.GetExpressionChangedWaiter())
     {
         Log.Comment("Pressing +");
         this.ObjectModel.SendKeys("{ADD}");
         // PropertyChangeWaiter is unreliable for the first name changed notification
         // Bug 17624996: PropertyChanged event not fired when Name is updated for the first time for a control with custom automation peer.
         waiter.TryWait();
     }
     using (UIEventWaiter waiter = this.ObjectModel.GetDisplayChangedWaiter())
     {
         Log.Comment("Pressing 2");
         this.ObjectModel.SendKeys("2");
         waiter.TryWait();
     }
     // When pressing enter, both the display and the expression change.
     using (UIEventWaiter expressionWaiter = this.ObjectModel.GetExpressionChangedWaiter())
         using (UIEventWaiter displayWaiter = this.ObjectModel.GetDisplayChangedWaiter())
         {
             Log.Comment("Invoking equals");
             this.ObjectModel.EqualButton.Invoke();
             expressionWaiter.TryWait();
             displayWaiter.TryWait();
         }
 }
 private bool WaitForCheckBoxUpdated(CheckBox checkBox, ToggleState state, double millisecondsTimeout, bool throwOnError)
 {
     using (UIEventWaiter waiter = checkBox.GetToggledWaiter())
     {
         Log.Comment(checkBox.Name + " Checked: " + checkBox.ToggleState);
         if (checkBox.ToggleState == state)
         {
             return(true);
         }
         else
         {
             Log.Comment("Waiting for toggle state to change to {0} for {1}ms", state, millisecondsTimeout);
             waiter.TryWait(TimeSpan.FromMilliseconds(millisecondsTimeout));
         }
         if (checkBox.ToggleState != state)
         {
             Log.Warning(checkBox.Name + " value never changed");
             if (throwOnError)
             {
                 throw new WaiterException();
             }
             else
             {
                 return(false);
             }
         }
         return(true);
     }
 }
Ejemplo n.º 3
0
 public void Clear()
 {
     using (UIEventWaiter waiter = this.ObjectModel.GetDisplayChangedWaiter())
     {
         Log.Comment("Pressing escape");
         this.ObjectModel.ClearButton.Invoke();
         waiter.TryWait();
     }
 }
 public void PressPlus()
 {
     using (UIEventWaiter waiter = this.ObjectModel.GetExpressionChangedWaiter())
     {
         Log.Comment("Invoking plus");
         this.ObjectModel.PlusButton.Invoke();
         waiter.TryWait();
     }
 }
 public void Press4()
 {
     using (UIEventWaiter waiter = this.ObjectModel.GetDisplayChangedWaiter())
     {
         Log.Comment("Invoking 4");
         this.ObjectModel.FourButton.Invoke();
         waiter.TryWait();
     }
 }
 public void Press2()
 {
     using (UIEventWaiter waiter = this.ObjectModel.GetDisplayChangedWaiter())
     {
         Log.Comment("Invoking 2");
         this.ObjectModel.NumberPad.TwoButton.Invoke();
         waiter.TryWait();
     }
 }
Ejemplo n.º 7
0
        public void FiveMemorySet()
        {
            using (UIEventWaiter waiter = this.ObjectModel.GetDisplayChangedWaiter())
            {
                this.ObjectModel.NumberPad.FiveButton.Invoke();
                waiter.TryWait();
            }

            this.ObjectModel.MemoryControls.SetButton.Invoke();
        }
 public void PressSqrt()
 {
     // When invoking sqrt, both the expression changes.
     using (UIEventWaiter waiter = this.ObjectModel.GetExpressionChangedWaiter())
     {
         Log.Comment("Invoking sqrt");
         this.ObjectModel.SqrtButton.Invoke();
         waiter.TryWait();
     }
 }
 public void PressEquals()
 {
     // When invoking equals, both the display and the expression change.
     using (UIEventWaiter expressionWaiter = this.ObjectModel.GetExpressionChangedWaiter())
         using (UIEventWaiter displayWaiter = this.ObjectModel.GetDisplayChangedWaiter())
         {
             Log.Comment("Invoking equals");
             this.ObjectModel.EqualButton.Invoke();
             expressionWaiter.TryWait();
             displayWaiter.TryWait();
         }
 }
Ejemplo n.º 10
0
        public static bool ForScrollChanged(Scroller scroller, ScrollProperty scrollProperty)
        {
            Log.Comment("Wait.ForScrollChanged call for {0}.", scrollProperty.ToString());

            using (UIEventWaiter scrollChangedWaiter =
                       (scrollProperty == ScrollProperty.HorizontallyScrollable || scrollProperty == ScrollProperty.VerticallyScrollable) ?
                       scroller.GetScrollChangedWaiter(scrollProperty, null) :
                       scroller.GetScrollChangedWaiter(scrollProperty, double.NaN))
            {
                if (!scrollChangedWaiter.TryWait(TimeSpan.FromSeconds(5)))
                {
                    Log.Comment("Timeout expired.");
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 11
0
        public static void ForAppDebugger()
        {
            Button   waitForDebuggerInvokerButton = new Button(FindElement.ById("__WaitForDebuggerInvoker"));
            CheckBox debuggerAttachedCheckBox     = new CheckBox(FindElement.ById("__DebuggerAttachedCheckBox"));

            using (UIEventWaiter debuggerAttachedWaiter = debuggerAttachedCheckBox.GetToggledWaiter())
            {
                using (var processWaiter = new ProcessClosedWaiter(TestEnvironment.Application.Process))
                {
                    Log.Comment(string.Format("Waiting for a debugger to attach (processId = {0})...", TestEnvironment.Application.Process.Id));
                    waitForDebuggerInvokerButton.Invoke();

                    var waiter = CompositableWaiter.WaitAny(TimeSpan.FromSeconds(300), debuggerAttachedWaiter, processWaiter);
                    if (waiter == processWaiter)
                    {
                        throw new WaiterException("Process exited while waiting for app debugger.");
                    }
                }
            }
        }
Ejemplo n.º 12
0
        public static void ForIdle(bool findElementsIfNull = true)
        {
            TestEnvironment.LogVerbose("Wait.ForIdle: Begin");
            try
            {
                // If any of these are null, then we haven't initialized our idle helpers yet.
                // We should just return - we'll do that soon after this.
                if (waitForIdleInvokerButton == null ||
                    idleStateEnteredCheckBox == null ||
                    errorReportingTextBox == null ||
                    logReportingTextBox == null)
                {
                    return;
                }

                using (UIEventWaiter idleStateEnteredWaiter = idleStateEnteredCheckBox.GetToggledWaiter())
                {
                    TestEnvironment.LogSuperVerbose("Wait.ForIdle: After GetToggledWaiter");
                    using (var errorReportedWaiter = new ValueChangedEventWaiter(errorReportingTextBox))
                    {
                        TestEnvironment.LogSuperVerbose("Wait.ForIdle: Before WaitForIdleInvoker.Invoke");

                        idleStateEnteredWaiter.AddFilter((WaiterEventArgs) => idleStateEnteredCheckBox.ToggleState == ToggleState.On);
                        waitForIdleInvokerButton.Invoke();

                        TestEnvironment.LogSuperVerbose("Wait.ForIdle: After WaitForIdleInvoker.Invoke");

                        var waiter = CompositableWaiter.WaitAny(TimeSpan.FromSeconds(300), idleStateEnteredWaiter, errorReportedWaiter);
                        if (waiter == errorReportedWaiter)
                        {
                            AutomationPropertyChangedEventArgs args = errorReportedWaiter.Arguments.EventArgs as AutomationPropertyChangedEventArgs;
                            string errorMessage = args.NewValue as string;

                            if (!IsRS2OrHigher() && errorMessage == "Animation complete wait took longer than idle timeout.")
                            {
                                Log.Warning("Timed out waiting for animation complete.  Queueing application to close after this test.");
                                TestEnvironment.ShouldRestartApplication = true;
                            }
                            else if (errorMessage.Length > 0)
                            {
                                Log.Error("Error while waiting for idle: {0}", errorMessage);
                                DumpHelper.DumpFullContext();
                                throw new WaiterException(errorMessage);
                            }
                        }
                        else
                        {
                            var value = logReportingTextBox.Value;
                            if (!String.IsNullOrEmpty(value))
                            {
                                TestEnvironment.LogSuperVerbose(value);
                                logReportingTextBox.SetValue("");
                            }
                        }
                    }
                }
            }
            catch (ElementNotAvailableException)
            {
                if (!isRetrying && findElementsIfNull)
                {
                    // If we got an element-not-available exception, we'll re-initialize our wait helper and try again.
                    // If that doesn't work, then we'll just fail.
                    ResetIdleHelper();
                    InitializeWaitHelper();

                    isRetrying = true;
                    ForIdle();
                }
                else
                {
                    if (TestEnvironment.Application.Process == null)
                    {
                        Log.Error("Tried to wait for idle before starting the test app!");
                    }
                    else if (TestEnvironment.Application.Process.HasExited)
                    {
                        Log.Error("Tried to wait for idle after the test app has closed!");
                    }

                    throw;
                }
            }
            TestEnvironment.LogVerbose("Wait.ForIdle: End");
        }