Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions include/CppUTest/SimpleString.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ SimpleString StringFromFormat(const char* format, ...) __check_format__(printf,
SimpleString VStringFromFormat(const char* format, va_list args);
SimpleString StringFromBinary(const unsigned char* value, size_t size);
SimpleString StringFromBinaryOrNull(const unsigned char* value, size_t size);
SimpleString StringFromBinaryWithSize(const unsigned char* value, size_t size);
SimpleString StringFromBinaryWithSizeOrNull(const unsigned char* value, size_t size);
SimpleString StringFromMaskedBits(unsigned long value, unsigned long mask, size_t byteCount);

#if CPPUTEST_USE_STD_CPP_LIB
Expand Down
2 changes: 2 additions & 0 deletions include/CppUTestExt/MockActualCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ class MockActualCall
MockActualCall& withParameter(const SimpleString& name, const char* value) { return withStringParameter(name, value); }
MockActualCall& withParameter(const SimpleString& name, void* value) { return withPointerParameter(name, value); }
MockActualCall& withParameter(const SimpleString& name, const void* value) { return withConstPointerParameter(name, value); }
MockActualCall& withParameter(const SimpleString& name, const unsigned char* value, size_t size) { return withMemoryBufferParameter(name, value, size); }
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;
Expand All @@ -63,6 +64,7 @@ class MockActualCall
virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value)=0;
virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value)=0;
virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value)=0;
virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)=0;

virtual bool hasReturnValue()=0;
virtual MockNamedValue returnValue()=0;
Expand Down
3 changes: 3 additions & 0 deletions include/CppUTestExt/MockCheckedActualCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class MockCheckedActualCall : public MockActualCall
virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override;
virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override;
virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
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;
Expand Down Expand Up @@ -149,6 +150,7 @@ class MockActualCallTrace : public MockActualCall
virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override;
virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override;
virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
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;
Expand Down Expand Up @@ -205,6 +207,7 @@ class MockIgnoredActualCall: public MockActualCall
virtual MockActualCall& withStringParameter(const SimpleString&, const char*) _override { return *this; }
virtual MockActualCall& withPointerParameter(const SimpleString& , void*) _override { return *this; }
virtual MockActualCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; }
virtual MockActualCall& withMemoryBufferParameter(const SimpleString&, const unsigned char*, size_t) _override { return *this; }
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; }
Expand Down
3 changes: 3 additions & 0 deletions include/CppUTestExt/MockCheckedExpectedCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class MockCheckedExpectedCall : public MockExpectedCall
virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value) _override;
virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value) _override;
virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
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;
Expand Down Expand Up @@ -146,6 +147,7 @@ class MockExpectedCallComposite : public MockExpectedCall
virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value) _override;
virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value) _override;
virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
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;
Expand Down Expand Up @@ -182,6 +184,7 @@ class MockIgnoredExpectedCall: public MockExpectedCall
virtual MockExpectedCall& withStringParameter(const SimpleString&, const char*) _override { return *this; }
virtual MockExpectedCall& withPointerParameter(const SimpleString& , void*) _override { return *this; }
virtual MockExpectedCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; }
virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString&, const unsigned char*, size_t) _override { return *this; }
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; }
Expand Down
2 changes: 2 additions & 0 deletions include/CppUTestExt/MockExpectedCall.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class MockExpectedCall
MockExpectedCall& withParameter(const SimpleString& name, const char* value) { return withStringParameter(name, value); }
MockExpectedCall& withParameter(const SimpleString& name, void* value) { return withPointerParameter(name, value); }
MockExpectedCall& withParameter(const SimpleString& name, const void* value) { return withConstPointerParameter(name, value); }
MockExpectedCall& withParameter(const SimpleString& name, const unsigned char* value, size_t size) { return withMemoryBufferParameter(name, value, size); }
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;
Expand All @@ -61,6 +62,7 @@ class MockExpectedCall
virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value)=0;
virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value)=0;
virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value)=0;
virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)=0;
virtual MockExpectedCall& andReturnValue(int value)=0;
virtual MockExpectedCall& andReturnValue(unsigned int value)=0;
virtual MockExpectedCall& andReturnValue(long int value)=0;
Expand Down
3 changes: 3 additions & 0 deletions include/CppUTestExt/MockNamedValue.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ class MockNamedValue
virtual void setValue(void* value);
virtual void setValue(const void* value);
virtual void setValue(const char* value);
virtual void setMemoryBuffer(const unsigned char* value, size_t size);
virtual void setObjectPointer(const SimpleString& type, const void* objectPtr);
virtual void setSize(size_t size);

