diff --git a/test/dotnet-razor-tooling.Test/VisualStudioProtocolTest.cs b/test/dotnet-razor-tooling.Test/VisualStudioProtocolTest.cs index 928b967..6abf154 100644 --- a/test/dotnet-razor-tooling.Test/VisualStudioProtocolTest.cs +++ b/test/dotnet-razor-tooling.Test/VisualStudioProtocolTest.cs @@ -22,7 +22,24 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion() AllowedChildren = new[] { "tr", "td" }, AssemblyName = "CustomAssembly", Prefix = "th:", - RequiredAttributes = new[] { "runat" }, + RequiredAttributes = new[] + { + new TagHelperRequiredAttributeDescriptor + { + Name = "runat" + }, + new TagHelperRequiredAttributeDescriptor + { + Name = "condition", + Value = "(", + ValueComparison = TagHelperRequiredAttributeValueComparison.PrefixMatch + }, + new TagHelperRequiredAttributeDescriptor + { + Name = "runat-", + NameComparison = TagHelperRequiredAttributeNameComparison.PrefixMatch + }, + }, RequiredParent = "body", TagName = "custom-table", TagStructure = TagStructure.NormalOrSelfClosing, @@ -69,7 +86,24 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion() AllowedChildren = new[] { "tr", "td" }, AssemblyName = "CustomAssembly", Prefix = "th:", - RequiredAttributes = new[] { "runat" }, + RequiredAttributes = new[] + { + new VisualStudioTagHelperRequiredAttributeDescriptor + { + Name = "runat" + }, + new VisualStudioTagHelperRequiredAttributeDescriptor + { + Name = "condition", + Value = "(", + ValueComparison = VisualStudioTagHelperRequiredAttributeValueComparison.PrefixMatch + }, + new VisualStudioTagHelperRequiredAttributeDescriptor + { + Name = "runat-", + NameComparison = VisualStudioTagHelperRequiredAttributeNameComparison.PrefixMatch + }, + }, RequiredParent = "body", TagName = "custom-table", TagStructure = VisualStudioTagStructure.NormalOrSelfClosing, @@ -121,7 +155,19 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion() Assert.Equal(expectedVSDescriptor.AllowedChildren, vsDescriptor.AllowedChildren, StringComparer.Ordinal); Assert.Equal(expectedVSDescriptor.AssemblyName, vsDescriptor.AssemblyName, StringComparer.Ordinal); Assert.Equal(expectedVSDescriptor.Prefix, vsDescriptor.Prefix, StringComparer.Ordinal); - Assert.Equal(expectedVSDescriptor.RequiredAttributes, vsDescriptor.RequiredAttributes, StringComparer.Ordinal); + + var requiredAttributes = vsDescriptor.RequiredAttributes.ToArray(); + var expectedRequiredAttributes = expectedVSDescriptor.RequiredAttributes.ToArray(); + for (var i = 0; i < requiredAttributes.Length; i++) + { + var requiredAttribute = requiredAttributes[i]; + var expectedRequiredAttribute = expectedRequiredAttributes[i]; + Assert.Equal(expectedRequiredAttribute.Name, requiredAttribute.Name, StringComparer.Ordinal); + Assert.Equal(expectedRequiredAttribute.NameComparison, requiredAttribute.NameComparison); + Assert.Equal(expectedRequiredAttribute.Value, requiredAttribute.Value, StringComparer.Ordinal); + Assert.Equal(expectedRequiredAttribute.ValueComparison, requiredAttribute.ValueComparison); + } + Assert.Equal(expectedVSDescriptor.RequiredParent, vsDescriptor.RequiredParent, StringComparer.Ordinal); Assert.Equal(expectedVSDescriptor.TagName, vsDescriptor.TagName, StringComparer.Ordinal); Assert.Equal(expectedVSDescriptor.TagStructure, vsDescriptor.TagStructure); @@ -250,7 +296,8 @@ private class VisualStudioTagHelperDescriptor private string _assemblyName; private IEnumerable _attributes = Enumerable.Empty(); - private IEnumerable _requiredAttributes = Enumerable.Empty(); + private IEnumerable _requiredAttributes = + Enumerable.Empty(); public string Prefix { @@ -339,7 +386,7 @@ public IEnumerable Attributes _attributes = value; } } - public IEnumerable RequiredAttributes + public IEnumerable RequiredAttributes { get { @@ -366,6 +413,25 @@ public enum VisualStudioTagStructure NormalOrSelfClosing, WithoutEndTag } + public class VisualStudioTagHelperRequiredAttributeDescriptor + { + public string Name { get; set; } + public VisualStudioTagHelperRequiredAttributeNameComparison NameComparison { get; set; } + public string Value { get; set; } + public VisualStudioTagHelperRequiredAttributeValueComparison ValueComparison { get; set; } + } + public enum VisualStudioTagHelperRequiredAttributeNameComparison + { + FullMatch, + PrefixMatch, + } + public enum VisualStudioTagHelperRequiredAttributeValueComparison + { + None, + FullMatch, + PrefixMatch, + SuffixMatch, + } #endregion } }