示例#1
0
        public static void AreConfigsValid()
        {
            var configMan = new FanControlConfigManager(GetConfigsDir());
            var validator = new FanControlConfigValidator();

            foreach (string name in configMan.ConfigNames)
            {
                var cfg = configMan.GetConfig(name);
                Assert.True(cfg != null, $"{name} config could not be loaded");

                var           result  = validator.Validate(cfg, false, false);
                StringBuilder message = null;

                if (!result.Success)
                {
                    message = new StringBuilder();
                    message.AppendFormat("{0} config is not valid:", name);
                    message.AppendLine();

                    foreach (var validation in result.Failed)
                    {
                        message.AppendFormat("- {0}", validation.RuleDescription);
                        message.AppendLine();
                        message.AppendFormat("--> {0}", validation.Reason);
                        message.AppendLine();
                        message.AppendLine();
                    }
                }

                Assert.True(result.Success, message?.ToString());
            }
        }
            public static void ReturnsEmptyListIfModelIsNull()
            {
                var cfgMan = new FanControlConfigManager(
                    Environment.CurrentDirectory, ".xml", new MockFileSystem());

                Assert.Empty(cfgMan.RecommendConfigs("HP ProBook 3334"));
            }
            public static void ReturnsOnlyValidSuggestions()
            {
                string[] notebooks = new[] { "HP ProBook 1234", "HP EliteBook 1234", "Acer Foo 7683" };
                var      cfgMan    = new FanControlConfigManager(
                    Environment.CurrentDirectory, ".xml", new MockFileSystem());

                int i = 0;

                foreach (string s in notebooks)
                {
                    var cfg = new FanControlConfigV2()
                    {
                        FanConfigurations = new List <FanConfiguration>()
                        {
                            new FanConfiguration()
                            {
                                WriteRegister = i,
                                ReadRegister  = i + 1
                            }
                        }
                    };

                    cfgMan.AddConfig(cfg, s);
                    i++;
                }

                List <string> recommendations = cfgMan.RecommendConfigs("HP ProBook 3334");

                Assert.Contains(notebooks[0], recommendations);
                Assert.Contains(notebooks[1], recommendations);
                Assert.DoesNotContain(notebooks[2], recommendations);
            }
示例#4
0
        public void SetConfig(string configUniqueId)
        {
            if (!this.disposed)
            {
                var cfgMan = new FanControlConfigManager(ConfigsDirectory);

                if (!cfgMan.Contains(configUniqueId))
                {
                    throw new ArgumentException("The specified config does not exist.");
                }
                else
                {
                    ServiceSettings.Default.SelectedConfigId = configUniqueId;
                    ServiceSettings.Save();

                    if (this.fanControl != null)
                    {
                        this.fanControl.Dispose();
                        this.fanControl = null;
                    }

                    Start();
                }
            }
        }
示例#5
0
        public RequestConfigNameViewModel(FanControlConfigManager configManager, string configNameDefault)
        {
            this.configManager = configManager;
            this.ConfigName    = configNameDefault;

            UpdateIsConfigNameUniqueProperty();
            UpdateIsConfigNameValidProperty();
        }
示例#6
0
        public RequestConfigNameViewModel(FanControlConfigManager configManager, string configNameDefault)
        {
            this.configManager = configManager;
            this.ConfigName = configNameDefault;

            UpdateIsConfigNameUniqueProperty();
            UpdateIsConfigNameValidProperty();
        }
示例#7
0
        public void HaveAllConfigsBeenLoaded()
        {
            string path          = GetConfigsDir();
            var    configMan     = new FanControlConfigManager(path);
            var    configsLookup = new HashSet <string>(
                Directory.GetFiles(path).Select(x => Path.GetFileNameWithoutExtension(x)));

            Assert.True(configsLookup.SetEquals(configMan.ConfigNames));
        }
示例#8
0
        public void AreConfigsValid()
        {
            var configMan = new FanControlConfigManager(GetConfigsDir());

            foreach (string name in configMan.ConfigNames)
            {
                Assert.True(configMan.GetConfig(name) != null, $"{name} is invalid");
            }
        }
示例#9
0
        private void InitializeConfigManager()
        {
            string path = Assembly.GetExecutingAssembly().Location;

            path = Path.GetDirectoryName(path);
            path = Path.Combine(path, ConfigsDirectoryName);
            this.configManager = new FanControlConfigManager(path);
            this.configManager.SelectConfig(this.ActualNotebookModel);
        }
