Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

CppUMock inputParameterForwarding #785

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: master
Choose a base branch
Loading
from
2 changes: 2 additions & 0 deletions 2 include/CppUTestExt/MockActualCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ class MockActualCall
virtual MockActualCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)=0;
virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output)=0;
virtual MockActualCall& withOutputParameterOfType(const SimpleString& typeName, const SimpleString& name, void* output)=0;
virtual MockActualCall& withInputParameter(const SimpleString& name, const void* output)=0;
virtual MockActualCall& withInputParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* output)=0;

virtual MockActualCall& withBoolParameter(const SimpleString& name, bool value)=0;
virtual MockActualCall& withIntParameter(const SimpleString& name, int value)=0;
Expand Down
13 changes: 12 additions & 1 deletion 13 include/CppUTestExt/MockCheckedActualCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ class MockCheckedActualCall : public MockActualCall
virtual MockActualCall& withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) _override;
virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override;
virtual MockActualCall& withOutputParameterOfType(const SimpleString& type, const SimpleString& name, void* output) _override;
virtual MockActualCall& withInputParameter(const SimpleString& name, const void* output) _override;
virtual MockActualCall& withInputParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* output) _override;

virtual bool hasReturnValue() _override;
virtual MockNamedValue returnValue() _override;
Expand Down Expand Up @@ -132,15 +134,20 @@ class MockCheckedActualCall : public MockActualCall
SimpleString name_;
SimpleString type_;
void* ptr_;
const void* constPtr_;

MockOutputParametersListNode* next_;
MockOutputParametersListNode(const SimpleString& name, const SimpleString& type, void* ptr)
: name_(name), type_(type), ptr_(ptr), next_(NULLPTR) {}
: name_(name), type_(type), ptr_(ptr), constPtr_(NULLPTR), next_(NULLPTR) {}
MockOutputParametersListNode(const SimpleString& name, const SimpleString& type, const void* constPtr)
: name_(name), type_(type), ptr_(NULLPTR), constPtr_(constPtr), next_(NULLPTR) {}
};

MockOutputParametersListNode* outputParameterExpectations_;

virtual void addOutputParameter(const SimpleString& name, const SimpleString& type, void* ptr);
virtual void addOutputParameter(const SimpleString& name, const SimpleString& type, const void* constPtr);
virtual void addOutputParameterNode(MockOutputParametersListNode *newNode);
virtual void cleanUpOutputParameterList();
};

Expand All @@ -166,6 +173,8 @@ class MockActualCallTrace : public MockActualCall
virtual MockActualCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override;
virtual MockActualCall& withOutputParameterOfType(const SimpleString& typeName, const SimpleString& name, void* output) _override;
virtual MockActualCall& withInputParameter(const SimpleString& name, const void* output) _override;
virtual MockActualCall& withInputParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* output) _override;

virtual bool hasReturnValue() _override;
virtual MockNamedValue returnValue() _override;
Expand Down Expand Up @@ -231,6 +240,8 @@ class MockIgnoredActualCall: public MockActualCall
virtual MockActualCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; }
virtual MockActualCall& withOutputParameter(const SimpleString&, void*) _override { return *this; }
virtual MockActualCall& withOutputParameterOfType(const SimpleString&, const SimpleString&, void*) _override { return *this; }
virtual MockActualCall& withInputParameter(const SimpleString&, const void*) _override { return *this; }
virtual MockActualCall& withInputParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; }

virtual bool hasReturnValue() _override { return false; }
virtual MockNamedValue returnValue() _override { return MockNamedValue(""); }
Expand Down
4 changes: 4 additions & 0 deletions 4 include/CppUTestExt/MockCheckedExpectedCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ class MockCheckedExpectedCall : public MockExpectedCall
virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) _override;
virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
virtual MockExpectedCall& withInputParameterForwarding(const SimpleString& name, void* value, size_t size) _override;
virtual MockExpectedCall& withInputParameterOfTypeForwarding(const SimpleString& typeName, const SimpleString& name, void* value) _override;
virtual MockExpectedCall& ignoreOtherParameters() _override;

