public static IOrderedEnumerable<ITestScenario> SearchForScenarios(ISearchCmdletBaseDataObject cmdlet)
{
// 20140720
// IOrderedEnumerable<TestScenario> scenarios = null;
IOrderedEnumerable<ITestScenario> scenarios = null;
// Filtering results
// default result
// 20140720
// Func<TestScenario, bool> query = scenario => true;
Func<ITestScenario, bool> query = scenario => true;
if (!string.IsNullOrEmpty(cmdlet.FilterNameContains)) {
// if (cmdlet.FilterNameContains != null && cmdlet.FilterNameContains.Length > 0) {
query = scenario => scenario.Name.Contains(cmdlet.FilterNameContains);
cmdlet.FilterAll = false;
} else if (!string.IsNullOrEmpty(cmdlet.FilterIdContains)) {
// } else if (cmdlet.FilterIdContains != null && cmdlet.FilterIdContains.Length > 0) {
query = scenario => scenario.Id.Contains(cmdlet.FilterIdContains);
cmdlet.FilterAll = false;
} else if (!string.IsNullOrEmpty(cmdlet.FilterDescriptionContains)) {
// } else if (cmdlet.FilterDescriptionContains != null && cmdlet.FilterDescriptionContains.Length > 0) {
query = scenario => scenario.Description != null && scenario.Description.Contains(cmdlet.FilterDescriptionContains);
//query = scenario =>
//{
// return scenario.Description != null && scenario.Description.Contains(cmdlet.FilterDescriptionContains);
// /*
// if (scenario.Description != null) {
// return scenario.Description.Contains(cmdlet.FilterDescriptionContains);
// }
// return false;
// */
//};
cmdlet.FilterAll = false;
} else if (cmdlet.FilterPassed) {
query = scenario => scenario.enStatus == TestStatuses.Passed;
cmdlet.FilterAll = false;
} else if (cmdlet.FilterFailed) {
query = scenario => scenario.enStatus == TestStatuses.Failed;
cmdlet.FilterAll = false;
} else if (cmdlet.FilterNotTested) {
query = scenario => scenario.enStatus == TestStatuses.NotRun;
cmdlet.FilterAll = false;
} else if (cmdlet.FilterPassedWithBadSmell) {
query = scenario => scenario.enStatus == TestStatuses.KnownIssue;
cmdlet.FilterAll = false;
}
if (cmdlet.FilterAll) {
query = scenario => true;
}
if (cmdlet.FilterNone) {
query = scenario => false;
}
// Ordering results
// default result
// 20140720
// Func<TestScenario, object> ordering = scenario => scenario.Id;
Func<ITestScenario, object> ordering = scenario => scenario.Id;
if (cmdlet.OrderByTimeSpent) {
ordering = scenario => scenario.Statistics.TimeSpent;
} else if (cmdlet.OrderByName) {
ordering = scenario => scenario.Name;
} else if (cmdlet.OrderById) {
ordering = scenario => scenario.Id;
} else if (cmdlet.OrderByPassRate) {
ordering = scenario =>
scenario.Statistics.Passed /
(scenario.Statistics.Passed + scenario.Statistics.Failed +
scenario.Statistics.PassedButWithBadSmell + scenario.Statistics.NotTested);
} else if (cmdlet.OrderByFailRate) {
ordering = scenario =>
scenario.Statistics.Failed /
(scenario.Statistics.Passed + scenario.Statistics.Failed +
scenario.Statistics.PassedButWithBadSmell + scenario.Statistics.NotTested);
}
// cmdlet.WriteVerbose(cmdlet, "query = " + query);
// cmdlet.WriteVerbose(cmdlet, "ordering = " + ordering);
scenarios =
TestData.SearchTestScenario(
query,
ordering,
cmdlet.Descending);
return scenarios;
}