public void SetValues_does_not_attempt_to_set_values_that_are_not_different() { var properties = new Dictionary<string, object> { { "PublicStringProp", "PublicStringPropValue" }, { "PublicIntProp", 2 }, { "PublicBinaryProp", new byte[] { 3, 1, 4, 1, 5, 9 } }, }; var values = new TestInternalPropertyValues<FakeTypeWithProps>(properties); var obj = new FakeTypeWithProps { PublicStringProp = "PublicStringPropValue", PublicIntProp = 2, PublicBinaryProp = new byte[] { 3, 1, 4, 1, 5, 9 } }; values.SetValues(obj); values.GetMockItem("PublicStringProp").VerifySet(i => i.Value = It.IsAny<object>(), Times.Never()); values.GetMockItem("PublicIntProp").VerifySet(i => i.Value = It.IsAny<object>(), Times.Never()); values.GetMockItem("PublicBinaryProp").VerifySet(i => i.Value = It.IsAny<object>(), Times.Never()); }
public void SetValues_when_nested_property_dictionary_in_source_is_null_throws() { var properties = new Dictionary<string, object> { { "Id", 0 }, { "NestedObject", null } }; var values = new TestInternalPropertyValues<FakeTypeWithProps>(properties, new[] { "NestedObject" }); var obj = new FakeTypeWithProps { Id = 1, NestedObject = new FakeTypeWithProps { Id = 2 } }; Assert.Equal( Strings.DbPropertyValues_NestedPropertyValuesNull("NestedObject", typeof(FakeTypeWithProps).Name), Assert.Throws<InvalidOperationException>(() => values.SetValues(obj)).Message); }
public void SetValues_copies_values_from_object_to_property_dictionary() { var properties = new Dictionary<string, object> { { "Id", 0 }, { "PublicStringProp", null }, { "PrivateStringProp", null }, { "PublicIntProp", 0 }, { "PrivateIntProp", 0 }, { "PublicIntPropWithPrivateSetter", 0 }, { "PublicIntPropWithPrivateGetter", 0 }, { "PublicBinaryProp", null }, }; var values = new TestInternalPropertyValues<FakeTypeWithProps>(properties); var obj = new FakeTypeWithProps( 1, "PublicStringPropValue", "PrivateStringPropValue", 2, 3, 4, 5, new byte[] { 3, 1, 4, 1, 5, 9 }); values.SetValues(obj); Assert.Equal(1, values["Id"]); Assert.Equal("PublicStringPropValue", values["PublicStringProp"]); Assert.Equal(2, values["PublicIntProp"]); Assert.Equal("PrivateStringPropValue", values["PrivateStringProp"]); Assert.Equal(3, values["PrivateIntProp"]); Assert.Equal(4, values["PublicIntPropWithPrivateSetter"]); Assert.Equal(5, values["PublicIntPropWithPrivateGetter"]); Assert.True(DbHelpers.KeyValuesEqual(new byte[] { 3, 1, 4, 1, 5, 9 }, values["PublicBinaryProp"])); }
public void SetValues_when_complex_object_is_null_throws() { var nestedProperties = new Dictionary<string, object> { { "Id", 0 } }; var nestedValues = new TestInternalPropertyValues<FakeTypeWithProps>(nestedProperties); var properties = new Dictionary<string, object> { { "Id", 0 }, { "NestedObject", nestedValues } }; var values = new TestInternalPropertyValues<FakeTypeWithProps>(properties, new[] { "NestedObject" }); var obj = new FakeTypeWithProps { Id = 1, NestedObject = null }; Assert.Equal( Strings.DbPropertyValues_ComplexObjectCannotBeNull("NestedObject", typeof(FakeTypeWithProps).Name), Assert.Throws<InvalidOperationException>(() => values.SetValues(obj)).Message); }
public void Complex_values_cannot_be_set_to_actual_complex_object_instance_in_a_property_dictionary() { var values = new DbPropertyValues(CreateSimpleValues()); Assert.Equal( Strings.DbPropertyValues_AttemptToSetNonValuesOnComplexProperty, Assert.Throws<ArgumentException>(() => values["NestedObject"] = new FakeTypeWithProps()).Message); }