public void TestSetProperty()
        {
            int    propertyValue = 0;
            var    viewmodel     = new TestViewModel();
            String rPropertyName = null;

            viewmodel.PropertyChanged += (s, e) => rPropertyName = e.PropertyName;

            Assert.True(viewmodel.CallSetProperty(ref propertyValue, 123, "TestProperty"));
            Assert.Equal("TestProperty", rPropertyName);
            Assert.Equal(123, propertyValue);

            rPropertyName = null;
            propertyValue = 0;
            Assert.False(viewmodel.CallSetProperty(ref propertyValue, 0, "TestProperty"));
            Assert.Null(rPropertyName);
            Assert.Equal(0, propertyValue);

            rPropertyName = null;
            propertyValue = 0;
            Assert.True(viewmodel.CallSetProperty(ref propertyValue, 123, () => viewmodel.PropertyOne));
            Assert.Equal("PropertyOne", rPropertyName);
            Assert.Equal(123, propertyValue);

            rPropertyName = null;
            propertyValue = 0;
            Assert.False(viewmodel.CallSetProperty(ref propertyValue, 0, () => viewmodel.PropertyOne));
            Assert.Null(rPropertyName);
            Assert.Equal(0, propertyValue);
        }