private bool ExecuteChain(Scenario scenario, ScenarioContext storyContext, InvocationChain chain, string line) { string successPart = ""; _lastResult = null; foreach (var invocation in chain.Invocations) { try { InvokeContextMember(storyContext, invocation); successPart += invocation.MatchedText + " "; } catch (TargetInvocationException ex) { if (ex.InnerException is ScenarioPendingException) { _listener.ScenarioPending(new ScenarioPendingInfo(scenario, line)); } else { _listener.ScenarioFailed(new ScenarioFailureInfo(scenario, successPart.Trim(), invocation.MatchedText, GetExceptionMessage(ex))); } return false; } } return true; }
private void Notify(InvocationChain chain) { foreach (var invocation in chain.Invocations) { StorEvilEvents.Bus.Raise(new MatchingMemberFound { Member = invocation.MemberInfo }); } }
private IEnumerable <InvocationChain> GetChainsFromPartialMatch(PartialMatch partialMatch, string line) { var partialChain = new InvocationChain(BuildInvocation(partialMatch.MemberInfo, partialMatch)); var matchedText = partialChain.Invocations.Last().MatchedText; var remainingLine = line.Substring(matchedText.Length).Trim(); return(TryToRecursivelyExtendPartialMatch(partialChain, remainingLine, partialMatch)); }
private IEnumerable <InvocationChain> TryToRecursivelyExtendPartialMatch(InvocationChain chain, string remainingLine, PartialMatch partial) { if (partial.TerminatingType == null) { yield break; } var chainedMapper = _factory.GetInterpreterForType(partial.TerminatingType); foreach (var childChain in chainedMapper.GetChains(remainingLine)) { var union = chain.Invocations.Union(childChain.Invocations); yield return(new InvocationChain(union.ToArray())); } }
private bool ExecuteChain(Scenario scenario, ScenarioContext storyContext, InvocationChain chain, string line) { string successPart = ""; _lastResult = null; foreach (var invocation in chain.Invocations) { try { InvokeContextMember(storyContext, invocation); successPart += invocation.MatchedText + " "; } catch (TargetInvocationException ex) { if (ex.InnerException is ScenarioPendingException) { _eventBus.Raise(new LinePending { Scenario = scenario, Line = line }); } else { _eventBus.Raise(new LineFailed { Scenario = scenario, Line = line, SuccessPart = successPart.Trim(), FailedPart = invocation.MatchedText, ExceptionInfo = GetExceptionMessage(ex) }); } return false; } } return true; }
private void Notify(InvocationChain chain) { foreach (var invocation in chain.Invocations) { StorEvilEvents.Bus.Raise(new MatchingMemberFound {Member = invocation.MemberInfo}); } }
private static string ConvertInvocationChainToCSharpCode(InvocationChain matchingChain) { Func<string, Invocation, string> aggregator = (codeSoFar, invocation) => codeSoFar + BuildInvocation(invocation.MemberInfo, invocation.RawParamValues); return matchingChain.Invocations .Aggregate("", aggregator); }
private IEnumerable<string> GetNamespaces(InvocationChain matchingChain) { return matchingChain.Invocations.Select(x => x.MemberInfo.DeclaringType.Namespace).Distinct(); }
private IEnumerable<InvocationChain> TryToRecursivelyExtendPartialMatch(InvocationChain chain, string remainingLine, PartialMatch partial) { if (partial.TerminatingType == null) yield break; var chainedMapper = _factory.GetInterpreterForType(partial.TerminatingType); foreach (var childChain in chainedMapper.GetChains(remainingLine)) { var union = chain.Invocations.Union(childChain.Invocations); yield return new InvocationChain(union.ToArray()); } }
private IEnumerable<InvocationChain> GetChainsFromPartialMatch(PartialMatch partialMatch, string line) { var partialChain = new InvocationChain(BuildInvocation(partialMatch.MemberInfo, partialMatch)); var matchedText = partialChain.Invocations.Last().MatchedText; var remainingLine = line.Substring(matchedText.Length).Trim(); return TryToRecursivelyExtendPartialMatch(partialChain, remainingLine, partialMatch); }
private int GetPosition(InvocationChain invocationChain) { var declaringType = invocationChain.Invocations.First().MemberInfo.DeclaringType; return(_mruTypes.IndexOf(declaringType)); }
private static string GetInvocationDescription(InvocationChain chain) { var members = chain.Invocations.Select(x => x.MemberInfo.DeclaringType.Name + "." + x.MemberInfo.Name); return(string.Join(", ", members.ToArray())); }
private InvocationChain TryToRecursivelyExtendPartialMatch(InvocationChain chain, string remainingLine, PartialMatch partial) { var chainedMapper = _factory.GetInterpreterForType(partial.TerminatingType); var childChain = chainedMapper.GetChain(remainingLine); if (childChain == null) return null; var union = chain.Invocations.Union(childChain.Invocations); return new InvocationChain(union.ToArray()); }