コード例 #1
0
        public void TestJsonDeserializeSystem(string settingId, string valueType, SystemValueKind valueKind, bool success)
        {
            var options = new JsonSerializerOptions();

            options.Converters.Add(new JsonElementInferredTypeConverter());
            options.Converters.Add(new SettingHandlerDescription.JsonConverter());

            var json = JsonSerializer.Serialize(new Dictionary <string, object>()
            {
                { "type", "com.microsoft.windows.system" },
                { "setting_id", settingId },
                { "value_type", valueType }
            });
            var handler = JsonSerializer.Deserialize <SettingHandlerDescription>(json, options);

            Assert.NotNull(handler);
            if (success)
            {
                Assert.Equal(SettingHandlerDescription.HandlerKind.System, handler.Kind);
                Assert.IsType <SystemSettingHandlerDescription>(handler);
                SystemSettingHandlerDescription system = (SystemSettingHandlerDescription)handler;
                Assert.Equal(settingId, system.SettingId);
                Assert.Equal(valueKind, system.ValueKind);
            }
            else
            {
                Assert.Equal(SettingHandlerDescription.HandlerKind.Unknown, handler.Kind);
            }
        }
        public async Task TestApplyFail(SystemValueKind valueKind, object value)
        {
            var services = new ServiceCollection();

            services.AddLogging();
            services.AddSingleton <IServiceProvider>(provider => provider);
            services.AddSingleton <ISystemSettingFactory, MockSystemSettingFactory>();
            var mockFactory     = new MockSystemSettingFactory();
            var serviceProvider = services.BuildServiceProvider();
            var loggerFactory   = new LoggerFactory();
            var logger          = loggerFactory.CreateLogger <SystemSettingHandler>();

            createCount = 0;
            getCount    = 0;
            setCount    = 0;

            var setting = new Setting()
            {
                Name = "test",
                HandlerDescription = new SystemSettingHandlerDescription("thesetting", valueKind)
            };
            var handler = new SystemSettingHandler(setting, mockFactory, serviceProvider, logger);

            MockSystemSetting.nextSetResponder = (object nvalue) =>
            {
                Assert.Equal(value, nvalue);
            };

            var pass = await handler.Apply(value);

            Assert.Equal(1, createCount);
            Assert.Equal(0, getCount);
            Assert.Equal(0, setCount);
            Assert.False(pass);
        }
コード例 #3
0
        public bool TryConvertToSystem(object?value, SystemValueKind systemValueKind, out object?systemValue)
        {
            if (value is string stringValue)
            {
                switch (systemValueKind)
                {
                case SystemValueKind.String:
                    systemValue = stringValue;
                    return(true);
                }
                systemValue = null;
                return(false);
            }
            if (value is bool boolValue)
            {
                switch (systemValueKind)
                {
                case SystemValueKind.Boolean:
                    systemValue = boolValue;
                    return(true);
                }
                systemValue = null;
                return(false);
            }
            if (value is long longValue)
            {
                switch (systemValueKind)
                {
                case SystemValueKind.Integer:
                    systemValue = (UInt32)longValue;
                    return(true);

                case SystemValueKind.IdPrefixedEnum:
                    systemValue = String.Format("{0}{1}", Description.SettingId, longValue);
                    return(true);

                case SystemValueKind.String:
                    if (Description.IntegerMap is string[] map)
                    {
                        if (longValue >= 0 && longValue < map.Length)
                        {
                            systemValue = map[longValue];
                            return(true);
                        }
                    }
                    systemValue = null;
                    return(false);
                }
                systemValue = null;
                return(false);
            }
            systemValue = null;
            return(false);
        }
        public async Task TestCapturePass(Setting.ValueKind kind, SystemValueKind valueKind, object systemValue, object value)
        {
            var services = new ServiceCollection();

            services.AddLogging();
            services.AddSingleton <IServiceProvider>(provider => provider);
            services.AddSingleton <ISystemSettingFactory, MockSystemSettingFactory>();
            var mockFactory     = new MockSystemSettingFactory();
            var serviceProvider = services.BuildServiceProvider();
            var loggerFactory   = new LoggerFactory();
            var logger          = loggerFactory.CreateLogger <SystemSettingHandler>();

            createCount = 0;
            getCount    = 0;
            setCount    = 0;
            var handlerDescription = new SystemSettingHandlerDescription("thesetting", valueKind);

            handlerDescription.IntegerMap = new string[3] {
                "zero", "one", "two"
            };
            handlerDescription.ReverseIntegerMap = new Dictionary <string, long> {
                { "zero", 0L }, { "one", 1L }, { "two", 2L }
            };
            var setting = new Setting()
            {
                Name = "test",
                Kind = kind,
                HandlerDescription = handlerDescription
            };
            var handler = new SystemSettingHandler(setting, mockFactory, serviceProvider, logger);

            MockSystemSetting.nextGetResponder = () =>
            {
                return(systemValue);
            };

            var result = await handler.Capture();

            Assert.Equal(1, createCount);
            Assert.Equal(1, getCount);
            Assert.Equal(0, setCount);
            Assert.True(result.Success);
            Assert.NotNull(result.Value);
            Assert.Equal(value, result.Value);
        }
        public async Task TestCaptureFail(Setting.ValueKind kind, SystemValueKind valueKind, object value)
        {
            var services = new ServiceCollection();

            services.AddLogging();
            services.AddSingleton <IServiceProvider>(provider => provider);
            services.AddSingleton <ISystemSettingFactory, MockSystemSettingFactory>();
            var mockFactory     = new MockSystemSettingFactory();
            var serviceProvider = services.BuildServiceProvider();
            var loggerFactory   = new LoggerFactory();
            var logger          = loggerFactory.CreateLogger <SystemSettingHandler>();

            createCount = 0;
            getCount    = 0;
            setCount    = 0;

            var setting = new Setting()
            {
                Name = "test",
                Kind = kind,
                HandlerDescription = new SystemSettingHandlerDescription("thesetting", valueKind)
            };
            var handler = new SystemSettingHandler(setting, mockFactory, serviceProvider, logger);

            MockSystemSetting.nextGetResponder = () =>
            {
                return(value);
            };

            var result = await handler.Capture();

            Assert.Equal(1, createCount);
            Assert.Equal(1, getCount);
            Assert.Equal(0, setCount);
            Assert.False(result.Success);
            Assert.Null(result.Value);
        }
コード例 #6
0
 /// <summary>
 /// Create a new ini file handler
 /// </summary>
 /// <param name="settingId"></param>
 public SystemSettingHandlerDescription(string settingId, SystemValueKind valueKind) : base(HandlerKind.System)
 {
     SettingId = settingId;
     ValueKind = valueKind;
 }