public SequenceFormatter(string delimiter, CallSpecAndTarget[] querySpec, ICall[] matchingCallsInOrder) { _delimiter = delimiter; var instances = new InstanceTracker(); _query = querySpec .Select(x => new CallData(instances.InstanceNumber(x.Target), x)).ToArray(); _actualCalls = matchingCallsInOrder .Select(x => new CallData(instances.InstanceNumber(x.Target()), x)).ToArray(); _hasMultipleInstances = instances.NumberOfInstances() > 1; _requiresInstanceNumbers = HasMultipleCallsOnSameType(); }
private string GetExceptionMessage(CallSpecAndTarget[] querySpec, ICall[] matchingCallsInOrder) { const string callDelimiter = "\n "; var instanceLookup = new TypeInstanceNumberLookup(); var isAcrossMultipleTargets = IsAcrossMultipleTargets(querySpec); var formattedQuery = string.Join(callDelimiter, querySpec.Select(x => FormatCallSpec(x, isAcrossMultipleTargets, instanceLookup)).ToArray()); var formattedCalls = string.Join(callDelimiter, matchingCallsInOrder.Select(x => FormatCall(x, isAcrossMultipleTargets, instanceLookup)).ToArray()); return string.Format("\nExpected to receive these calls in order:{0}{1}\n" + "Actually received matching calls in this order:{0}{2}\n\n{3}", callDelimiter, formattedQuery, formattedCalls, "*** Note: calls to property getters are not considered part of the query. ***"); }