示例#1
0
        public BochsHost(BochsHostSettings launchSettings)
        {
            _settings = launchSettings ?? throw new ArgumentNullException(nameof(launchSettings));

            _bochsDir = launchSettings.BochsDirectory;

            if (!Directory.Exists(_bochsDir) && RuntimeHelper.IsWindows)
            {
                _bochsDir = BochsSupport.BochsDirectory;
            }

            if (!Directory.Exists(_bochsDir))
            {
                throw new InvalidOperationException("Bochs installation directory not found!");
            }

            if (RuntimeHelper.IsWindows)
            {
                _bochsExe = Path.Combine(_bochsDir, launchSettings.UseDebugVersion ? "bochsdbg.exe" : "bochs.exe");
            }
            else
            {
                _bochsExe = Path.Combine(_bochsDir, launchSettings.UseDebugVersion ? "bochsdbg" : "bochs");
            }

            if (_settings.OverwriteConfigurationFile || !File.Exists(launchSettings.ConfigurationFile))
            {
                GenerateConfiguration();
            }
        }
        public void TestHostSettingsDeserialization()
        {
            var hostSettings      = JObject.Parse(HostSettings1).ToObject <Dictionary <string, string> >();
            var bochsHostSettings = new BochsHostSettings(hostSettings);

            Assert.That(bochsHostSettings.BochsDirectory, Is.EqualTo(@"some\path\to\bochs\"));
            Assert.That(bochsHostSettings.ConfigurationFile, Is.EqualTo(@"some\path\to\bochs.bxrc"));
            Assert.That(bochsHostSettings.DisplayLibraryOptions, Is.Not.Null);
            Assert.That(bochsHostSettings.DisplayLibraryOptions.GuiDebug, Is.True);
            Assert.That(bochsHostSettings.DisplayLibraryOptions.HideIps, Is.False);
        }
示例#3
0
        public Task <IHost> CreateHostAsync(IReadOnlyDictionary <string, string> settings, DebugMode debugMode)
        {
            var hostSettings = new BochsHostSettings(settings);

            return(Task.FromResult <IHost>(new BochsHost(hostSettings)));
        }