Example #1
0
        public void TestEqualityOperatorSystem()
        {
            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", "thesetting" },
                { "value_type", "boolean" }
            });
            SystemSettingHandlerDescription system          = (SystemSettingHandlerDescription)JsonSerializer.Deserialize <SettingHandlerDescription>(json, options);
            SystemSettingHandlerDescription samesystem      = new SystemSettingHandlerDescription("thesetting", SystemSettings.SystemValueKind.Boolean);
            SystemSettingHandlerDescription differentsystem = new SystemSettingHandlerDescription("differentsetting", SystemSettings.SystemValueKind.Boolean);
            SystemSettingHandlerDescription wrongtype       = new SystemSettingHandlerDescription("differentsetting", SystemSettings.SystemValueKind.Integer);

            Assert.NotNull(system);
            Assert.NotNull(samesystem);
            Assert.NotNull(wrongtype);
            Assert.NotNull(differentsystem);
            Assert.Equal(system, samesystem);
            Assert.NotEqual(system, differentsystem);
            Assert.NotEqual(system, wrongtype);
        }
Example #2
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 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 TestApplyPass(SystemValueKind valueKind, object value, object sysValue)
        {
            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"
            };
            var setting = new Setting()
            {
                Name = "test",
                HandlerDescription = handlerDescription
            };
            var handler = new SystemSettingHandler(setting, mockFactory, serviceProvider, logger);

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

            var pass = await handler.Apply(value);

            Assert.Equal(1, createCount);
            Assert.Equal(0, getCount);
            Assert.Equal(1, setCount);
            Assert.True(pass);
        }