Expand All @@ -132,6 +133,7 @@ class MockNamedValue
virtual const char* getStringValue() const;
virtual void* getPointerValue() const;
virtual const void* getConstPointerValue() const;
virtual const unsigned char* getMemoryBuffer() const;
virtual const void* getObjectPointer() const;
virtual size_t getSize() const;

Expand All @@ -151,6 +153,7 @@ class MockNamedValue
const char* stringValue_;
void* pointerValue_;
const void* constPointerValue_;
const unsigned char* memoryBufferValue_;
const void* objectPointerValue_;
const void* outputPointerValue_;
} value_;
Expand Down
17 changes: 17 additions & 0 deletions src/CppUTest/SimpleString.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,23 @@ SimpleString StringFromBinaryOrNull(const unsigned char* value, size_t size)
return (value) ? StringFromBinary(value, size) : "(null)";
}

SimpleString StringFromBinaryWithSize(const unsigned char* value, size_t size)
{
SimpleString result = StringFromFormat("Size = %lu | HexContents = ", size);
size_t displayedSize = ((size > 128) ? 128 : size);
result += StringFromBinaryOrNull(value, size);
if (size > displayedSize)
{
result += " ...";
}
return result;
}

SimpleString StringFromBinaryWithSizeOrNull(const unsigned char* value, size_t size)
{
return (value) ? StringFromBinaryWithSize(value, size) : "(null)";
}

SimpleString StringFromMaskedBits(unsigned long value, unsigned long mask, size_t byteCount)
{
SimpleString result;
Expand Down
15 changes: 15 additions & 0 deletions src/CppUTestExt/MockActualCall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,14 @@ MockActualCall& MockCheckedActualCall::withConstPointerParameter(const SimpleStr
return *this;
}

MockActualCall& MockCheckedActualCall::withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)
{
MockNamedValue actualParameter(name);
actualParameter.setMemoryBuffer(value, size);
checkInputParameter(actualParameter);
return *this;
}

MockActualCall& MockCheckedActualCall::withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value)
{
MockNamedValue actualParameter(name);
Expand Down Expand Up @@ -555,6 +563,13 @@ MockActualCall& MockActualCallTrace::withConstPointerParameter(const SimpleStrin
return *this;
}

MockActualCall& MockActualCallTrace::withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)
{
addParameterName(name);
traceBuffer_ += StringFromBinaryWithSizeOrNull(value, size);
return *this;
}

MockActualCall& MockActualCallTrace::withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)
{
traceBuffer_ += " ";
Expand Down
15 changes: 15 additions & 0 deletions src/CppUTestExt/MockExpectedCall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,14 @@ MockExpectedCall& MockCheckedExpectedCall::withConstPointerParameter(const Simpl
return *this;
}

MockExpectedCall& MockCheckedExpectedCall::withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)
{
MockNamedValue* newParameter = new MockExpectedFunctionParameter(name);
inputParameters_->add(newParameter);
newParameter->setMemoryBuffer(value, size);
return *this;
}

MockExpectedCall& MockCheckedExpectedCall::withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value)
{
MockNamedValue* newParameter = new MockExpectedFunctionParameter(name);
Expand Down Expand Up @@ -565,6 +573,13 @@ MockExpectedCall& MockExpectedCallComposite::withConstPointerParameter(const Sim
return *this;
}

MockExpectedCall& MockExpectedCallComposite::withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)
{
for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_)
node->call_.withParameter(name, value, size);
return *this;
}

MockExpectedCall& MockExpectedCallComposite::withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)
{
for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_)
Expand Down
22 changes: 22 additions & 0 deletions src/CppUTestExt/MockNamedValue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,13 @@ void MockNamedValue::setValue(const char* value)
value_.stringValue_ = value;
}

void MockNamedValue::setMemoryBuffer(const unsigned char* value, size_t size)
{
type_ = "const unsigned char*";
value_.memoryBufferValue_ = value;
size_ = size;
}

void MockNamedValue::setObjectPointer(const SimpleString& type, const void* objectPtr)
{
type_ = type;
Expand Down Expand Up @@ -194,6 +201,12 @@ const void* MockNamedValue::getConstPointerValue() const
return value_.pointerValue_;
}

const unsigned char* MockNamedValue::getMemoryBuffer() const
{
STRCMP_EQUAL("const unsigned char*", type_.asCharString());
return value_.memoryBufferValue_;
}

