public void UpdateSettingWithProperVersionTest()
        {
            const string newSetting = "New Setting";

            ISettingProvider provider = new StaticSettingProvider(TestVersion, _testSetting);

            provider.UpdateSetting(TestVersion, newSetting);

            var updatedSetting = provider.GetLatestSetting();

            Assert.AreEqual(newSetting, updatedSetting);
        }
        public void RemoveSettingThrowsExceptionTest()
        {
            const string exceptionMessage = "Cannot remove a setting from this class.";

            ISettingProvider provider = new StaticSettingProvider(TestVersion, _testSetting);

            NotImplementedException thrownException = null;

            try
            {
                provider.RemoveSetting(TestVersion);
            }
            catch (NotImplementedException nie)
            {
                thrownException = nie;
            }

            Assert.IsNotNull(thrownException);
            Assert.AreEqual(exceptionMessage, thrownException.Message);
        }
        public void UpdateSettingWithWrongVersionThrowsExceptionTest()
        {
            const string newSetting       = "New Setting";
            var          exceptionMessage = $"Cannot update a version not equal to the configured version ({TestVersion}).";

            ISettingProvider provider = new StaticSettingProvider(TestVersion, _testSetting);

            ArgumentException thrownException = null;

            try
            {
                provider.UpdateSetting(TestVersion + 1, newSetting);
            }
            catch (ArgumentException ae)
            {
                thrownException = ae;
            }

            Assert.IsNotNull(thrownException);
            Assert.AreEqual(exceptionMessage, thrownException.Message);
        }
        public void GetSettingThrowsExceptionWithBadVersionTest()
        {
            var exceptionMessage =
                $"Cannot retrieve a version that is not equal to the configured version ({TestVersion}).";

            ISettingProvider provider = new StaticSettingProvider(TestVersion, _testSetting);

            ArgumentException thrownException = null;

            try
            {
                // ReSharper disable UnusedVariable
                var version = provider[TestVersion + 1];
                // ReSharper restore UnusedVariable
            }
            catch (ArgumentException ae)
            {
                thrownException = ae;
            }

            Assert.IsNotNull(thrownException);
            Assert.AreEqual(exceptionMessage, thrownException.Message);
        }
        public void GetSettingByVersionTest()
        {
            ISettingProvider provider = new StaticSettingProvider(TestVersion, _testSetting);

            Assert.AreEqual(_testSetting, provider[TestVersion]);
        }