public string ToPlainText(Step step, string prefix) { return string.Format( "{0} {1} {2}", prefix, step.Title, GetResultLabel(step) ); }
internal static Step CreateStep(DateTime starttime, MethodBase method, params object[] args) { var methodName = method.Name; var step = new Step { Title = method.Name, Steps = new List<Step>(), StartTime = starttime }; var attr = method.GetCustomAttributes(true).OfType<StepDefinitionBaseAttribute>().FirstOrDefault(); if (attr != null) { // Handle regex style if (!String.IsNullOrEmpty(attr.Regex)) { step.Title = attr.Regex; for (var i = 0; i < args.Length; i++) { var arg = args[i]; var table = arg as Table; if (table != null) { step.Table = new TableParam { Columns = table.Header.ToList(), Rows = table.Rows.Select(x => x.Keys.ToDictionary( k => k, k => x[k] )).ToList() }; } else { var titleRegex = new Regex(step.Title); var match = titleRegex.Match(step.Title); if (match.Groups.Count > 1) { step.Title = step.Title.ReplaceFirst(match.Groups[1].Value, args[i].ToString()); } else { step.MultiLineParameter = args[i].ToString(); } } } } else { if (methodName.Contains('_')) { // underscore style step.Title = methodName.Replace("_", " "); step.Title = step.Title.Substring(step.Title.IndexOf(' ') + 1); var methodInfo = method as MethodInfo; for (var i = 0; i < args.Length; i++) { var arg = args[i]; var table = arg as Table; if (table != null) { step.Table = new TableParam { Columns = table.Header.ToList(), Rows = table.Rows.Select(x => x.Keys.ToDictionary( k => k, k => x[k] )).ToList() }; } else { var name = methodInfo.GetParamName(i).ToUpper(); var value = arg.ToString(); if (step.Title.Contains(name + " ")) { step.Title = step.Title.ReplaceFirst(name + " ", value + " "); } else { step.Title = step.Title.ReplaceFirst(" " + name, " " + value); } } } } else { // pascal naming style throw new NotSupportedException("Pascal naming style not supported yet"); } } } return step; }