Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace TestCentric.Gui.Presenters.Main
{
using Elements;
using Model;
using NUnit.Common;
using Views;

public class CommandTests : MainPresenterTestBase
Expand Down Expand Up @@ -83,7 +84,6 @@ public void OpenTestCentricProjectCommand_TestCentricProjectFileSelected_OpenExi
_model.Received().OpenExistingProject(file);
}

[Test]
[TestCase(null)]
[TestCase("")]
public void OpenTestCentricProjectCommand_NoFileSelected_DoesNotCreateProject(string fileName)
Expand Down Expand Up @@ -223,6 +223,24 @@ public void ReloadTestsCommand_CallsReloadTests()
_model.Received().ReloadTests();
}

[TestCase(true)]
[TestCase(false)]
public void RunAsX86CheckedChanged_SettingIsAppliedToProject(bool isChecked)
{
// 1. Arrange
List<string> testFiles = ["FILE1", "FILE2"];
var project = new TestCentricProject(_model, testFiles);
_model.TestCentricProject.Returns(project);
_view.RunAsX86.Checked.Returns(isChecked);

// 2. Act
_view.RunAsX86.CheckedChanged += Raise.Event<CommandHandler>();

// 3. Assert
Assert.That(project.Settings.HasSetting(SettingDefinitions.RunAsX86), Is.True);
Assert.That(project.Settings.GetValueOrDefault(SettingDefinitions.RunAsX86), Is.EqualTo(isChecked));
_model.ReceivedWithAnyArgs().LoadTests(null);
}
public void SelectRuntimeCommand_PopsUpMenu()
{
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,15 @@
// Licensed under the MIT License. See LICENSE file in root directory.
// ***********************************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NSubstitute;
using NUnit.Framework;
using TestCentric.Gui.Elements;
using TestCentric.Gui.Model;

namespace TestCentric.Gui.Presenters.Main
{
using NUnit.Common;

public class ProjectEventTests : MainPresenterTestBase
{
[Test]
Expand Down Expand Up @@ -54,6 +51,19 @@ public void WhenProjectIsSaved_TitleBarIsSet()
_view.Received().Title = "TestCentric - TestCentric.tcproj";
}

[TestCase(true)]
[TestCase(false)]
public void WhenProjectIsLoaded_RunAsX86Command_IsUpdatedFromProjectSetting(bool runAsX86)
{
var project = new TestCentricProject(_model, "dummy.dll");
project.SetTopLevelSetting(SettingDefinitions.RunAsX86.WithValue(runAsX86));
_model.TestCentricProject.Returns(project);

FireProjectLoadedEvent();

_view.RunAsX86.Received().Checked = runAsX86;
}

[Test]
public void WhenTestAssemblyChanged_ReloadTests()
{
Expand Down
39 changes: 21 additions & 18 deletions src/GuiRunner/TestCentric.Gui/Presenters/TestCentricPresenter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ private void WireUpEvents()
{
#region Model Events

_model.Events.TestCentricProjectLoaded += (TestEventArgs e) => UpdateTitlebar();
_model.Events.TestCentricProjectLoaded += (TestEventArgs e) => OnProjectLoaded();

_model.Events.TestCentricProjectUnloaded += (TestEventArgs e) => UpdateTitlebar();

Expand Down Expand Up @@ -353,14 +353,7 @@ void OnRunFinished(ResultNode result)
// _agentSelectionController.PopulateMenu();
//};

_view.RunAsX86.CheckedChanged += () =>
{
var key = SettingDefinitions.RunAsX86.Name;
if (_view.RunAsX86.Checked)
ChangePackageSettingAndReload(key, true);
else
ChangePackageSettingAndReload(key, null);
};
_view.RunAsX86.CheckedChanged += OnRunAsX86Changed;

_view.RecentFilesMenu.Popup += () =>
{
Expand Down Expand Up @@ -574,9 +567,7 @@ private void DisplayTestParametersDialog()
}

if (dlg.ShowDialog(_view as IWin32Window) == DialogResult.OK)
{
ChangePackageSettingAndReload("TestParametersDictionary", dlg.Parameters);
}
SetPackageSettingAndReload(SettingDefinitions.TestParametersDictionary.WithValue(dlg.Parameters));
}
}

Expand Down Expand Up @@ -636,6 +627,17 @@ private void UpdateTitlebar()
_view.Title = title;
}

private void OnProjectLoaded()
{
// Update checked state according to loaded project settings
// Unregister CheckedChanged event temporarily to avoid reloading (while loading a project)
_view.RunAsX86.CheckedChanged -= OnRunAsX86Changed;
_view.RunAsX86.Checked = _model.TestCentricProject.Settings.GetValueOrDefault(SettingDefinitions.RunAsX86);
_view.RunAsX86.CheckedChanged += OnRunAsX86Changed;

UpdateTitlebar();
}

#endregion

#region Close Methods
Expand Down Expand Up @@ -846,13 +848,14 @@ private static string Quoted(string s)
return "\"" + s + "\"";
}

private void ChangePackageSettingAndReload(string key, object setting)
private void OnRunAsX86Changed()
{
var settings = _model.TestCentricProject.Settings;
if (setting == null || setting as string == "DEFAULT")
settings.Remove(key);
else
settings.Set(key, setting);
SetPackageSettingAndReload(SettingDefinitions.RunAsX86.WithValue(_view.RunAsX86.Checked));
}

private void SetPackageSettingAndReload(PackageSetting setting)
{
_model.TestCentricProject.SetTopLevelSetting(setting);

// Even though the _model has a Reload method, we cannot use it because Reload
// does not re-create the Engine. Since we just changed a setting, we must
Expand Down
6 changes: 4 additions & 2 deletions src/GuiRunner/TestModel.Tests/TestCentricProjectTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -452,10 +452,12 @@ public void Load_SavedProject_SettingsAreRestored()
project.SaveAs("TestCentricTestProject.tcproj");

// 2. Act
project.Load("TestCentricTestProject.tcproj");
TestCentricProject newProject = new TestCentricProject(_model);
newProject.Load("TestCentricTestProject.tcproj");

// 3. Assert
var debugTests = project.Settings.GetSetting(SettingDefinitions.DebugTests.Name);
Assert.That(newProject.Settings.HasSetting(SettingDefinitions.DebugTests), Is.True);
var debugTests = newProject.Settings.GetSetting(SettingDefinitions.DebugTests.Name);
Assert.That(debugTests, Is.True);
}

Expand Down
4 changes: 4 additions & 0 deletions src/GuiRunner/TestModel/TestCentricProject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ public void Load(string path)
string fileContent = File.ReadAllText(ProjectPath);
TestPackage newPackage = PackageHelper.FromXml(fileContent);

// Apply top level settings from loaded package
foreach (PackageSetting packageSetting in newPackage.Settings)
Settings.Set(packageSetting);

foreach (var subPackage in newPackage.SubPackages)
AddSubPackage(subPackage.FullName);

Expand Down