Removed extra IVT from `Microsoft.AspNet.Razor`.
- Added tests to validate `IsStringProperty` on `TagHelperAttributeDescriptor`s. #464
This commit is contained in:
parent
e722f90481
commit
3b5692a5a5
|
|
@ -30,6 +30,7 @@ namespace Microsoft.AspNet.Razor.Test.Internal
|
|||
string.Equals(descriptorX.Name, descriptorY.Name, StringComparison.Ordinal) &&
|
||||
string.Equals(descriptorX.PropertyName, descriptorY.PropertyName, StringComparison.Ordinal) &&
|
||||
string.Equals(descriptorX.TypeName, descriptorY.TypeName, StringComparison.Ordinal) &&
|
||||
descriptorX.IsStringProperty == descriptorY.IsStringProperty &&
|
||||
TagHelperAttributeDesignTimeDescriptorComparer.Default.Equals(
|
||||
descriptorX.DesignTimeDescriptor,
|
||||
descriptorY.DesignTimeDescriptor);
|
||||
|
|
@ -37,13 +38,12 @@ namespace Microsoft.AspNet.Razor.Test.Internal
|
|||
|
||||
public int GetHashCode(TagHelperAttributeDescriptor descriptor)
|
||||
{
|
||||
// Ignore IsStringProperty because it is directly inferred from TypeName and thus won't vary the hash
|
||||
// bucket.
|
||||
return HashCodeCombiner.Start()
|
||||
.Add(descriptor.IsIndexer)
|
||||
.Add(descriptor.Name, StringComparer.Ordinal)
|
||||
.Add(descriptor.PropertyName, StringComparer.Ordinal)
|
||||
.Add(descriptor.TypeName, StringComparer.Ordinal)
|
||||
.Add(descriptor.IsStringProperty)
|
||||
.Add(TagHelperAttributeDesignTimeDescriptorComparer.Default.GetHashCode(
|
||||
descriptor.DesignTimeDescriptor))
|
||||
.CombinedHash;
|
||||
|
|
|
|||
|
|
@ -5,5 +5,4 @@ using System.Reflection;
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("Microsoft.AspNet.Razor.Test")]
|
||||
[assembly: InternalsVisibleTo("Microsoft.AspNet.Razor.Runtime.Test")]
|
||||
[assembly: AssemblyMetadata("Serviceable", "True")]
|
||||
|
|
|
|||
|
|
@ -114,19 +114,19 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
true,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
tagName: "inherited-editor-browsable",
|
||||
typeName: typeof(InheritedEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(InheritedEditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "inherited-editor-browsable",
|
||||
typeName: typeof(InheritedEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(InheritedEditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
}
|
||||
},
|
||||
{ typeof(EditorBrowsableTagHelper), true, new TagHelperDescriptor[0] },
|
||||
|
|
@ -135,19 +135,19 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
false,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
tagName: "editor-browsable",
|
||||
typeName: typeof(EditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(EditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "editor-browsable",
|
||||
typeName: typeof(EditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(EditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -155,11 +155,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
true,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
tagName: "hidden-property-editor-browsable",
|
||||
typeName: typeof(HiddenPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new TagHelperAttributeDescriptor[0])
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "hidden-property-editor-browsable",
|
||||
typeName: typeof(HiddenPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new TagHelperAttributeDescriptor[0])
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -167,19 +167,19 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
false,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
tagName: "hidden-property-editor-browsable",
|
||||
typeName: typeof(HiddenPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(HiddenPropertyEditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "hidden-property-editor-browsable",
|
||||
typeName: typeof(HiddenPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(HiddenPropertyEditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -187,7 +187,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
true,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "overridden-editor-browsable",
|
||||
typeName: typeof(OverriddenEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
|
|
@ -207,7 +207,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
true,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "multi-property-editor-browsable",
|
||||
typeName: typeof(MultiPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
|
|
@ -227,7 +227,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
false,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "multi-property-editor-browsable",
|
||||
typeName: typeof(MultiPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
|
|
@ -253,7 +253,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
true,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "overridden-property-editor-browsable",
|
||||
typeName: typeof(OverriddenPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
|
|
@ -265,7 +265,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
false,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "overridden-property-editor-browsable",
|
||||
typeName: typeof(OverriddenPropertyEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
|
|
@ -292,19 +292,19 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
true,
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
tagName: "default-editor-browsable",
|
||||
typeName: typeof(DefaultEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(DefaultEditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
CreateTagHelperDescriptor(
|
||||
tagName: "default-editor-browsable",
|
||||
typeName: typeof(DefaultEditorBrowsableTagHelper).FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "property",
|
||||
propertyName: nameof(DefaultEditorBrowsableTagHelper.Property),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
}
|
||||
},
|
||||
{ typeof(MultiEditorBrowsableTagHelper), true, new TagHelperDescriptor[0] }
|
||||
|
|
@ -347,7 +347,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(AttributeTargetingTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
TagHelperDescriptorProvider.ElementCatchAllTarget,
|
||||
typeof(AttributeTargetingTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -359,7 +359,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(MultiAttributeTargetingTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
TagHelperDescriptorProvider.ElementCatchAllTarget,
|
||||
typeof(MultiAttributeTargetingTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -371,13 +371,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(MultiAttributeAttributeTargetingTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
TagHelperDescriptorProvider.ElementCatchAllTarget,
|
||||
typeof(MultiAttributeAttributeTargetingTagHelper).FullName,
|
||||
AssemblyName,
|
||||
attributes,
|
||||
requiredAttributes: new[] { "custom" }),
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
TagHelperDescriptorProvider.ElementCatchAllTarget,
|
||||
typeof(MultiAttributeAttributeTargetingTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -389,7 +389,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(InheritedAttributeTargetingTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
TagHelperDescriptorProvider.ElementCatchAllTarget,
|
||||
typeof(InheritedAttributeTargetingTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -401,7 +401,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(RequiredAttributeTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"input",
|
||||
typeof(RequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -413,7 +413,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(InheritedRequiredAttributeTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"div",
|
||||
typeof(InheritedRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -425,13 +425,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(MultiAttributeRequiredAttributeTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"div",
|
||||
typeof(MultiAttributeRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
attributes,
|
||||
requiredAttributes: new[] { "class" }),
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"input",
|
||||
typeof(MultiAttributeRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -443,13 +443,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(MultiAttributeSameTagRequiredAttributeTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"input",
|
||||
typeof(MultiAttributeSameTagRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
attributes,
|
||||
requiredAttributes: new[] { "style" }),
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"input",
|
||||
typeof(MultiAttributeSameTagRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -461,7 +461,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(MultiRequiredAttributeTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"input",
|
||||
typeof(MultiRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -473,13 +473,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(MultiTagMultiRequiredAttributeTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"div",
|
||||
typeof(MultiTagMultiRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
attributes,
|
||||
requiredAttributes: new[] { "class", "style" }),
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"input",
|
||||
typeof(MultiTagMultiRequiredAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -491,7 +491,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(AttributeWildcardTargetingTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
TagHelperDescriptorProvider.ElementCatchAllTarget,
|
||||
typeof(AttributeWildcardTargetingTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -503,7 +503,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(MultiAttributeWildcardTargetingTagHelper),
|
||||
new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
TagHelperDescriptorProvider.ElementCatchAllTarget,
|
||||
typeof(MultiAttributeWildcardTargetingTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -599,14 +599,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
nameof(OverriddenAttributeTagHelper.ValidAttribute2));
|
||||
var expectedDescriptors = new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"overridden-attribute",
|
||||
typeof(OverriddenAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor("SomethingElse", validProperty1),
|
||||
new TagHelperAttributeDescriptor("Something-Else", validProperty2)
|
||||
CreateTagHelperAttributeDescriptor("SomethingElse", validProperty1),
|
||||
CreateTagHelperAttributeDescriptor("Something-Else", validProperty2)
|
||||
})
|
||||
};
|
||||
|
||||
|
|
@ -633,14 +633,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
nameof(InheritedOverriddenAttributeTagHelper.ValidAttribute2));
|
||||
var expectedDescriptors = new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"inherited-overridden-attribute",
|
||||
typeof(InheritedOverriddenAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor("valid-attribute1", validProperty1),
|
||||
new TagHelperAttributeDescriptor("Something-Else", validProperty2)
|
||||
CreateTagHelperAttributeDescriptor("valid-attribute1", validProperty1),
|
||||
CreateTagHelperAttributeDescriptor("Something-Else", validProperty2)
|
||||
})
|
||||
};
|
||||
|
||||
|
|
@ -667,14 +667,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
nameof(InheritedNotOverriddenAttributeTagHelper.ValidAttribute2));
|
||||
var expectedDescriptors = new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"inherited-not-overridden-attribute",
|
||||
typeof(InheritedNotOverriddenAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor("SomethingElse", validProperty1),
|
||||
new TagHelperAttributeDescriptor("Something-Else", validProperty2)
|
||||
CreateTagHelperAttributeDescriptor("SomethingElse", validProperty1),
|
||||
CreateTagHelperAttributeDescriptor("Something-Else", validProperty2)
|
||||
})
|
||||
};
|
||||
|
||||
|
|
@ -697,7 +697,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
var errorSink = new ErrorSink();
|
||||
var objectAssemblyName = typeof(object).GetTypeInfo().Assembly.GetName().Name;
|
||||
var expectedDescriptor =
|
||||
new TagHelperDescriptor("object", "System.Object", objectAssemblyName);
|
||||
CreateTagHelperDescriptor("object", "System.Object", objectAssemblyName);
|
||||
|
||||
// Act
|
||||
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(
|
||||
|
|
@ -717,9 +717,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var errorSink = new ErrorSink();
|
||||
|
||||
// Also confirm isStringProperty is calculated correctly.
|
||||
var expectedDescriptor = new TagHelperDescriptor(
|
||||
var expectedDescriptor = CreateTagHelperDescriptor(
|
||||
"inherited-single-attribute",
|
||||
typeof(InheritedSingleAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -730,7 +728,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
nameof(InheritedSingleAttributeTagHelper.IntAttribute),
|
||||
typeof(int).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null)
|
||||
});
|
||||
|
||||
|
|
@ -753,13 +750,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
// Arrange
|
||||
var errorSink = new ErrorSink();
|
||||
var intProperty = typeof(SingleAttributeTagHelper).GetProperty(nameof(SingleAttributeTagHelper.IntAttribute));
|
||||
var expectedDescriptor = new TagHelperDescriptor(
|
||||
var expectedDescriptor = CreateTagHelperDescriptor(
|
||||
"single-attribute",
|
||||
typeof(SingleAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor("int-attribute", intProperty)
|
||||
CreateTagHelperAttributeDescriptor("int-attribute", intProperty)
|
||||
});
|
||||
|
||||
// Act
|
||||
|
|
@ -782,13 +779,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
var errorSink = new ErrorSink();
|
||||
var validProperty = typeof(MissingAccessorTagHelper).GetProperty(
|
||||
nameof(MissingAccessorTagHelper.ValidAttribute));
|
||||
var expectedDescriptor = new TagHelperDescriptor(
|
||||
var expectedDescriptor = CreateTagHelperDescriptor(
|
||||
"missing-accessor",
|
||||
typeof(MissingAccessorTagHelper).FullName,
|
||||
AssemblyName,
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor("valid-attribute", validProperty)
|
||||
CreateTagHelperAttributeDescriptor("valid-attribute", validProperty)
|
||||
});
|
||||
|
||||
// Act
|
||||
|
|
@ -811,13 +808,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
var errorSink = new ErrorSink();
|
||||
var validProperty = typeof(NonPublicAccessorTagHelper).GetProperty(
|
||||
nameof(NonPublicAccessorTagHelper.ValidAttribute));
|
||||
var expectedDescriptor = new TagHelperDescriptor(
|
||||
var expectedDescriptor = CreateTagHelperDescriptor(
|
||||
"non-public-accessor",
|
||||
typeof(NonPublicAccessorTagHelper).FullName,
|
||||
AssemblyName,
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor("valid-attribute", validProperty)
|
||||
CreateTagHelperAttributeDescriptor("valid-attribute", validProperty)
|
||||
});
|
||||
|
||||
// Act
|
||||
|
|
@ -838,9 +835,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var errorSink = new ErrorSink();
|
||||
|
||||
// Also confirm isStringProperty is calculated correctly.
|
||||
var expectedDescriptor = new TagHelperDescriptor(
|
||||
var expectedDescriptor = CreateTagHelperDescriptor(
|
||||
"not-bound-attribute",
|
||||
typeof(NotBoundAttributeTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -851,7 +846,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
nameof(NotBoundAttributeTagHelper.BoundProperty),
|
||||
typeof(object).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null)
|
||||
});
|
||||
|
||||
|
|
@ -891,11 +885,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var errorSink = new ErrorSink();
|
||||
|
||||
// Also confirm isStringProperty is calculated correctly.
|
||||
var expectedDescriptors = new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"div",
|
||||
typeof(MultiTagTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -906,10 +898,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
nameof(MultiTagTagHelper.ValidAttribute),
|
||||
typeof(string).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null)
|
||||
}),
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"p",
|
||||
typeof(MultiTagTagHelper).FullName,
|
||||
AssemblyName,
|
||||
|
|
@ -920,7 +911,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
nameof(MultiTagTagHelper.ValidAttribute),
|
||||
typeof(string).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null)
|
||||
})
|
||||
};
|
||||
|
|
@ -948,13 +938,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
// Arrange
|
||||
var errorSink = new ErrorSink();
|
||||
var validProp = typeof(InheritedMultiTagTagHelper).GetProperty(nameof(InheritedMultiTagTagHelper.ValidAttribute));
|
||||
var expectedDescriptor = new TagHelperDescriptor(
|
||||
var expectedDescriptor = CreateTagHelperDescriptor(
|
||||
"inherited-multi-tag",
|
||||
typeof(InheritedMultiTagTagHelper).FullName,
|
||||
AssemblyName,
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor("valid-attribute", validProp)
|
||||
CreateTagHelperAttributeDescriptor("valid-attribute", validProp)
|
||||
});
|
||||
|
||||
// Act
|
||||
|
|
@ -977,11 +967,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
var errorSink = new ErrorSink();
|
||||
var expectedDescriptors = new[]
|
||||
{
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"div",
|
||||
typeof(DuplicateTagNameTagHelper).FullName,
|
||||
AssemblyName),
|
||||
new TagHelperDescriptor(
|
||||
CreateTagHelperDescriptor(
|
||||
"p",
|
||||
typeof(DuplicateTagNameTagHelper).FullName,
|
||||
AssemblyName)
|
||||
|
|
@ -1011,9 +1001,10 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
var errorSink = new ErrorSink();
|
||||
var expectedDescriptors = new[]
|
||||
{
|
||||
new TagHelperDescriptor("data-condition",
|
||||
typeof(OverrideNameTagHelper).FullName,
|
||||
AssemblyName),
|
||||
CreateTagHelperDescriptor(
|
||||
"data-condition",
|
||||
typeof(OverrideNameTagHelper).FullName,
|
||||
AssemblyName),
|
||||
};
|
||||
|
||||
// Act
|
||||
|
|
@ -1141,7 +1132,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(InvalidBoundAttributeWithValid),
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
CreateTagHelperAttributeDescriptor(
|
||||
"int-attribute",
|
||||
typeof(InvalidBoundAttributeWithValid)
|
||||
.GetProperty(nameof(InvalidBoundAttributeWithValid.IntAttribute)))
|
||||
|
|
@ -1159,7 +1150,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
typeof(OverriddenInvalidBoundAttributeWithValid),
|
||||
new[]
|
||||
{
|
||||
new TagHelperAttributeDescriptor(
|
||||
CreateTagHelperAttributeDescriptor(
|
||||
"valid-something",
|
||||
typeof(OverriddenInvalidBoundAttributeWithValid)
|
||||
.GetProperty(nameof(OverriddenInvalidBoundAttributeWithValid.DataSomething)))
|
||||
|
|
@ -1253,14 +1244,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
propertyName: nameof(DefaultValidHtmlAttributePrefix.DictionaryProperty),
|
||||
typeName: typeof(IDictionary<string, string>).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "dictionary-property-",
|
||||
propertyName: nameof(DefaultValidHtmlAttributePrefix.DictionaryProperty),
|
||||
typeName: typeof(string).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null),
|
||||
},
|
||||
new string[0]
|
||||
|
|
@ -1274,14 +1263,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
propertyName: nameof(SingleValidHtmlAttributePrefix.DictionaryProperty),
|
||||
typeName: typeof(IDictionary<string, string>).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-name-",
|
||||
propertyName: nameof(SingleValidHtmlAttributePrefix.DictionaryProperty),
|
||||
typeName: typeof(string).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null),
|
||||
},
|
||||
new string[0]
|
||||
|
|
@ -1295,91 +1282,78 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
propertyName: nameof(MultipleValidHtmlAttributePrefix.DictionaryProperty),
|
||||
typeName: typeof(Dictionary<string, object>).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-name2",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.DictionarySubclassProperty),
|
||||
typeName: typeof(DictionarySubclass).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-name3",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.DictionaryWithoutParameterlessConstructorProperty),
|
||||
typeName: typeof(DictionaryWithoutParameterlessConstructor).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-name4",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.GenericDictionarySubclassProperty),
|
||||
typeName: typeof(GenericDictionarySubclass<object>).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-name5",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.SortedDictionaryProperty),
|
||||
typeName: typeof(SortedDictionary<string, int>).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-name6",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.StringProperty),
|
||||
typeName: typeof(string).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-prefix1-",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.DictionaryProperty),
|
||||
typeName: typeof(object).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-prefix2-",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.DictionarySubclassProperty),
|
||||
typeName: typeof(string).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-prefix3-",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.DictionaryWithoutParameterlessConstructorProperty),
|
||||
typeName: typeof(string).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-prefix4-",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.GenericDictionarySubclassProperty),
|
||||
typeName: typeof(object).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-prefix5-",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.SortedDictionaryProperty),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "get-only-dictionary-property-",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.GetOnlyDictionaryProperty),
|
||||
typeName: typeof(int).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
new TagHelperAttributeDescriptor(
|
||||
name: "valid-prefix6",
|
||||
propertyName: nameof(MultipleValidHtmlAttributePrefix.GetOnlyDictionaryPropertyWithAttributePrefix),
|
||||
typeName: typeof(string).FullName,
|
||||
isIndexer: true,
|
||||
isStringProperty: true,
|
||||
designTimeDescriptor: null),
|
||||
},
|
||||
new string[0]
|
||||
|
|
@ -1403,7 +1377,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
propertyName: nameof(MultipleInvalidHtmlAttributePrefix.LongProperty),
|
||||
typeName: typeof(long).FullName,
|
||||
isIndexer: false,
|
||||
isStringProperty: false,
|
||||
designTimeDescriptor: null),
|
||||
},
|
||||
new[]
|
||||
|
|
@ -1883,6 +1856,35 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
return data;
|
||||
}
|
||||
|
||||
private static TagHelperDescriptor CreateTagHelperDescriptor(
|
||||
string tagName,
|
||||
string typeName,
|
||||
string assemblyName,
|
||||
IEnumerable<TagHelperAttributeDescriptor> attributes = null,
|
||||
IEnumerable<string> requiredAttributes = null)
|
||||
{
|
||||
return new TagHelperDescriptor(
|
||||
prefix: string.Empty,
|
||||
tagName: tagName,
|
||||
typeName: typeName,
|
||||
assemblyName: assemblyName,
|
||||
attributes: attributes ?? Enumerable.Empty<TagHelperAttributeDescriptor>(),
|
||||
requiredAttributes: requiredAttributes ?? Enumerable.Empty<string>(),
|
||||
designTimeDescriptor: null);
|
||||
}
|
||||
|
||||
private static TagHelperAttributeDescriptor CreateTagHelperAttributeDescriptor(
|
||||
string name,
|
||||
PropertyInfo propertyInfo)
|
||||
{
|
||||
return new TagHelperAttributeDescriptor(
|
||||
name,
|
||||
propertyInfo.Name,
|
||||
propertyInfo.PropertyType.FullName,
|
||||
isIndexer: false,
|
||||
designTimeDescriptor: null);
|
||||
}
|
||||
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
private class DefaultEditorBrowsableTagHelper : TagHelper
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,9 +25,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
{
|
||||
get
|
||||
{
|
||||
return new TagHelperDescriptor("valid_plain",
|
||||
Valid_PlainTagHelperType.FullName,
|
||||
AssemblyName);
|
||||
return new TagHelperDescriptor(
|
||||
prefix: string.Empty,
|
||||
tagName: "valid_plain",
|
||||
typeName: Valid_PlainTagHelperType.FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: Enumerable.Empty<TagHelperAttributeDescriptor>(),
|
||||
requiredAttributes: Enumerable.Empty<string>(),
|
||||
designTimeDescriptor: null);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -35,9 +40,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
{
|
||||
get
|
||||
{
|
||||
return new TagHelperDescriptor("valid_inherited",
|
||||
Valid_InheritedTagHelperType.FullName,
|
||||
AssemblyName);
|
||||
return new TagHelperDescriptor(
|
||||
prefix: string.Empty,
|
||||
tagName: "valid_inherited",
|
||||
typeName: Valid_InheritedTagHelperType.FullName,
|
||||
assemblyName: AssemblyName,
|
||||
attributes: Enumerable.Empty<TagHelperAttributeDescriptor>(),
|
||||
requiredAttributes: Enumerable.Empty<string>(),
|
||||
designTimeDescriptor: null);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -365,8 +375,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("", TagHelperDirectiveType.TagHelperPrefix),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("", TagHelperDirectiveType.TagHelperPrefix),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -376,8 +386,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -387,10 +397,10 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix)
|
||||
CreateTagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix)
|
||||
},
|
||||
new [] { CreatePrefixedValidPlainDescriptor("th:") }
|
||||
},
|
||||
|
|
@ -398,8 +408,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix)
|
||||
},
|
||||
new []
|
||||
{
|
||||
|
|
@ -411,11 +421,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("th-", TagHelperDirectiveType.TagHelperPrefix),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("th-", TagHelperDirectiveType.TagHelperPrefix),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Inherited*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
|
|
@ -429,11 +439,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("", TagHelperDirectiveType.TagHelperPrefix),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("", TagHelperDirectiveType.TagHelperPrefix),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Inherited*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
|
|
@ -443,13 +453,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Inherited*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix)
|
||||
CreateTagHelperDirectiveDescriptor("th:", TagHelperDirectiveType.TagHelperPrefix)
|
||||
},
|
||||
new []
|
||||
{
|
||||
|
|
@ -461,11 +471,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("th", TagHelperDirectiveType.TagHelperPrefix),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("th", TagHelperDirectiveType.TagHelperPrefix),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyB,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -480,11 +490,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
defaultAssemblyLookups,
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("th:-", TagHelperDirectiveType.TagHelperPrefix),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("th:-", TagHelperDirectiveType.TagHelperPrefix),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyB,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -534,7 +544,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
// Arrange
|
||||
var tagHelperDescriptorResolver = new AssemblyCheckingTagHelperDescriptorResolver();
|
||||
var context = new TagHelperDescriptorResolutionContext(
|
||||
new[] { new TagHelperDirectiveDescriptor(lookupText, TagHelperDirectiveType.AddTagHelper) },
|
||||
new[] { CreateTagHelperDirectiveDescriptor(lookupText, TagHelperDirectiveType.AddTagHelper) },
|
||||
new ErrorSink());
|
||||
|
||||
// Act
|
||||
|
|
@ -556,9 +566,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
// We're treating 'string' as a TagHelper so we can test TagHelpers in multiple assemblies without
|
||||
// building a separate assembly with a single TagHelper.
|
||||
var stringTagHelperDescriptor =
|
||||
new TagHelperDescriptor("string",
|
||||
"System.String",
|
||||
assemblyB);
|
||||
new TagHelperDescriptor(
|
||||
prefix: string.Empty,
|
||||
tagName: "string",
|
||||
typeName: "System.String",
|
||||
assemblyName: assemblyB,
|
||||
attributes: Enumerable.Empty<TagHelperAttributeDescriptor>(),
|
||||
requiredAttributes: Enumerable.Empty<string>(),
|
||||
designTimeDescriptor: null);
|
||||
|
||||
return new TheoryData<Dictionary<string, IEnumerable<Type>>, // descriptorAssemblyLookups
|
||||
IEnumerable<TagHelperDirectiveDescriptor>, // directiveDescriptors
|
||||
|
|
@ -571,7 +586,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
new [] { Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -583,8 +598,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
new [] { Valid_PlainTagHelperDescriptor, stringTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -596,8 +611,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new [] { Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -609,9 +624,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new [] { stringTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -622,10 +637,10 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
Valid_PlainTagHelperType.FullName + ", " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
new [] { Valid_PlainTagHelperDescriptor, Valid_InheritedTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -636,8 +651,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
Valid_PlainTagHelperType.FullName + ", " + assemblyA,
|
||||
TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
|
|
@ -650,11 +665,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
Valid_PlainTagHelperType.FullName + ", " + assemblyA,
|
||||
TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
new [] { Valid_InheritedTagHelperDescriptor, Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -665,8 +680,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
new [] { Valid_InheritedTagHelperDescriptor, Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -677,7 +692,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
Valid_PlainTagHelperType.Namespace + ".Valid_Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -690,7 +705,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
Valid_PlainTagHelperType.Namespace + ".Valid?Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -703,7 +718,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -716,7 +731,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain?*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -729,7 +744,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
Valid_PlainTagHelperType.Namespace + "*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -742,7 +757,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*_*lain*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -755,7 +770,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*?*l?in*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -768,7 +783,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*" + Valid_PlainTagHelperType.FullName + "*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -781,7 +796,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*" + Valid_PlainTagHelperType.FullName + "*, " + assemblyA,
|
||||
TagHelperDirectiveType.AddTagHelper),
|
||||
},
|
||||
|
|
@ -794,8 +809,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*_*la*, " + assemblyA,
|
||||
TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
|
|
@ -808,11 +823,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*Plain*, " + assemblyA,
|
||||
TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
new [] { Valid_InheritedTagHelperDescriptor, Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -823,11 +838,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"?*Plain*?, " + assemblyA,
|
||||
TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
new [] { Valid_InheritedTagHelperDescriptor, Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -839,8 +854,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*ring, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*ring, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new [] { Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -852,8 +867,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("?*?, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*?r?n?, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("?*?, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*?r?n?, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new [] { Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -865,8 +880,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("?*TagHelper, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("?" + stringType.FullName + ", " + assemblyB, TagHelperDirectiveType.AddTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("?*TagHelper, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("?" + stringType.FullName + ", " + assemblyB, TagHelperDirectiveType.AddTagHelper)
|
||||
},
|
||||
new [] { Valid_PlainTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -878,9 +893,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("Microsoft.*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("Microsoft.*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new [] { stringTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -892,9 +907,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*????*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*?, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("Microsoft?*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*????*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*?, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("Microsoft?*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new [] { stringTagHelperDescriptor }
|
||||
},
|
||||
|
|
@ -906,13 +921,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"?Microsoft*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"?" + stringType.FullName + ", " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new []
|
||||
|
|
@ -930,13 +945,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
"Microsoft*TagHelper?, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor(
|
||||
CreateTagHelperDirectiveDescriptor(
|
||||
stringType.FullName + "?, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
},
|
||||
new []
|
||||
|
|
@ -986,9 +1001,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
|
||||
var assemblyB = stringType.GetTypeInfo().Assembly.GetName().Name;
|
||||
var stringTagHelperDescriptor =
|
||||
new TagHelperDescriptor("string",
|
||||
"System.String",
|
||||
assemblyB);
|
||||
new TagHelperDescriptor(
|
||||
prefix: string.Empty,
|
||||
tagName: "string",
|
||||
typeName: "System.String",
|
||||
assemblyName: assemblyB,
|
||||
attributes: Enumerable.Empty<TagHelperAttributeDescriptor>(),
|
||||
requiredAttributes: Enumerable.Empty<string>(),
|
||||
designTimeDescriptor: null);
|
||||
|
||||
return new TheoryData<Dictionary<string, IEnumerable<Type>>, // descriptorAssemblyLookups
|
||||
IEnumerable<TagHelperDirectiveDescriptor>> // directiveDescriptors
|
||||
|
|
@ -1000,8 +1020,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1011,9 +1031,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(Valid_PlainTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor(Valid_InheritedTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(Valid_PlainTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(Valid_InheritedTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1024,10 +1044,10 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1038,19 +1058,19 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor(Valid_PlainTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor(Valid_InheritedTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor(stringType.FullName + ", " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(Valid_PlainTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(Valid_InheritedTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(stringType.FullName + ", " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
}
|
||||
},
|
||||
{
|
||||
new Dictionary<string, IEnumerable<Type>>(),
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor(Valid_PlainTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor(Valid_PlainTagHelperType.FullName + ", " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1060,8 +1080,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*TagHelper, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*TagHelper, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1071,8 +1091,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*TagHelpe?, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*TagHelpe?, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1082,9 +1102,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("*_*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*Plain*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*_*Inhe*ed*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("*_*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*Plain*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*_*Inhe*ed*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper)
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1095,10 +1115,10 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("Microsoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("System.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*Helper, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor("System.*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("Microsoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("System.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*Helper, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("System.*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1109,10 +1129,10 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("?icrosoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("?ystem.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("*?????r, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
new TagHelperDirectiveDescriptor("Sy??em.*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
CreateTagHelperDirectiveDescriptor("?icrosoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("?ystem.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("*?????r, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("Sy??em.*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1123,8 +1143,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
},
|
||||
new []
|
||||
{
|
||||
new TagHelperDirectiveDescriptor("?i?crosoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
new TagHelperDirectiveDescriptor("??ystem.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("?i?crosoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
|
||||
CreateTagHelperDirectiveDescriptor("??ystem.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
@ -1402,6 +1422,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
assemblyName: stringType.GetTypeInfo().Assembly.GetName().Name);
|
||||
}
|
||||
|
||||
private static TagHelperDirectiveDescriptor CreateTagHelperDirectiveDescriptor(
|
||||
string directiveText,
|
||||
TagHelperDirectiveType directiveType)
|
||||
{
|
||||
return new TagHelperDirectiveDescriptor(directiveText, SourceLocation.Zero, directiveType);
|
||||
}
|
||||
|
||||
private class TestTagHelperDescriptorResolver : TagHelperDescriptorResolver
|
||||
{
|
||||
public TestTagHelperDescriptorResolver(TagHelperTypeResolver typeResolver)
|
||||
|
|
@ -1415,7 +1442,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
new TagHelperDescriptorResolutionContext(
|
||||
lookupTexts.Select(
|
||||
lookupText =>
|
||||
new TagHelperDirectiveDescriptor(lookupText, TagHelperDirectiveType.AddTagHelper)),
|
||||
CreateTagHelperDirectiveDescriptor(lookupText, TagHelperDirectiveType.AddTagHelper)),
|
||||
new ErrorSink()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,10 @@
|
|||
"type": "build"
|
||||
},
|
||||
"Microsoft.AspNet.Testing": "1.0.0-*",
|
||||
"Microsoft.Framework.HashCodeCombiner.Sources": {
|
||||
"type": "build",
|
||||
"version": "1.0.0-*"
|
||||
},
|
||||
"Microsoft.Framework.WebEncoders.Testing": "1.0.0-*",
|
||||
"xunit.runner.aspnet": "2.0.0-aspnet-*"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNet.Razor.TagHelpers;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNet.Razor.Test.TagHelpers
|
||||
{
|
||||
public class TagHelperAttributeDescriptorTest
|
||||
{
|
||||
public static TheoryData IsStringPropertyData
|
||||
{
|
||||
get
|
||||
{
|
||||
// attributeType, isIndexer, expectedIsStringProperty
|
||||
return new TheoryData<Type, bool, bool>
|
||||
{
|
||||
{ typeof(int), false, false },
|
||||
{ typeof(string), false, true },
|
||||
{ typeof(string), true, true },
|
||||
{ typeof(object), false, false },
|
||||
{ typeof(IEnumerable<string>), false, false },
|
||||
{ typeof(IDictionary<string, string>), false, false },
|
||||
{ typeof(IDictionary<string, string>), true, false },
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(IsStringPropertyData))]
|
||||
public void TagHelperAttributeDescriptor_IsStringPropertySetCorrectly(
|
||||
Type attributeType,
|
||||
bool isIndexer,
|
||||
bool expectedIsStringProperty)
|
||||
{
|
||||
// Arrange
|
||||
var attributeDescriptor = new TagHelperAttributeDescriptor(
|
||||
"someAttribute",
|
||||
"someProperty",
|
||||
attributeType.FullName,
|
||||
isIndexer,
|
||||
designTimeDescriptor: null);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(expectedIsStringProperty, attributeDescriptor.IsStringProperty);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue