コード例 #1
0
        private static string BuildTagExpression(SupportedTagAttribute supportedTag)
        {
            // HTML tag names are case folded to lower case
            var queryTagName = supportedTag.TagName.ToLowerInvariant();

            if (supportedTag.HasAttributeFilter)
            {
                const string AttributeFilterQuery = "*[local-name() = '{0}' and {1}='{2}']";

                // HTML attribute names are case folded to lower case
                // Searching by the SupportedTagAttribute attribute value must be case insensitive
                var attributeName      = supportedTag.AttributeName.ToLowerInvariant();
                var queryAttributeName = QueryFactory.CaseQuery("@" + attributeName, true);

                // This literal value can be converted to lower case here rather than within the execution of the XPath query
                var queryAttributeValue = supportedTag.AttributeValue.ToLowerInvariant();

                return(string.Format(
                           CultureInfo.CurrentCulture,
                           AttributeFilterQuery,
                           queryTagName,
                           queryAttributeName,
                           queryAttributeValue));
            }

            return("*[local-name() = '" + queryTagName + "']");
        }
コード例 #2
0
        public void ToStringReturnsTagRepresentationWithAttributeTest()
        {
            var target = new SupportedTagAttribute("test", "name", "Value");

            var actual = target.ToString();

            actual.Should().Be("<test name=\"Value\" />");
        }
コード例 #3
0
        public void ToStringReturnsTagRepresentationTest()
        {
            var target = new SupportedTagAttribute("test");

            var actual = target.ToString();

            actual.Should().Be("<test />");
        }
コード例 #4
0
        public void EqualsReturnsFalseWhenSecondIsNullTest()
        {
            var tag = new SupportedTagAttribute(Guid.NewGuid().ToString());

            var target = new SupportedTagAttributeComparer();

            var actual = target.Equals(tag, null);

            actual.Should().BeFalse();
        }
コード例 #5
0
        public void EqualsReturnsFalseWhenAttributeFilterDoesNotMatchTest()
        {
            var first  = new SupportedTagAttribute(Guid.NewGuid().ToString());
            var second = new SupportedTagAttribute(first.TagName, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());

            var target = new SupportedTagAttributeComparer();

            var actual = target.Equals(first, second);

            actual.Should().BeFalse();
        }
コード例 #6
0
        public void EqualsReturnsTrueWhenTagsMatchWithoutAttributesTest()
        {
            var first  = new SupportedTagAttribute(Guid.NewGuid().ToString());
            var second = new SupportedTagAttribute(first.TagName);

            var target = new SupportedTagAttributeComparer();

            var actual = target.Equals(first, second);

            actual.Should().BeTrue();
        }
コード例 #7
0
        public void HasAttributeFilterReturnsFalseIfAttributeValueIsWhiteSpaceTest()
        {
            var tagValue      = Guid.NewGuid().ToString();
            var attributeName = Guid.NewGuid().ToString();

            var target = new SupportedTagAttribute(tagValue, attributeName, "  ");

            var actual = target.HasAttributeFilter;

            actual.Should().BeFalse();
        }
コード例 #8
0
        public void HasAttributeFilterReturnsFalseIfAttributeNameIsEmptyTest()
        {
            var tagName        = Guid.NewGuid().ToString();
            var attributeValue = Guid.NewGuid().ToString();

            var target = new SupportedTagAttribute(tagName, string.Empty, attributeValue);

            var actual = target.HasAttributeFilter;

            actual.Should().BeFalse();
        }
コード例 #9
0
        public void GetHashCodeReturnsSameValueForMatchingTagTest()
        {
            var first  = new SupportedTagAttribute(Guid.NewGuid().ToString());
            var second = new SupportedTagAttribute(first.TagName);

            var target = new SupportedTagAttributeComparer();

            var firstCode  = target.GetHashCode(first);
            var secondCode = target.GetHashCode(second);

            firstCode.Should().Be(secondCode);
        }
コード例 #10
0
        public void GetHashCodeReturnsDifferentValueForMismatchedTagTest()
        {
            var first  = new SupportedTagAttribute(Guid.NewGuid().ToString());
            var second = new SupportedTagAttribute(Guid.NewGuid().ToString());

            var target = new SupportedTagAttributeComparer();

            var firstCode  = target.GetHashCode(first);
            var secondCode = target.GetHashCode(second);

            firstCode.Should().NotBe(secondCode);
        }
コード例 #11
0
        public void ReturnsConstructorValuesTest()
        {
            var tagName        = Guid.NewGuid().ToString();
            var attributeName  = Guid.NewGuid().ToString();
            var attributeValue = Guid.NewGuid().ToString();

            var target = new SupportedTagAttribute(tagName, attributeName, attributeValue);

            target.TagName.Should().Be(tagName);
            target.AttributeName.Should().Be(attributeName);
            target.AttributeValue.Should().Be(attributeValue);
        }
コード例 #12
0
        public void HasAttributeFilterReturnsTrueIfAttributeIsDefinedTest()
        {
            var tagName        = Guid.NewGuid().ToString();
            var attributeName  = Guid.NewGuid().ToString();
            var attributeValue = Guid.NewGuid().ToString();

            var target = new SupportedTagAttribute(tagName, attributeName, attributeValue);

            var actual = target.HasAttributeFilter;

            actual.Should().BeTrue();
        }