public void HtmlAttributePropertyHelper_ReturnsValueCorrectly_ForValueTypes() { // Arrange var anonymous = new { foo = 32 }; var property = anonymous.GetType().GetProperties().First(); // Act var helper = new HtmlAttributePropertyHelper(property); // Assert Assert.Equal("foo", helper.Name); Assert.Equal(32, helper.GetValue(anonymous)); }
public void HtmlAttributePropertyHelper_ReturnsNameCorrectly() { // Arrange var anonymous = new { foo = "bar" }; var property = anonymous.GetType().GetProperties().First(); // Act var helper = new HtmlAttributePropertyHelper(property); // Assert Assert.Equal("foo", property.Name); Assert.Equal("foo", helper.Name); }
public void HtmlAttributePropertyHelper_RenamesPropertyNames() { // Arrange var anonymous = new { bar_baz = "foo" }; var property = anonymous.GetType().GetProperties().First(); // Act var helper = new HtmlAttributePropertyHelper(property); // Assert Assert.Equal("bar_baz", property.Name); Assert.Equal("bar-baz", helper.Name); }
public void HtmlAttributePropertyHelper_ReturnsCachedPropertyHelper() { // Arrange var anonymous = new { foo = "bar" }; // Act var helpers1 = HtmlAttributePropertyHelper.GetProperties(anonymous); var helpers2 = HtmlAttributePropertyHelper.GetProperties(anonymous); // Assert Assert.Equal(1, helpers1.Length); Assert.Same(helpers1, helpers2); Assert.Same(helpers1[0], helpers2[0]); }
/// <summary> /// Creates a dictionary of HTML attributes from the input object, /// translating underscores to dashes in each public instance property. /// /// If the object is already an <see cref="IDictionary{string, object}"/> instance, then it is /// returned as-is. /// <example> /// <c>new { data_name="value" }</c> will translate to the entry <c>{ "data-name", "value" }</c> /// in the resulting dictionary. /// </example> /// </summary> /// <param name="htmlAttributes">Anonymous object describing HTML attributes.</param> /// <returns>A dictionary that represents HTML attributes.</returns> public static IDictionary <string, object> AnonymousObjectToHtmlAttributes(object htmlAttributes) { var dictionary = htmlAttributes as IDictionary <string, object>; if (dictionary != null) { return(new Dictionary <string, object>(dictionary, StringComparer.OrdinalIgnoreCase)); } dictionary = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase); if (htmlAttributes != null) { foreach (var helper in HtmlAttributePropertyHelper.GetProperties(htmlAttributes)) { dictionary[helper.Name] = helper.GetValue(htmlAttributes); } } return(dictionary); }
public void HtmlAttributePropertyHelper_DoesNotShareCacheWithPropertyHelper() { // Arrange var anonymous = new { bar_baz1 = "foo" }; // Act var helpers1 = HtmlAttributePropertyHelper.GetProperties(anonymous); var helpers2 = PropertyHelper.GetProperties(anonymous); // Assert Assert.Equal(1, helpers1.Length); Assert.Equal(1, helpers2.Length); Assert.NotEqual <PropertyHelper[]>(helpers1, helpers2); Assert.NotEqual <PropertyHelper>(helpers1[0], helpers2[0]); Assert.IsType <HtmlAttributePropertyHelper>(helpers1[0]); Assert.IsNotType <HtmlAttributePropertyHelper>(helpers2[0]); Assert.Equal("bar-baz1", helpers1[0].Name); Assert.Equal("bar_baz1", helpers2[0].Name); }