static int functionThatReturnsAValue() { CHECK(0 == 0); CHECK_TEXT(0 == 0, "Shouldn't fail"); CHECK_TRUE(0 == 0); CHECK_TRUE_TEXT(0 == 0, "Shouldn't fail"); CHECK_FALSE(0 != 0); CHECK_FALSE_TEXT(0 != 0, "Shouldn't fail"); LONGS_EQUAL(1,1); LONGS_EQUAL_TEXT(1, 1, "Shouldn't fail"); BYTES_EQUAL(0xab,0xab); BYTES_EQUAL_TEXT(0xab, 0xab, "Shouldn't fail"); CHECK_EQUAL(100,100); CHECK_EQUAL_TEXT(100, 100, "Shouldn't fail"); STRCMP_EQUAL("THIS", "THIS"); STRCMP_EQUAL_TEXT("THIS", "THIS", "Shouldn't fail"); DOUBLES_EQUAL(1.0, 1.0, .01); DOUBLES_EQUAL_TEXT(1.0, 1.0, .01, "Shouldn't fail"); POINTERS_EQUAL(0, 0); POINTERS_EQUAL_TEXT(0, 0, "Shouldn't fail"); MEMCMP_EQUAL("THIS", "THIS", 5); MEMCMP_EQUAL_TEXT("THIS", "THIS", 5, "Shouldn't fail"); BITS_EQUAL(0x01, (unsigned char )0x01, 0xFF); BITS_EQUAL(0x0001, (unsigned short )0x0001, 0xFFFF); BITS_EQUAL(0x00000001, (unsigned long )0x00000001, 0xFFFFFFFF); BITS_EQUAL_TEXT(0x01, (unsigned char )0x01, 0xFF, "Shouldn't fail"); return 0; }
/* * This test checks that the proper output parameters are copied when multiple calls to the same * function are expected. */ TEST(MockParameterTest, properOutputParametersAreCopied) { int expectedValue1 = 1; int expectedValue2 = 2; mock().expectOneCall("foo").withOutputParameterReturning("param", &expectedValue1, sizeof(expectedValue1)).ignoreOtherParameters(); mock().expectOneCall("foo").withOutputParameterReturning("param", &expectedValue2, sizeof(expectedValue2)); int returnedValue1 = 0; int returnedValue2 = 0; mock().actualCall("foo").withOutputParameter("param", &returnedValue1); mock().actualCall("foo").withOutputParameter("param", &returnedValue2).withParameter("optional", 50); CHECK_EQUAL_TEXT(expectedValue2, returnedValue1, "Wrong output value in 1st call"); CHECK_EQUAL_TEXT(expectedValue1, returnedValue2, "Wrong output value in 2nd call"); mock().checkExpectations(); }
TEST(UnitTestMacros, CHECK_EQUAL_TEXTBehavesAsProperMacro) { if (false) CHECK_EQUAL_TEXT(1, 2, "Failed because it failed") else CHECK_EQUAL_TEXT(1, 1, "Failed because it failed") }
static void _failingTestMethodWithCHECK_EQUAL_TEXT() { CHECK_EQUAL_TEXT(1, 2, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE
{ fixture.runTestWithMethod(_failingTestMethodWithCHECK_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <2>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, CHECK_EQUAL_TEXTBehavesAsProperMacro) { if (false) CHECK_EQUAL_TEXT(1, 2, "Failed because it failed") else CHECK_EQUAL_TEXT(1, 1, "Failed because it failed") } IGNORE_TEST(UnitTestMacros, CHECK_EQUAL_TEXTWorksInAnIgnoredTest) { CHECK_EQUAL_TEXT(1, 2, "Failed because it failed") // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithLONGS_EQUAL() { LONGS_EQUAL(1, 0xff); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithLONGS_EQUALS) { fixture.runTestWithMethod(_failingTestMethodWithLONGS_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected < 1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <255 (0xff)>"); }