public void Delegate_setter_can_set_on_privatesetter_property_singlebasetype()
        {
            var entityType = CreateModel().AddEntityType(typeof(ConcreteEntity1));
            var property   = entityType.AddProperty(typeof(ConcreteEntity1).GetProperty(nameof(ConcreteEntity1.PrivateProperty)));
            var entity     = new ConcreteEntity1();

            new ClrPropertySetterFactory().Create(property).SetClrValue(entity, 100);
            Assert.Equal(100, entity.PrivateProperty);
        }
        public void Delegate_setter_throws_if_no_setter_found()
        {
            var entityType = new Model().AddEntityType(typeof(ConcreteEntity1));
            var property   = entityType.AddProperty(typeof(ConcreteEntity1).GetProperty(nameof(ConcreteEntity1.NoSetterProperty)));
            // ReSharper disable once NotAccessedVariable
            var _ = new ConcreteEntity1();

            Assert.Throws <InvalidOperationException>(() =>
                                                      new ClrPropertySetterFactory().Create(property));

            entityType = new Model().AddEntityType(typeof(ConcreteEntity2));
            property   = entityType.AddProperty(typeof(ConcreteEntity2).GetProperty(nameof(ConcreteEntity2.NoSetterProperty)));
            // ReSharper disable once RedundantAssignment
            _ = new ConcreteEntity2();

            Assert.Throws <InvalidOperationException>(() =>
                                                      new ClrPropertySetterFactory().Create(property));
        }
        public void Delegate_setter_throws_if_no_setter_found()
        {
            var entityType = new Model().AddEntityType(typeof(ConcreteEntity1));
            var property = entityType.AddProperty(typeof(ConcreteEntity1).GetProperty(nameof(ConcreteEntity1.NoSetterProperty)));
            // ReSharper disable once NotAccessedVariable
            var _ = new ConcreteEntity1();

            Assert.Throws<InvalidOperationException>(() =>
                new ClrPropertySetterFactory().Create(property));

            entityType = new Model().AddEntityType(typeof(ConcreteEntity2));
            property = entityType.AddProperty(typeof(ConcreteEntity2).GetProperty(nameof(ConcreteEntity2.NoSetterProperty)));
            // ReSharper disable once RedundantAssignment
            _ = new ConcreteEntity2();

            Assert.Throws<InvalidOperationException>(() =>
                new ClrPropertySetterFactory().Create(property));
        }
        public void Delegate_setter_can_set_on_privatesetter_property_singlebasetype()
        {
            var entityType = new Model().AddEntityType(typeof(ConcreteEntity1));
            var property = entityType.AddProperty(typeof(ConcreteEntity1).GetProperty(nameof(ConcreteEntity1.PrivateProperty)));
            var entity = new ConcreteEntity1();

            new ClrPropertySetterFactory().Create(property).SetClrValue(entity, 100);
            Assert.Equal(100, entity.PrivateProperty);
        }