Display traits in tree view with check boxes
This commit is contained in:
@@ -50,7 +50,7 @@ namespace xunit.runner.wpf.ViewModel
|
||||
this.WindowLoadedCommand = new RelayCommand(OnExecuteWindowLoaded);
|
||||
this.RunCommand = new RelayCommand(OnExecuteRun, CanExecuteRun);
|
||||
this.CancelCommand = new RelayCommand(OnExecuteCancel, CanExecuteCancel);
|
||||
this.TraitSelectionChangedCommand = new RelayCommand(OnExecuteTraitSelectionChanged);
|
||||
this.TraitCheckedChangedCommand = new RelayCommand<TraitViewModel>(OnExecuteTraitCheckedChanged);
|
||||
this.TraitsClearCommand = new RelayCommand(OnExecuteTraitsClear);
|
||||
this.AssemblyReloadCommand = new RelayCommand(OnExecuteAssemblyReload, CanExecuteAssemblyReload);
|
||||
this.AssemblyReloadAllCommand = new RelayCommand(OnExecuteAssemblyReloadAll);
|
||||
@@ -113,6 +113,7 @@ namespace xunit.runner.wpf.ViewModel
|
||||
public ICommand WindowLoadedCommand { get; }
|
||||
public RelayCommand RunCommand { get; }
|
||||
public RelayCommand CancelCommand { get; }
|
||||
public ICommand TraitCheckedChangedCommand { get; }
|
||||
public ICommand TraitSelectionChangedCommand { get; }
|
||||
public ICommand TraitsClearCommand { get; }
|
||||
public ICommand AssemblyReloadCommand { get; }
|
||||
@@ -354,7 +355,7 @@ namespace xunit.runner.wpf.ViewModel
|
||||
this.traitCollectionView.Collection.Clear();
|
||||
foreach (var testCase in this.allTestCases)
|
||||
{
|
||||
this.traitCollectionView.Add(testCase.Traits);
|
||||
this.traitCollectionView.AddRange(testCase.Traits);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,18 +477,18 @@ namespace xunit.runner.wpf.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTestDiscovered(List<TestCaseData> testCaseData)
|
||||
private void OnTestDiscovered(List<TestCaseData> testCaseDataList)
|
||||
{
|
||||
var allTraits = new SortedDictionary<string, SortedSet<string>>();
|
||||
foreach (var data in testCaseData)
|
||||
foreach (var data in testCaseDataList)
|
||||
{
|
||||
AddTraits(allTraits, data);
|
||||
}
|
||||
|
||||
this.allTestCases.AddRange(testCaseData.Select(d =>
|
||||
new TestCaseViewModel(d.DisplayName, d.AssemblyPath, Convert(CreateSortedTraits(d)).ToImmutableArray())));
|
||||
|
||||
this.traitCollectionView.Add(Convert(allTraits));
|
||||
this.allTestCases.AddRange(testCaseDataList.Select(d =>
|
||||
new TestCaseViewModel(d.DisplayName, d.AssemblyPath, Convert(CreateSortedTraits(d)))));
|
||||
|
||||
this.traitCollectionView.AddRange(Convert(allTraits));
|
||||
}
|
||||
|
||||
private SortedDictionary<string, SortedSet<string>> CreateSortedTraits(TestCaseData data)
|
||||
@@ -499,7 +500,16 @@ namespace xunit.runner.wpf.ViewModel
|
||||
|
||||
private static IEnumerable<TraitViewModel> Convert(SortedDictionary<string, SortedSet<string>> allTraits)
|
||||
{
|
||||
return allTraits.SelectMany(pair => pair.Value.Select(value => new TraitViewModel(pair.Key, value)));
|
||||
foreach (var trait in allTraits)
|
||||
{
|
||||
var name = trait.Key;
|
||||
var values = trait.Value;
|
||||
|
||||
var viewModel = new TraitViewModel(name);
|
||||
viewModel.AddValues(values);
|
||||
|
||||
yield return viewModel;
|
||||
}
|
||||
}
|
||||
|
||||
private static void AddTraits(SortedDictionary<string, SortedSet<string>> allTraits, TestCaseData data)
|
||||
@@ -562,11 +572,9 @@ namespace xunit.runner.wpf.ViewModel
|
||||
this.cancellationTokenSource.Cancel();
|
||||
}
|
||||
|
||||
private void OnExecuteTraitSelectionChanged()
|
||||
private void OnExecuteTraitCheckedChanged(TraitViewModel trait)
|
||||
{
|
||||
this.searchQuery.TraitSet = new HashSet<TraitViewModel>(
|
||||
this.traitCollectionView.Collection.Where(x => x.IsSelected),
|
||||
TraitViewModelComparer.Instance);
|
||||
this.searchQuery.TraitSet = this.traitCollectionView.GetCheckedTraits();
|
||||
FilterAfterDelay();
|
||||
}
|
||||
|
||||
@@ -574,7 +582,7 @@ namespace xunit.runner.wpf.ViewModel
|
||||
{
|
||||
foreach (var cur in this.traitCollectionView.Collection)
|
||||
{
|
||||
cur.IsSelected = false;
|
||||
cur.IsChecked = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user