private static string FormatCallForInstance(TypeInstanceNumberLookup instanceLookup, object target, MethodInfo methodInfo, string s) { var instanceNumber = instanceLookup.GetInstanceNumberFor(target); var declaringType = methodInfo.DeclaringType; var declaringTypeName = declaringType == typeof (DelegateCall) ? target.ToString() : declaringType.Name; return string.Format("{0} #{1}.{2}", declaringTypeName, instanceNumber, s); }
private string FormatCall(ICall call, bool isAcrossMultipleTargets, TypeInstanceNumberLookup instanceLookup) { var s = _callFormatter.Format(call.GetMethodInfo(), FormatArgs(call.GetArguments())); if (!isAcrossMultipleTargets) return s; var target = call.Target(); var methodInfo = call.GetMethodInfo(); return FormatCallForInstance(instanceLookup, target, methodInfo, s); }
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. ***"); }
private string FormatCallSpec(CallSpecAndTarget callSpecAndTarget, bool isAcrossMultipleTargets, TypeInstanceNumberLookup instanceLookup) { var s = callSpecAndTarget.CallSpecification.ToString(); if (!isAcrossMultipleTargets) return s; var target = callSpecAndTarget.Target; var methodInfo = callSpecAndTarget.CallSpecification.GetMethodInfo(); return FormatCallForInstance(instanceLookup, target, methodInfo, s); }