コード例 #1
0
        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));
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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));
        }