public static IOrderedEnumerable<ITestSuite> SearchForSuites(ISearchCmdletBaseDataObject cmdlet)
{
IOrderedEnumerable<ITestSuite> suites = null;
// 20141107
// 20150925
// var testStatistics = new TestStatistics();
var testStatistics = ProxyFactory.Get<TestStatistics>();
// Filtering results
// default result
Func<ITestSuite, bool> query = suite => true;
// System.Collections.Generic.List<Func<TestSuite, bool>> queriesList =
// new List<Func<TestSuite, bool>>();
// queriesList.Add(query);
if (!string.IsNullOrEmpty(cmdlet.FilterNameContains)) {
// if (cmdlet.FilterNameContains != null && cmdlet.FilterNameContains.Length > 0) {
query = suite => suite.Name.Contains(cmdlet.FilterNameContains);
//queriesList.Add((suite => suite.Name.Contains(cmdlet.FilterNameContains)));
cmdlet.FilterAll = false;
} else if (!string.IsNullOrEmpty(cmdlet.FilterIdContains)) {
// } else if (cmdlet.FilterIdContains != null && cmdlet.FilterIdContains.Length > 0) {
query = suite => suite.Id.Contains(cmdlet.FilterIdContains);
//queriesList.Add((suite => suite.Id.Contains(cmdlet.FilterIdContains)));
cmdlet.FilterAll = false;
} else if (!string.IsNullOrEmpty(cmdlet.FilterDescriptionContains)) {
// } else if (cmdlet.FilterDescriptionContains != null && cmdlet.FilterDescriptionContains.Length > 0) {
query = suite => suite.Description != null && suite.Description.Contains(cmdlet.FilterDescriptionContains);
//query = suite =>
//{
// return suite.Description != null && suite.Description.Contains(cmdlet.FilterDescriptionContains);
// /*
// if (suite.Description != null) {
// return suite.Description.Contains(cmdlet.FilterDescriptionContains);
// }
// return false;
// */
//};
// queriesList.Add((suite =>
// {
// if (suite.Description != null) {
// return suite.Description.Contains(cmdlet.FilterDescriptionContains);
// }
// return false;
// }));
cmdlet.FilterAll = false;
} else if (cmdlet.FilterPassed) {
query = suite => suite.enStatus == TestStatuses.Passed;
//queriesList.Add((suite => suite.enStatus == TestSuiteStatuses.Passed));
cmdlet.FilterAll = false;
} else if (cmdlet.FilterFailed) {
query = suite => suite.enStatus == TestStatuses.Failed;
//queriesList.Add((suite => suite.enStatus == TestSuiteStatuses.Failed));
cmdlet.FilterAll = false;
} else if (cmdlet.FilterNotTested) {
query = suite => suite.enStatus == TestStatuses.NotRun;
//queriesList.Add((suite => suite.enStatus == TestSuiteStatuses.NotTested));
cmdlet.FilterAll = false;
} else if (cmdlet.FilterPassedWithBadSmell) {
query = suite => suite.enStatus == TestStatuses.KnownIssue;
//queriesList.Add((suite => suite.enStatus == TestSuiteStatuses.KnownIssue));
cmdlet.FilterAll = false;
}
if (cmdlet.FilterAll) {
query = suite => true;
}
if (cmdlet.FilterNone) {
query = suite => false;
//queriesList.Clear();
//queriesList.Add(query);
}
// Ordering results
// default result
// 20140720
// Func<TestSuite, object> ordering = suite => suite.Id;
Func<ITestSuite, object> ordering = suite => suite.Id;
if (cmdlet.OrderByTimeSpent) {
ordering += suite => suite.Statistics.TimeSpent;
}
if (cmdlet.OrderByName) {
ordering += suite => suite.Name;
}
if (cmdlet.OrderById) {
ordering += suite => suite.Id;
}
if (cmdlet.OrderByPassRate) {
ordering += suite => {
//TestData.RefreshSuiteStatistics(suite);
// 20141107
// TestData.RefreshSuiteStatistics(suite, cmdlet.FilterOutAutomaticResults);
testStatistics.RefreshSuiteStatistics(suite, cmdlet.FilterOutAutomaticResults);
return (suite.Statistics.Passed / suite.Statistics.All);
};
}
if (cmdlet.OrderByFailRate) {
ordering += suite => {
//TestData.RefreshSuiteStatistics(suite);
// 20141107
// TestData.RefreshSuiteStatistics(suite, cmdlet.FilterOutAutomaticResults);
testStatistics.RefreshSuiteStatistics(suite, cmdlet.FilterOutAutomaticResults);
return (suite.Statistics.Failed / suite.Statistics.All);
};
}
// cmdlet.WriteVerbose(cmdlet, "query = " + query);
// cmdlet.WriteVerbose(cmdlet, "ordering = " + ordering);
suites =
TestData.SearchTestSuite(
query,
//Combine<TestSuite, bool>((x, y) => x && y, queriesList.ToArray()),
ordering,
cmdlet.Descending);
return suites;
}