示例#10
0
        public MainViewModel()
        {
            this.FanConfigs           = new ObservableCollection <FanConfigViewModel>();
            this.RegisterWriteConfigs = new ObservableCollection <RegisterWriteConfigViewModel>();
            this.configManager        = new FanControlConfigManager(GetConfigsDirectoryPath());
            this.configManager.SelectConfig(this.configManager.DeviceModelName);
            this.ActualNotebookModel = this.configManager.DeviceModelName;

            UpdateViewModel();
        }
            public static void ReturnsFalseClearsPropertiesIfNotExisting()
            {
                var cfgMan = new FanControlConfigManager(
                    Environment.CurrentDirectory, ".xml", new MockFileSystem());
                string cfgName = "foo";

                cfgMan.AddConfig(new FanControlConfigV2(), cfgName);
                cfgMan.SelectConfig(cfgName);

                Assert.False(cfgMan.SelectConfig("bar"));
                Assert.Null(cfgMan.SelectedConfig);
                Assert.Null(cfgMan.SelectedConfigName);
            }
            public static void ReturnsTrueAndSetsPropertiesIfExisting()
            {
                var cfgMan = new FanControlConfigManager(
                    Environment.CurrentDirectory, ".xml", new MockFileSystem());
                string cfgName = "foo";

                cfgMan.AddConfig(new FanControlConfigV2(), cfgName);

                Assert.True(cfgMan.SelectConfig(cfgName));
                Assert.NotNull(cfgMan.SelectedConfig);
                Assert.True(
                    cfgMan.SelectedConfigName == cfgName,
                    $"Config name should be {cfgName}, but is {cfgMan.SelectedConfigName}");
            }
示例#13
0
        public SelectConfigWindow()
        {
            InitializeComponent();

            parentDirName = Assembly.GetExecutingAssembly().Location;
            parentDirName = Path.GetDirectoryName(parentDirName);

            string path = Path.Combine(parentDirName, ConfigsDirectoryName);

            this.configManager = new FanControlConfigManager(path);
            this.configSelector.ItemsSource = configManager.ConfigNames;            

            if (!File.Exists(Path.Combine(parentDirName, ConfigEditorExecutableName)))
            {
                this.edit.Visibility = System.Windows.Visibility.Collapsed;
            }
        }
        public SelectConfigWindow()
        {
            InitializeComponent();

            parentDirName = Assembly.GetExecutingAssembly().Location;
            parentDirName = Path.GetDirectoryName(parentDirName);

            string path = Path.Combine(parentDirName, ConfigsDirectoryName);

            this.configManager = new FanControlConfigManager(path);
            this.configSelector.ItemsSource = configManager.ConfigNames;

            if (!File.Exists(Path.Combine(parentDirName, ConfigEditorExecutableName)))
            {
                this.edit.Visibility = System.Windows.Visibility.Collapsed;
            }
        }
示例#15
0
        private bool TryLoadConfig(string id, out FanControlConfigV2 config)
        {
            bool result        = false;
            var  configManager = new FanControlConfigManager(FanControlService.ConfigsDirectory);

            if (!string.IsNullOrWhiteSpace(id) && configManager.SelectConfig(id))
            {
                this.selectedConfig = configManager.SelectedConfigName;
                config = configManager.SelectedConfig;
                result = true;
            }
            else
            {
                config = null;
            }

            return(result);
        }
            public static void DoNotRecommendConfigsWithSameRwRegisters()
            {
                string[] notebooks = new[] { "HP ProBook 1234", "HP ProBook 1235" };
                var      cfgMan    = new FanControlConfigManager(
                    Environment.CurrentDirectory, ".xml", new MockFileSystem());

                foreach (string s in notebooks)
                {
                    var cfg = new FanControlConfigV2()
                    {
                        FanConfigurations = new List <FanConfiguration>()
                        {
                            new FanConfiguration()
                        }
                    };

                    cfgMan.AddConfig(cfg, s);
                }

                List <string> recommendations = cfgMan.RecommendConfigs("HP ProBook 1234");

                Assert.Contains(notebooks[0], recommendations);
                Assert.DoesNotContain(notebooks[1], recommendations);
            }
示例#17
0
        public string[] GetRecommendedConfigs()
        {
            var cfgMan = new FanControlConfigManager(ConfigsDirectory);

            return(cfgMan.RecommendConfigs().ToArray());
        }
示例#18
0
        public string[] GetConfigNames()
        {
            var cfgMan = new FanControlConfigManager(ConfigsDirectory);

            return(cfgMan.ConfigNames.ToArray());
        }
示例#19
0
        private bool TryLoadConfig(out FanControlConfigV2 config)
        {
            bool result = false;
            var configManager = new FanControlConfigManager(FanControlService.ConfigsDirectory);
            string id = ServiceSettings.Default.SelectedConfigId;

            if (!string.IsNullOrWhiteSpace(id) && configManager.SelectConfig(id))
            {
                this.selectedConfig = configManager.SelectedConfigName;
                config = configManager.SelectedConfig;
                result = true;
            }
            else
            {
                config = null;
            }

            return result;
        }
示例#20
0
        public void SetConfig(string configUniqueId)
        {
            if (!this.disposed)
            {
                var cfgMan = new FanControlConfigManager(ConfigsDirectory);

                if (!cfgMan.Contains(configUniqueId))
                {
                    throw new ArgumentException("The specified config does not exist.");
                }
                else
                {
                    ServiceSettings.Default.SelectedConfigId = configUniqueId;
                    ServiceSettings.Save();

                    if (this.fanControl != null)
                    {
                        this.fanControl.Dispose();
                        this.fanControl = null;
                    }

                    Start();
                }
            }
        }
示例#21
0
 private void InitializeConfigManager()
 {
     string path = Assembly.GetExecutingAssembly().Location;
     path = Path.GetDirectoryName(path);
     path = Path.Combine(path, ConfigsDirectoryName);
     this.configManager = new FanControlConfigManager(path);
     this.configManager.SelectConfig(this.ActualNotebookModel);
 }