예제 #1
0
        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. ***");
 }