public void VerifyEmptyStringComplies()
        {
            var peer = new CustomPeer(new Button(), ReturnProperty.EmptyString);
            var rule = new ControlNameNotIncludeTypeRule();

            Assert.IsTrue(rule.IsValid(new Button(), peer));
        }
        public void VerifyCorrectNamesComply()
        {
            ProcessElement(new TextBlock()
            {
                Text = "Some text"
            });

            var button = new Button();

            AutomationProperties.SetName(button, "Some text");
            ProcessElement(button);

            AutomationProperties.SetName(button, "Some very very long text " +
                                         "that contains the word button but that is fine as we are descriptive enough.");
            ProcessElement(button);

            ProcessElement(new TextBox()
            {
                Header = "Some text"
            });

            void ProcessElement(FrameworkElement element)
            {
                var peer = FrameworkElementAutomationPeer.CreatePeerForElement(element);

                var rule = new ControlNameNotIncludeTypeRule();

                Assert.IsTrue(rule.IsValid(element, peer));
            }
        }
        public void VerifyFaultyElementsFail()
        {
            var button = new Button()
            {
                DataContext = "SomeText"
            };

            ProcessElement(button, new CustomPeer(button, ReturnProperty.ElementDatacontext));
            ProcessElement(button, new CustomPeer(button, ReturnProperty.ElementType));
            ProcessElement(button, new CustomPeer(button, ReturnProperty.PeerControlType));

            void ProcessElement(FrameworkElement element, FrameworkElementAutomationPeer peer)
            {
                var rule = new ControlNameNotIncludeTypeRule();

                Assert.IsFalse(rule.IsValid(element, peer));
            }
        }