using System.Collections.Generic; using Xunit; namespace ZeroLevel.UnitTests { public class AppConfig { public string Url; public int BatchSize; public IEnumerable Sheme; public int[] Port; public ServiceConfig Service; public IEnumerable List; } public class ServiceConfig { public string AppName; public string AppKey; public string ServiceGroup; public string ServiceType; } public class ConfigurationTest { [Fact] public void BindConfigurationTest() { // Arrange var set = Configuration.CreateSet(); set.Default.Append("url", "https://habr.ru"); set.Default.Append("batchSize", "1000"); set.Default.Append("sheme", "socks"); set.Default.Append("sheme", "http"); set.Default.Append("sheme", "https"); set.Default.Append("port", "80"); set.Default.Append("port", "90"); set.Default.Append("port", "8800"); set.Default.Append("list", "1-5,7,9"); var section = set.CreateSection("service"); section.Append("AppName", "TestApp"); section.Append("AppKey", "test.app"); section.Append("ServiceGroup", "System"); section.Append("ServiceType", "service"); // Act var config = set.Bind(); // Assert Assert.Equal("https://habr.ru", config.Url); Assert.Equal(1000, config.BatchSize); Assert.Contains(config.Sheme, t=>t.Equals("socks")); Assert.Contains(config.Sheme, t => t.Equals("http")); Assert.Contains(config.Sheme, t => t.Equals("https")); Assert.Contains(config.Port, t => t == 80); Assert.Contains(config.Port, t => t == 90); Assert.Contains(config.Port, t => t == 8800); Assert.Contains(config.List, i => i == 1); Assert.Contains(config.List, i => i == 2); Assert.Contains(config.List, i => i == 3); Assert.Contains(config.List, i => i == 4); Assert.Contains(config.List, i => i == 5); Assert.Contains(config.List, i => i == 7); Assert.Contains(config.List, i => i == 9); Assert.DoesNotContain(config.List, i => i == 8); Assert.DoesNotContain(config.List, i => i == 6); Assert.Equal("test.app", config.Service.AppKey); Assert.Equal("TestApp", config.Service.AppName); Assert.Equal("System", config.Service.ServiceGroup); Assert.Equal("service", config.Service.ServiceType); } } }