public void ReadOnlyPropertyMustBeRespected()
        {
            var repo     = new InMemoryRepository();
            var manager  = new SettingsManagerPeriodic(repo);
            var settings = manager.Get <ReadOnlySettings>();

            settings.Text = "a";
            manager.Save(settings);
            settings = manager.Get <ReadOnlySettings>(true);
            Assert.AreNotEqual("a", settings.Text);

            manager.ChangeAndSave(s => s.Text = "b", settings);
            settings = manager.Get <ReadOnlySettings>(true);
            Assert.AreNotEqual("b", settings.Text);
        }
        public void PropertyChangedEventMustNotFireWhenPropertyValueNotChanged()
        {
            var repo     = new InMemoryRepository();
            var manager  = new SettingsManagerPeriodic(repo);
            var settings = manager.Get <Settings>();

            settings.Text = "old";
            var fired = false;

            manager.PropertyValueChanged += (sender, args) =>
            {
                fired = true;
            };
            manager.ChangeAndSave(s => s.Text = "old", settings);
            manager.Get <Settings>(true);
            Assert.IsFalse(fired);
        }