@@ -22,7 +22,24 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion()
2222 AllowedChildren = new [ ] { "tr" , "td" } ,
2323 AssemblyName = "CustomAssembly" ,
2424 Prefix = "th:" ,
25- RequiredAttributes = new [ ] { "runat" } ,
25+ RequiredAttributes = new [ ]
26+ {
27+ new TagHelperRequiredAttributeDescriptor
28+ {
29+ Name = "runat"
30+ } ,
31+ new TagHelperRequiredAttributeDescriptor
32+ {
33+ Name = "condition" ,
34+ Value = "(" ,
35+ ValueComparison = TagHelperRequiredAttributeValueComparison . PrefixMatch
36+ } ,
37+ new TagHelperRequiredAttributeDescriptor
38+ {
39+ Name = "runat-" ,
40+ NameComparison = TagHelperRequiredAttributeNameComparison . PrefixMatch
41+ } ,
42+ } ,
2643 RequiredParent = "body" ,
2744 TagName = "custom-table" ,
2845 TagStructure = TagStructure . NormalOrSelfClosing ,
@@ -69,7 +86,24 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion()
6986 AllowedChildren = new [ ] { "tr" , "td" } ,
7087 AssemblyName = "CustomAssembly" ,
7188 Prefix = "th:" ,
72- RequiredAttributes = new [ ] { "runat" } ,
89+ RequiredAttributes = new [ ]
90+ {
91+ new VisualStudioTagHelperRequiredAttributeDescriptor
92+ {
93+ Name = "runat"
94+ } ,
95+ new VisualStudioTagHelperRequiredAttributeDescriptor
96+ {
97+ Name = "condition" ,
98+ Value = "(" ,
99+ ValueComparison = VisualStudioTagHelperRequiredAttributeValueComparison . PrefixMatch
100+ } ,
101+ new VisualStudioTagHelperRequiredAttributeDescriptor
102+ {
103+ Name = "runat-" ,
104+ NameComparison = VisualStudioTagHelperRequiredAttributeNameComparison . PrefixMatch
105+ } ,
106+ } ,
73107 RequiredParent = "body" ,
74108 TagName = "custom-table" ,
75109 TagStructure = VisualStudioTagStructure . NormalOrSelfClosing ,
@@ -121,7 +155,19 @@ public void TagHelperDescrictorsAreCompatibleWithPinnedVisualStudioVersion()
121155 Assert . Equal ( expectedVSDescriptor . AllowedChildren , vsDescriptor . AllowedChildren , StringComparer . Ordinal ) ;
122156 Assert . Equal ( expectedVSDescriptor . AssemblyName , vsDescriptor . AssemblyName , StringComparer . Ordinal ) ;
123157 Assert . Equal ( expectedVSDescriptor . Prefix , vsDescriptor . Prefix , StringComparer . Ordinal ) ;
124- Assert . Equal ( expectedVSDescriptor . RequiredAttributes , vsDescriptor . RequiredAttributes , StringComparer . Ordinal ) ;
158+
159+ var requiredAttributes = vsDescriptor . RequiredAttributes . ToArray ( ) ;
160+ var expectedRequiredAttributes = expectedVSDescriptor . RequiredAttributes . ToArray ( ) ;
161+ for ( var i = 0 ; i < requiredAttributes . Length ; i ++ )
162+ {
163+ var requiredAttribute = requiredAttributes [ i ] ;
164+ var expectedRequiredAttribute = expectedRequiredAttributes [ i ] ;
165+ Assert . Equal ( expectedRequiredAttribute . Name , requiredAttribute . Name , StringComparer . Ordinal ) ;
166+ Assert . Equal ( expectedRequiredAttribute . NameComparison , requiredAttribute . NameComparison ) ;
167+ Assert . Equal ( expectedRequiredAttribute . Value , requiredAttribute . Value , StringComparer . Ordinal ) ;
168+ Assert . Equal ( expectedRequiredAttribute . ValueComparison , requiredAttribute . ValueComparison ) ;
169+ }
170+
125171 Assert . Equal ( expectedVSDescriptor . RequiredParent , vsDescriptor . RequiredParent , StringComparer . Ordinal ) ;
126172 Assert . Equal ( expectedVSDescriptor . TagName , vsDescriptor . TagName , StringComparer . Ordinal ) ;
127173 Assert . Equal ( expectedVSDescriptor . TagStructure , vsDescriptor . TagStructure ) ;
@@ -250,7 +296,8 @@ private class VisualStudioTagHelperDescriptor
250296 private string _assemblyName ;
251297 private IEnumerable < VisualStudioTagHelperAttributeDescriptor > _attributes =
252298 Enumerable . Empty < VisualStudioTagHelperAttributeDescriptor > ( ) ;
253- private IEnumerable < string > _requiredAttributes = Enumerable . Empty < string > ( ) ;
299+ private IEnumerable < VisualStudioTagHelperRequiredAttributeDescriptor > _requiredAttributes =
300+ Enumerable . Empty < VisualStudioTagHelperRequiredAttributeDescriptor > ( ) ;
254301
255302 public string Prefix
256303 {
@@ -339,7 +386,7 @@ public IEnumerable<VisualStudioTagHelperAttributeDescriptor> Attributes
339386 _attributes = value ;
340387 }
341388 }
342- public IEnumerable < string > RequiredAttributes
389+ public IEnumerable < VisualStudioTagHelperRequiredAttributeDescriptor > RequiredAttributes
343390 {
344391 get
345392 {
@@ -366,6 +413,25 @@ public enum VisualStudioTagStructure
366413 NormalOrSelfClosing ,
367414 WithoutEndTag
368415 }
416+ public class VisualStudioTagHelperRequiredAttributeDescriptor
417+ {
418+ public string Name { get ; set ; }
419+ public VisualStudioTagHelperRequiredAttributeNameComparison NameComparison { get ; set ; }
420+ public string Value { get ; set ; }
421+ public VisualStudioTagHelperRequiredAttributeValueComparison ValueComparison { get ; set ; }
422+ }
423+ public enum VisualStudioTagHelperRequiredAttributeNameComparison
424+ {
425+ FullMatch ,
426+ PrefixMatch ,
427+ }
428+ public enum VisualStudioTagHelperRequiredAttributeValueComparison
429+ {
430+ None ,
431+ FullMatch ,
432+ PrefixMatch ,
433+ SuffixMatch ,
434+ }
369435 #endregion
370436 }
371437}
0 commit comments