const void* MockNamedValue::getObjectPointer() const
{
return value_.objectPointerValue_;
Expand Down Expand Up @@ -259,6 +272,13 @@ bool MockNamedValue::equals(const MockNamedValue& p) const
return value_.constPointerValue_ == p.value_.constPointerValue_;
else if (type_ == "double")
return (doubles_equal(value_.doubleValue_, p.value_.doubleValue_, 0.005));
else if (type_ == "const unsigned char*")
{
if (size_ != p.size_) {
return false;
}
return SimpleString::MemCmp(value_.memoryBufferValue_, p.value_.memoryBufferValue_, size_) == 0;
}

if (comparator_)
return comparator_->isEqual(value_.objectPointerValue_, p.value_.objectPointerValue_);
Expand Down Expand Up @@ -294,6 +314,8 @@ SimpleString MockNamedValue::toString() const
return StringFrom(value_.constPointerValue_);
else if (type_ == "double")
return StringFrom(value_.doubleValue_);
else if (type_ == "const unsigned char*")
return StringFromBinaryWithSizeOrNull(value_.memoryBufferValue_, size_);

if (comparator_)
return comparator_->valueToString(value_.objectPointerValue_);
Expand Down
3 changes: 3 additions & 0 deletions tests/CppUTestExt/MockActualCallTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ TEST(MockCheckedActualCall, remainderOfMockActualCallTraceWorksAsItShould)
{
int value;
const int const_value = 1;
const unsigned char mem_buffer[] = { 0xFE, 0x15 };
MockActualCallTrace actual;
actual.withName("func");
actual.withCallOrder(1);
Expand All @@ -157,6 +158,7 @@ TEST(MockCheckedActualCall, remainderOfMockActualCallTraceWorksAsItShould)
actual.withLongIntParameter("long_int", (long int) 1);
actual.withPointerParameter("pointer", &value);
actual.withConstPointerParameter("const_pointer", &const_value);
actual.withMemoryBufferParameter("mem_buffer", mem_buffer, sizeof(mem_buffer));
actual.withParameterOfType("int", "named_type", &const_value);

SimpleString expectedString("\nFunction name:func");
Expand All @@ -170,6 +172,7 @@ TEST(MockCheckedActualCall, remainderOfMockActualCallTraceWorksAsItShould)
expectedString += HexStringFrom(&value);
expectedString += " const_pointer:0x";
expectedString += HexStringFrom(&const_value);
expectedString += " mem_buffer:Size = 2 | HexContents = FE 15";
expectedString += " int named_type:0x";
expectedString += HexStringFrom(&const_value);
STRCMP_EQUAL(expectedString.asCharString(), actual.getTraceOutput());
Expand Down
17 changes: 17 additions & 0 deletions tests/CppUTestExt/MockExpectedCallTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,15 @@ TEST(MockExpectedCall, callWithConstPointerParameter)
POINTERS_EQUAL(ptr, call->getInputParameter("constPointer").getConstPointerValue());
}

TEST(MockExpectedCall, callWithMemoryBuffer)
{
const unsigned char mem_buffer[] = { 0x12, 0xFE, 0xA1 };
call->withParameter("memoryBuffer", mem_buffer, sizeof(mem_buffer));
STRCMP_EQUAL("const unsigned char*", call->getInputParameterType("memoryBuffer").asCharString());
POINTERS_EQUAL( (void*) mem_buffer, (void*) call->getInputParameter("memoryBuffer").getMemoryBuffer() );
LONGS_EQUAL(sizeof(mem_buffer), call->getInputParameter("memoryBuffer").getSize());
}

TEST(MockExpectedCall, callWithObjectParameter)
{
void* ptr = (void*) 0x123;
Expand Down Expand Up @@ -546,6 +555,13 @@ TEST(MockExpectedCallComposite, hasConstPointerParameter)
STRCMP_EQUAL("name -> const void* param: <0x0>", call.callToString().asCharString());
}

TEST(MockExpectedCallComposite, hasMemoryBufferParameter)
{
const unsigned char mem_buffer[] = { 0x89, 0xFE, 0x15 };
composite.withParameter("param", mem_buffer, sizeof(mem_buffer));
STRCMP_EQUAL("name -> const unsigned char* param: <Size = 3 | HexContents = 89 FE 15>", call.callToString().asCharString());
}

TEST(MockExpectedCallComposite, hasParameterOfType)
{
composite.withParameterOfType("type", "param", (const void*) 0);
Expand Down Expand Up @@ -656,6 +672,7 @@ TEST(MockIgnoredExpectedCall, worksAsItShould)
ignored.withStringParameter("goo", "hello");
ignored.withPointerParameter("pie", (void*) 0);
ignored.withConstPointerParameter("woo", (const void*) 0);
ignored.withMemoryBufferParameter("waa", (const unsigned char*) 0, 0);
ignored.withParameterOfType("top", "mytype", (const void*) 0);
ignored.withOutputParameterReturning("bar", (const void*) 0, 1);
ignored.ignoreOtherParameters();
Expand Down
Loading