virtual MockExpectedCall& andReturnValue(bool value) _override;
Expand Down Expand Up @@ -162,6 +164,8 @@ class MockIgnoredExpectedCall: public MockExpectedCall
virtual MockExpectedCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; }
virtual MockExpectedCall& withOutputParameterReturning(const SimpleString&, const void*, size_t) _override { return *this; }
virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString&, const SimpleString&, const void*) _override { return *this; }
virtual MockExpectedCall& withInputParameterForwarding(const SimpleString&, void*, size_t) _override { return *this; }
virtual MockExpectedCall& withInputParameterOfTypeForwarding(const SimpleString&, const SimpleString&, void*) _override { return *this; }
virtual MockExpectedCall& ignoreOtherParameters() _override { return *this;}

virtual MockExpectedCall& andReturnValue(bool) _override { return *this; }
Expand Down
2 changes: 2 additions & 0 deletions 2 include/CppUTestExt/MockExpectedCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ class MockExpectedCall
virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)=0;
virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size)=0;
virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString& typeName, const SimpleString& name, const void* value)=0;
virtual MockExpectedCall& withInputParameterForwarding(const SimpleString& name, void* value, size_t size)=0;
virtual MockExpectedCall& withInputParameterOfTypeForwarding(const SimpleString& typeName, const SimpleString& name, void* value)=0;
virtual MockExpectedCall& ignoreOtherParameters()=0;

virtual MockExpectedCall& withBoolParameter(const SimpleString& name, bool value)=0;
Expand Down
4 changes: 4 additions & 0 deletions 4 include/CppUTestExt/MockSupport_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ struct SMockActualCall_c
MockActualCall_c* (*withParameterOfType)(const char* type, const char* name, const void* value);
MockActualCall_c* (*withOutputParameter)(const char* name, void* value);
MockActualCall_c* (*withOutputParameterOfType)(const char* type, const char* name, void* value);
MockActualCall_c* (*withInputParameter)(const char* name, const void* value);
MockActualCall_c* (*withInputParameterOfType)(const char* type, const char* name, const void* value);
int (*hasReturnValue)(void);
MockValue_c (*returnValue)(void);
int (*boolReturnValue)(void);
Expand Down Expand Up @@ -127,6 +129,8 @@ struct SMockExpectedCall_c
MockExpectedCall_c* (*withParameterOfType)(const char* type, const char* name, const void* value);
MockExpectedCall_c* (*withOutputParameterReturning)(const char* name, const void* value, size_t size);
MockExpectedCall_c* (*withOutputParameterOfTypeReturning)(const char* type, const char* name, const void* value);
MockExpectedCall_c* (*withInputParameterForwarding)(const char* name, void* value, size_t size);
MockExpectedCall_c* (*withInputParameterOfTypeForwarding)(const char* type, const char* name, void* value);
MockExpectedCall_c* (*ignoreOtherParameters)(void);

MockExpectedCall_c* (*andReturnBoolValue)(int value);
Expand Down
65 changes: 63 additions & 2 deletions 65 src/CppUTestExt/MockActualCall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,29 @@ void MockCheckedActualCall::copyOutputParameters(MockCheckedExpectedCall* expect
MockNamedValueCopier* copier = outputParameter.getCopier();
if (copier)
{
copier->copy(p->ptr_, outputParameter.getConstObjectPointer());
if (p->ptr_ != NULLPTR)
{
// Test to code direction
copier->copy(p->ptr_, outputParameter.getConstObjectPointer());
}
else if (p->constPtr_ != NULLPTR)
{
// Code to test direction
copier->copy(outputParameter.getObjectPointer(), p->constPtr_);
}
}
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.getType() == "void*") && (p->type_ == "const void*"))
{
void* data = outputParameter.getPointerValue();
size_t size = outputParameter.getSize();
PlatformSpecificMemCpy(data, p->constPtr_, size);
}
else if (outputParameter.getName() != "")
{
SimpleString type = expectedCall->getOutputParameter(p->name_).getType();
Expand Down Expand Up @@ -325,6 +340,28 @@ MockActualCall& MockCheckedActualCall::withOutputParameterOfType(const SimpleStr
return *this;
}

MockActualCall& MockCheckedActualCall::withInputParameter(const SimpleString& name, const void* output)
{
addOutputParameter(name, "const void*", output);

MockNamedValue outputParameter(name);
outputParameter.setValue(output);
checkOutputParameter(outputParameter);

return *this;
}

MockActualCall& MockCheckedActualCall::withInputParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* output)
{
addOutputParameter(name, typeName, output);

MockNamedValue outputParameter(name);
outputParameter.setConstObjectPointer(typeName, output);
checkOutputParameter(outputParameter);

return *this;
}

