public DirectProviderSetupFixture()
		{
			_provider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"First:Value", "things"}
			});
		}
		public void UnconvertableSettingResultsInFormatException()
		{
			var settingsProvider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"Smtp:Port", "abcdef"}
			});
			var reader = new SimpleSettingsReader(settingsProvider);

			Assert.Throws<FormatException>(() => reader.Read<SmtpSettings>());
		}
		public void FailsIfSettingsHaveNoCorrespondingProperty()
		{
			var settingsProvider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"My:Name", "Mike"},
				{"My:Blog", "http://codermike.com"}
			});
			var reader = new SimpleSettingsReader(settingsProvider);
			Assert.Throws<Exception>(() => reader.Read<MySettings>());
		}
		public void CanReadAStringValue()
		{
			var settingsProvider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"My:Name", "Mike"}
			});
			var reader = new SimpleSettingsReader(settingsProvider);
			var settings = reader.Read<MySettings>();
			Assert.Equal("Mike", settings.Name);
		}
		public void CanReadTypesOtherThanString()
		{
			var settingsProvider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"Smtp:Server", "fake-server"},
				{"Smtp:Port", "12345"},
				{"Smtp:UseSSL", "True"}
			});
			var reader = new SimpleSettingsReader(settingsProvider);
			var settings = reader.Read<SmtpSettings>();
			Assert.Equal("fake-server", settings.Server);
			Assert.Equal(12345, settings.Port);
			Assert.True(settings.UseSSL);
		}
		public void CanReadManySettingsFromASingleSource()
		{
			var settingsProvider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"Smtp:Server", "test-server"},
				{"My:Name", "Mike"}
			});

			var reader = new SimpleSettingsReader(settingsProvider);
			var smtpSettings = reader.Read<SmtpSettings>();
			var mySettings = reader.Read<MySettings>();
			Assert.Equal("test-server", smtpSettings.Server);
			Assert.Equal("Mike", mySettings.Name);
		}
		public void AttemptToSetTheUnsettableResultsInAnException()
		{
			var settingsProvider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"Test:Unsettable", "Bang"}
			});

			var reader = new SimpleSettingsReader(settingsProvider);

			Assert.Throws<ArgumentException>(() => reader.Read<TestSettings>());
		}
		public void CanSetPrivateProperties()
		{
			var settingsProvider = new TestSettingsProvider(new Dictionary<string, string>
			{
				{"Foo:Bar", "Baz"}
			});

			var reader = new SimpleSettingsReader(settingsProvider);
			var settings = reader.Read<FooSettings>();
			Assert.Equal("Baz", settings.Bar);
		}