public virtual void ShouldIncrementIndefinitelyWhenCyclic() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add(1); dud.Items.Add(2); dud.Items.Add(3); dud.Items.Add(4); dud.IsCyclic = true; TestAsync( dud, () => Assert.AreEqual(1, dud.Value), () => dud.Decrement(), () => Assert.AreEqual(2, dud.Value), () => Assert.AreEqual(1, dud.CurrentIndex), () => dud.Decrement(), () => dud.Decrement(), () => Assert.AreEqual(4, dud.Value), () => dud.Decrement(), () => dud.Decrement(), () => Assert.AreEqual(2, dud.Value), () => dud.Increment(), () => dud.Increment(), () => dud.Increment(), () => dud.Increment(), () => dud.Increment(), () => Assert.AreEqual(1, dud.Value), () => dud.Increment(), () => Assert.AreEqual(4, dud.Value)); }
public virtual void ShouldGrabFocusWhenSpinning() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add("a"); dud.Items.Add("b"); dud.Items.Add("c"); dud.CurrentIndex = 1; // using timer so that the tests never get blocked Timer timer = new Timer(state => Assert.Fail("Did not get focus in time. This test has been reported to fail sometimes on first run."), new object(), 2000, 0); Button b = new Button(); bool isLoaded = false; dud.Loaded += delegate { isLoaded = true; }; bool buttonHasFocus = false; b.GotFocus += delegate { buttonHasFocus = true; // potentially null if (timer != null) { // reset the timer for another period. timer.Change(2000, 0); } }; EnqueueCallback(() => TestPanel.Children.Add(dud)); EnqueueCallback(() => TestPanel.Children.Add(b)); EnqueueConditional(() => isLoaded); EnqueueCallback(() => b.Focus()); EnqueueConditional(() => buttonHasFocus); EnqueueCallback(() => buttonHasFocus = false); EnqueueCallback(() => Assert.IsTrue(Input.FocusManager.GetFocusedElement() == b)); EnqueueCallback(() => dud.Increment()); EnqueueVisualDelay(500); EnqueueCallback(() => Assert.IsTrue(Input.FocusManager.GetFocusedElement() != b)); EnqueueCallback(() => Assert.IsTrue(dud.IsEditing == false)); EnqueueCallback(() => b.Focus()); EnqueueConditional(() => buttonHasFocus); EnqueueCallback(() => timer.Dispose()); // get rid of the timer. EnqueueCallback(() => timer = null); EnqueueCallback(() => dud.Decrement()); EnqueueVisualDelay(500); EnqueueCallback(() => Assert.IsTrue(Input.FocusManager.GetFocusedElement() != b)); EnqueueCallback(() => Assert.IsTrue(dud.IsEditing == false)); EnqueueTestComplete(); }
public virtual void ShouldSelectItemWhenTextChanges() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add("a"); dud.Items.Add("b"); dud.Items.Add("c"); TestAsync( dud, () => dud.ApplyText("b"), () => Assert.AreEqual(1, dud.CurrentIndex)); }
public virtual void ShouldStyleButtonSpinner() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); Style s = new Style(typeof(Spinner)); s.Setters.Add(new Setter(FrameworkElement.TagProperty, "flowed down")); TestAsync( dud, () => dud.SpinnerStyle = s, () => Assert.AreEqual("flowed down", dud.Spinner.Tag)); }
public virtual void ShouldNotReactToInvalidValue() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add("a"); dud.Items.Add("b"); dud.Items.Add("c"); TestAsync( dud, () => dud.CurrentIndex = 1, () => dud.Value = "d", () => Assert.AreEqual("b", dud.Value)); }
public virtual void ShouldNotReactToInvalidText() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add("a"); dud.Items.Add("b"); dud.Items.Add("c"); TestAsync( dud, () => dud.ApplyText("b"), () => dud.ApplyText("d"), () => Assert.AreEqual(1, dud.CurrentIndex)); }
public virtual void ShouldUseValueMemberPath() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.ValueMemberPath = "Value"; dud.ItemsSource = new[] { new KeyValuePair <string, string>("a", "b"), new KeyValuePair <string, string>("c", "d"), }; TestAsync( dud, () => dud.ApplyText("d"), () => Assert.AreEqual(1, dud.CurrentIndex)); }
public virtual void ShouldRemainInEditModeAfterInvalidInputAndTextBoxCannotLoseFocusAction() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add("a"); dud.Items.Add("b"); dud.Items.Add("c"); dud.Items.Add("fallback"); dud.InvalidInputAction = InvalidInputAction.TextBoxCannotLoseFocus; dud.FallbackItem = "fallback"; dud.CurrentIndex = 1; dud.ApplyText("does not exist"); Assert.AreEqual(true, dud.IsEditing); }
public virtual void ShouldReturnToDisplayAfterInvalidValue() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add("a"); dud.Items.Add("b"); dud.Items.Add("c"); dud.Items.Add("fallback"); dud.InvalidInputAction = InvalidInputAction.UseFallbackItem; dud.FallbackItem = "fallback"; dud.CurrentIndex = 1; dud.ApplyText("does not exist"); Assert.AreEqual(false, dud.IsEditing); }
public virtual void ShouldHandleInvalidTextCorrectly() { OverriddenDomainUpDown dud = new OverriddenDomainUpDown(); dud.Items.Add("a"); dud.Items.Add("b"); dud.Items.Add("c"); dud.Items.Add("fallback"); dud.InvalidInputAction = InvalidInputAction.UseFallbackItem; dud.FallbackItem = "fallback"; TestAsync( dud, () => dud.CurrentIndex = 1, () => dud.ApplyText("does not exist"), () => Assert.AreEqual("fallback", dud.Value), () => dud.FallbackItem = "fallback does not exist", () => dud.CurrentIndex = 1, () => dud.ApplyText("does not exist"), () => Assert.AreEqual("b", dud.Value)); }