bool MockCheckedActualCall::isFulfilled() const
{
return state_ == CALL_SUCCEED;
Expand Down Expand Up @@ -549,8 +586,16 @@ MockActualCall& MockCheckedActualCall::onObject(const void* objectPtr)

void MockCheckedActualCall::addOutputParameter(const SimpleString& name, const SimpleString& type, void* ptr)
{
MockOutputParametersListNode* newNode = new MockOutputParametersListNode(name, type, ptr);
addOutputParameterNode(new MockOutputParametersListNode(name, type, ptr));
}

void MockCheckedActualCall::addOutputParameter(const SimpleString& name, const SimpleString& type, const void* constPtr)
{
addOutputParameterNode(new MockOutputParametersListNode(name, type, constPtr));
}

void MockCheckedActualCall::addOutputParameterNode(MockOutputParametersListNode *newNode)
{
if (outputParameterExpectations_ == NULLPTR)
outputParameterExpectations_ = newNode;
else {
Expand Down Expand Up @@ -704,6 +749,22 @@ MockActualCall& MockActualCallTrace::withOutputParameterOfType(const SimpleStrin
return *this;
}

MockActualCall& MockActualCallTrace::withInputParameter(const SimpleString& name, const void* output)
{
addParameterName(name);
traceBuffer_ += StringFrom(output);
return *this;
}

MockActualCall& MockActualCallTrace::withInputParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* output)
{
traceBuffer_ += " ";
traceBuffer_ += typeName;
addParameterName(name);
traceBuffer_ += StringFrom(output);
return *this;
}

bool MockActualCallTrace::hasReturnValue()
{
return false;
Expand Down
17 changes: 17 additions & 0 deletions 17 src/CppUTestExt/MockExpectedCall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,23 @@ MockExpectedCall& MockCheckedExpectedCall::withOutputParameterOfTypeReturning(co
return *this;
}

MockExpectedCall& MockCheckedExpectedCall::withInputParameterForwarding(const SimpleString& name, void* value, size_t size)
{
MockNamedValue* newParameter = new MockExpectedFunctionParameter(name);
outputParameters_->add(newParameter);
newParameter->setValue(value);
newParameter->setSize(size);
return *this;
}

MockExpectedCall& MockCheckedExpectedCall::withInputParameterOfTypeForwarding(const SimpleString& typeName, const SimpleString& name, void* value)
{
MockNamedValue* newParameter = new MockExpectedFunctionParameter(name);
outputParameters_->add(newParameter);
newParameter->setObjectPointer(typeName, value);
return *this;
}

SimpleString MockCheckedExpectedCall::getInputParameterType(const SimpleString& name)
{
MockNamedValue * p = inputParameters_->getValueByName(name);
Expand Down
3 changes: 3 additions & 0 deletions 3 src/CppUTestExt/MockNamedValue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,9 @@ bool MockNamedValue::compatibleForCopying(const MockNamedValue& p) const
if ((type_ == "const void*") && (p.type_ == "void*"))
return true;

if ((type_ == "void*") && (p.type_ == "const void*"))
return true;

return false;
}

Expand Down
32 changes: 32 additions & 0 deletions 32 src/CppUTestExt/MockSupport_c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,8 @@ MockExpectedCall_c* withMemoryBufferParameters_c(const char* name, const unsigne
MockExpectedCall_c* withParameterOfType_c(const char* type, const char* name, const void* value);
MockExpectedCall_c* withOutputParameterReturning_c(const char* name, const void* value, size_t size);
MockExpectedCall_c* withOutputParameterOfTypeReturning_c(const char* type, const char* name, const void* value);
MockExpectedCall_c* withInputParameterForwarding_c(const char* name, void* value, size_t size);
MockExpectedCall_c* withInputParameterOfTypeForwarding_c(const char* type, const char* name, void* value);
MockExpectedCall_c* ignoreOtherParameters_c();
MockExpectedCall_c* andReturnBoolValue_c(int value);
MockExpectedCall_c* andReturnIntValue_c(int value);
Expand All @@ -183,6 +185,8 @@ MockActualCall_c* withActualMemoryBufferParameters_c(const char* name, const uns
MockActualCall_c* withActualParameterOfType_c(const char* type, const char* name, const void* value);
MockActualCall_c* withActualOutputParameter_c(const char* name, void* value);
MockActualCall_c* withActualOutputParameterOfType_c(const char* type, const char* name, void* value);
MockActualCall_c* withActualInputParameter_c(const char* name, const void* value);
MockActualCall_c* withActualInputParameterOfType_c(const char* type, const char* name, const void* value);
MockValue_c returnValue_c();
int boolReturnValue_c();
int returnBoolValueOrDefault_c(int defaultValue);
Expand Down Expand Up @@ -247,6 +251,8 @@ static MockExpectedCall_c gExpectedCall = {
withParameterOfType_c,
withOutputParameterReturning_c,
withOutputParameterOfTypeReturning_c,
withInputParameterForwarding_c,
withInputParameterOfTypeForwarding_c,
ignoreOtherParameters_c,
andReturnBoolValue_c,
andReturnUnsignedIntValue_c,
Expand Down Expand Up @@ -275,6 +281,8 @@ static MockActualCall_c gActualCall = {
withActualParameterOfType_c,
withActualOutputParameter_c,
withActualOutputParameterOfType_c,
withActualInputParameter_c,
withActualInputParameterOfType_c,
hasReturnValue_c,
returnValue_c,
boolReturnValue_c,
Expand Down Expand Up @@ -434,6 +442,18 @@ MockExpectedCall_c* withOutputParameterOfTypeReturning_c(const char* type, const
return &gExpectedCall;
}

MockExpectedCall_c* withInputParameterForwarding_c(const char* name, void* value, size_t size)
{
expectedCall = &expectedCall->withInputParameterForwarding(name, value, size);
return &gExpectedCall;
}

MockExpectedCall_c* withInputParameterOfTypeForwarding_c(const char* type, const char* name, void* value)
{
expectedCall = &expectedCall->withInputParameterOfTypeForwarding(type, name, value);
return &gExpectedCall;
}

MockExpectedCall_c* ignoreOtherParameters_c()
{
expectedCall = &expectedCall->ignoreOtherParameters();
Expand Down Expand Up @@ -666,6 +686,18 @@ MockActualCall_c* withActualOutputParameterOfType_c(const char* type, const char
return &gActualCall;
}

MockActualCall_c* withActualInputParameter_c(const char* name, const void* value)
{
actualCall = &actualCall->withInputParameter(name, value);
return &gActualCall;
}

MockActualCall_c* withActualInputParameterOfType_c(const char* type, const char* name, const void* value)
{
actualCall = &actualCall->withInputParameterOfType(type, name, value);
return &gActualCall;
}

MockValue_c returnValue_c()
{
return getMockValueCFromNamedValue(actualCall->returnValue());
Expand Down
2 changes: 2 additions & 0 deletions 2 tests/CppUTestExt/MockExpectedCallTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,8 @@ TEST(MockIgnoredExpectedCall, worksAsItShould)
ignored.withParameterOfType( "mytype", "top", (const void*) NULLPTR);
ignored.withOutputParameterReturning("bar", (void*) NULLPTR, 1);
ignored.withOutputParameterOfTypeReturning("mytype", "bar", (const void*) NULLPTR);
ignored.withInputParameterForwarding("fos", (void*) NULLPTR, 1);
ignored.withInputParameterOfTypeForwarding("haz", "cso", (void*) NULLPTR);
ignored.ignoreOtherParameters();
ignored.andReturnValue(true);
ignored.andReturnValue((double) 1.0f);
Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.