TEST(MockCallTest, OnObjectFails) { MockFailureReporterInstaller failureReporterInstaller; void* objectPtr = (void*) 0x001; void* objectPtr2 = (void*) 0x002; MockExpectedCallsListForTest expectations; expectations.addFunction("boo")->onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo").onObject(objectPtr2); MockUnexpectedObjectFailure expectedFailure(mockFailureTest(), "boo", objectPtr2, expectations); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockParameterTest, outputParameterMissing) { MockFailureReporterInstaller failureReporterInstaller; int output; MockExpectedCallsListForTest expectations; mock().expectOneCall("foo").withOutputParameterReturning("output", &output, sizeof(output)); mock().actualCall("foo"); expectations.addFunction("foo")->withOutputParameterReturning("output", &output, sizeof(output)); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockCallTest, expectNoCallDoesntInfluenceExpectOneCall) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("influence", MockCheckedExpectedCall::NO_EXPECTED_CALL_ORDER)->callWasMade(1); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "lazy", expectations); mock().expectNoCall("lazy"); mock().expectOneCall("influence"); mock().actualCall("influence"); mock().actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockParameterTest, expectOneIntegerParameterAndFailsDueToTypes) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", 10); MockNamedValue parameter("parameter"); parameter.setValue("heh"); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("parameter", "heh"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockParameterTest, unsignedLongAndLongWithSameBitRepresentationShouldnotBeTreatedAsEqual) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", (unsigned long)-1); MockNamedValue parameter("parameter"); parameter.setValue((long)-1); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)-1); mock().actualCall("foo").withParameter("parameter", (long)-1); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockCallTest, ignoreOtherCallsDoesntIgnoreMultipleCallsOfTheSameFunction) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->callWasMade(1); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().actualCall("bar"); mock().actualCall("foo"); mock().actualCall("foo"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockParameterTest, expectOneUnsignedIntegerParameterAndFailsDueToParameterName) { MockFailureReporterInstaller failureReporterInstaller; unsigned int value = 7; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", value); MockNamedValue parameter("different"); parameter.setValue(value); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", value); mock().actualCall("foo").withParameter("different", value); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockCallTest, expectOneCallHoweverMultipleHappened) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->callWasMade(1); expectations.addFunction("foo")->callWasMade(2); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo"); mock().expectOneCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockComparatorCopierTest, customObjectWithFunctionComparatorThatFailsCoversValueToString) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting object(5); MockFunctionComparator comparator(myTypeIsEqual, myTypeValueToString); mock().installComparator("MyTypeForTesting", comparator); MockExpectedCallsListForTest expectations; expectations.addFunction("function")->withParameterOfType("MyTypeForTesting", "parameterName", &object); MockExpectedCallsDidntHappenFailure failure(UtestShell::getCurrent(), expectations); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE_LOCATION(failure, __FILE__, __LINE__); }
TEST(MockParameterTest, expectOneMemBufferParameterAndValueFailsDueToContents) { MockFailureReporterInstaller failureReporterInstaller; unsigned char memBuffer1[] = { 0x12, 0x15, 0xFF }; unsigned char memBuffer2[] = { 0x12, 0x05, 0xFF }; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", memBuffer1, sizeof(memBuffer1)); MockNamedValue parameter("parameter"); parameter.setMemoryBuffer( memBuffer2, sizeof(memBuffer2) ); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", memBuffer1, sizeof(memBuffer1)); mock().actualCall("foo").withParameter("parameter", memBuffer2, sizeof(memBuffer2)); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockParameterTest, unexpectedOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; int param; MockExpectedCallsListForTest expectations; mock().expectOneCall("foo"); mock().actualCall("foo").withOutputParameter("parameterName", ¶m); expectations.addFunction("foo"); MockNamedValue parameter("parameterName"); parameter.setValue(¶m); MockUnexpectedOutputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockComparatorCopierTest, noCopierForCustomTypeOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting expectedObject(123464); MyTypeForTesting actualObject(8834); MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); MockNoWayToCopyCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); mock().actualCall("foo").withOutputParameterOfType("MyTypeForTesting", "output", &actualObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockStrictOrderTest, orderViolatedWithinAScope) { MockFailureReporterInstaller failureReporterInstaller; mock().strictOrder(); MockExpectedCallsListForTest expectations; expectations.addFunction("foo1", 1)->callWasMade(2); expectations.addFunction("foo2", 2)->callWasMade(1); MockCallOrderFailure expectedFailure(mockFailureTest(), expectations); mock("scope").expectOneCall("foo1"); mock("scope").expectOneCall("foo2"); mock("scope").actualCall("foo2"); mock("scope").actualCall("foo1"); mock("scope").checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockComparatorCopierTest, noActualCallForCustomTypeOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting expectedObject(1); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().removeAllComparatorsAndCopiers(); }
TEST(MockCallTest, OnObjectExpectedButNotCalled) { MockFailureReporterInstaller failureReporterInstaller; void* objectPtr = (void*) 0x001; MockExpectedCallsListForTest expectations; expectations.addFunction("boo")->onObject(objectPtr); expectations.addFunction("boo")->onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo"); mock().actualCall("boo"); MockExpectedObjectDidntHappenFailure expectedFailure(mockFailureTest(), "boo", expectations); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); }
TEST(MockComparatorCopierTest, unexpectedCustomTypeOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting actualObject(8834); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); MockExpectedCallsListForTest expectations; expectations.addFunction("foo"); MockNamedValue parameter("parameterName"); parameter.setConstObjectPointer("MyTypeForTesting", &actualObject); MockUnexpectedOutputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo"); mock().actualCall("foo").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().removeAllComparatorsAndCopiers(); }
TEST(MockComparatorCopierTest, customTypeOutputParameterOfWrongType) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting expectedObject(123464); MyTypeForTesting actualObject(75646); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); MockNamedValue parameter("output"); parameter.setObjectPointer("OtherTypeForTesting", &actualObject); MockUnexpectedOutputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); mock().actualCall("foo").withOutputParameterOfType("OtherTypeForTesting", "output", &actualObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().removeAllComparatorsAndCopiers(); }