using Microsoft.Extensions.Configuration;

namespace OptionStudy.UnitApp
{
  
    /// <summary>
    /// 以键值对的形式读取配置信息
    /// </summary>
    public class LoadKeyValueConfigTest:IDisposable
    {

        private readonly ITestOutputHelper? testOutput;
        public LoadKeyValueConfigTest(ITestOutputHelperAccessor helperAccessor) 
        {
            testOutput = helperAccessor.Output;
        }   

        /// <summary>
        /// 读取键值对配置
        /// </summary>
        [Fact]
        public void ReadKeyValue_Test()
        {
            //配置字典
            var source = new Dictionary<string, string?>()
            {
                ["AppName"]="MemoryAppName",
                ["AppVersion"]="2.1.2.3",
            };

            ConfigurationBuilder builder = new ConfigurationBuilder();
            builder.AddInMemoryCollection(source);

            var config = builder.Build();

            var appOption = new AppOption()
            { 
                AppName = config["AppName"]??"",
                AppVersion = config["AppVersion"] ?? "",
            };

            //断言
            Assert.NotNull(appOption);
            Assert.Equal("MemoryAppName", appOption.AppName);
            Assert.Equal("2.1.2.3", appOption.AppVersion);

            testOutput?.WriteLine("测试信息输出,对测试输出说明信息呗!");
        }

        public void Dispose()
        {
            
        }
    }
}