MockUnexpectedOutputParameterFailure::MockUnexpectedOutputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations) : MockFailure(test) { MockExpectedCallsList expectationsForFunctionWithParameterName; expectationsForFunctionWithParameterName.addExpectationsRelatedTo(functionName, expectations); expectationsForFunctionWithParameterName.onlyKeepExpectationsWithOutputParameterName(parameter.getName()); if (expectationsForFunctionWithParameterName.isEmpty()) { message_ = "Mock Failure: Unexpected output parameter name to function \""; message_ += functionName; message_ += "\": "; message_ += parameter.getName(); } else { message_ = "Mock Failure: Unexpected parameter type \""; message_ += parameter.getType(); message_ += "\" to output parameter \""; message_ += parameter.getName(); message_ += "\" to function \""; message_ += functionName; message_ += "\""; } message_ += "\n"; addExpectationsAndCallHistoryRelatedTo(functionName, expectations); message_ += "\n\tACTUAL unexpected output parameter passed to function: "; message_ += functionName; message_ += "\n"; message_ += "\t\t"; message_ += parameter.getType(); message_ += " "; message_ += parameter.getName(); }
void MockActualFunctionCall::checkActualParameter(const MockNamedValue& actualParameter) { unfulfilledExpectations_.onlyKeepUnfulfilledExpectationsWithParameter(actualParameter); if (unfulfilledExpectations_.isEmpty()) { MockUnexpectedParameterFailure failure(getTest(), getName(), actualParameter, allExpectations_); failTest(failure); return; } unfulfilledExpectations_.parameterWasPassed(actualParameter.getName()); finnalizeCallWhenFulfilled(); }
void MockCheckedActualCall::checkOutputParameter(const MockNamedValue& outputParameter) { unfulfilledExpectations_.onlyKeepUnfulfilledExpectationsWithOutputParameter(outputParameter); if (unfulfilledExpectations_.isEmpty()) { MockUnexpectedOutputParameterFailure failure(getTest(), getName(), outputParameter, allExpectations_); failTest(failure); return; } unfulfilledExpectations_.outputParameterWasPassed(outputParameter.getName()); finalizeCallWhenFulfilled(); }
void MockCheckedActualCall::checkInputParameter(const MockNamedValue& actualParameter) { if(hasFailed()) { return; } callIsInProgress(); unfulfilledExpectations_.onlyKeepExpectationsWithInputParameter(actualParameter); if (unfulfilledExpectations_.isEmpty()) { MockUnexpectedInputParameterFailure failure(getTest(), getName(), actualParameter, allExpectations_); failTest(failure); return; } unfulfilledExpectations_.parameterWasPassed(actualParameter.getName()); finalizeCallWhenFulfilled(); }
void MockCheckedActualCall::finalizeOutputParameters(MockCheckedExpectedCall* expectedCall) { for (MockOutputParametersListNode* p = outputParameterExpectations_; p; p = p->next_) { MockNamedValue outputParameter = expectedCall->getOutputParameter(p->name_); MockNamedValueCopier* copier = outputParameter.getCopier(); if (copier) { copier->copy(p->ptr_, outputParameter.getObjectPointer()); } else if ((outputParameter.getType() == "const void*") && (p->type_ == "void*")) { const void* data = outputParameter.getConstPointerValue(); size_t size = outputParameter.getSize(); PlatformSpecificMemCpy(p->ptr_, data, size); } else if (outputParameter.getName() != "") { SimpleString type = expectedCall->getOutputParameter(p->name_).getType(); MockNoWayToCopyCustomTypeFailure failure(getTest(), type); failTest(failure); } } }
bool MockExpectedFunctionCall::hasParameter(const MockNamedValue& parameter) { MockNamedValue * p = parameters_->getValueByName(parameter.getName()); return (p) ? p->equals(parameter) : ignoreOtherParameters_; }
bool MockCheckedExpectedCall::hasOutputParameter(const MockNamedValue& parameter) { MockNamedValue * p = outputParameters_->getValueByName(parameter.getName()); return (p) ? p->compatibleForCopying(parameter) : ignoreOtherParameters_; }
bool MockCheckedExpectedCall::hasInputParameter(const MockNamedValue& parameter) { MockNamedValue * p = inputParameters_->getValueByName(parameter.getName()); return (p) ? p->equals(parameter) : ignoreOtherParameters_; }