public virtual void PickerPeerOnlySupportsCorrectPatterns()
        {
            TimePickerPopup instance           = TimePickerPopupInstance;
            TimePickerPopupAutomationPeer peer = null;

            TestAsync(
                instance,
                () => peer = (TimePickerPopupAutomationPeer)FrameworkElementAutomationPeer.CreatePeerForElement(instance),
                () =>
            {
                int index = 0;
                while (Enum.IsDefined(typeof(PatternInterface), index))
                {
                    PatternInterface currentInterface = (PatternInterface)Enum.ToObject(typeof(PatternInterface), index);
                    object implementation             = peer.GetPattern(currentInterface);
                    if (ExpectedPatterns.Contains(currentInterface))
                    {
                        Assert.IsNotNull(implementation);
                    }
                    else
                    {
                        Assert.IsNull(implementation);
                    }
                    index++;
                }
            });
        }
        public virtual void ShouldBeAbleToGetValueThroughAutomationPeer()
        {
            TimePickerPopup item = TimePickerPopupInstance;

            item.Culture = new CultureInfo("nl-NL");
            item.Format  = new CustomTimeFormat("HH:mm:ss");
            item.Value   = new DateTime(1900, 1, 1, 3, 45, 12);
            TimePickerPopupAutomationPeer peer = null;
            IValueProvider provider            = null;

            TestAsync(
                item,
                () => peer     = (TimePickerPopupAutomationPeer)FrameworkElementAutomationPeer.CreatePeerForElement(item),
                () => provider = (IValueProvider)peer.GetPattern(PatternInterface.Value),
                () => Assert.AreEqual(provider.Value, "03:45:12"));
        }
        public virtual void ShouldCorrelateReadOnlyToIsEnabledInAutomationPeer()
        {
            TimePickerPopup item = TimePickerPopupInstance;

            item.Value = new DateTime(1900, 1, 1, 3, 45, 12);
            TimePickerPopupAutomationPeer peer = null;
            IValueProvider provider            = null;

            TestAsync(
                item,
                () => peer     = (TimePickerPopupAutomationPeer)FrameworkElementAutomationPeer.CreatePeerForElement(item),
                () => provider = (IValueProvider)peer.GetPattern(PatternInterface.Value),
                () => Assert.IsFalse(provider.IsReadOnly),
                () => item.IsEnabled = false,
                () => Assert.IsTrue(provider.IsReadOnly));
        }
        public virtual void ShouldBeAbleToSetValueThroughAutomationPeer()
        {
            TimePickerPopup item = TimePickerPopupInstance;

            item.Culture = new CultureInfo("nl-NL");
            item.Format  = new CustomTimeFormat("HH:mm:ss");
            TimePickerPopupAutomationPeer peer = null;
            IValueProvider provider            = null;

            TestAsync(
                item,
                () => peer     = (TimePickerPopupAutomationPeer)FrameworkElementAutomationPeer.CreatePeerForElement(item),
                () => provider = (IValueProvider)peer.GetPattern(PatternInterface.Value),
                () => provider.SetValue("03:30:00"),     // take care to set a time that is not snapped
                () => Assert.AreEqual(item.Value.Value.TimeOfDay, new DateTime(1900, 1, 1, 3, 30, 00).TimeOfDay));
        }