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; }
TEST(UnixSocket, Accept) { socket->Bind("/tmp/test.sock"); CHECK(socket->IsOk()); pthread_t client_thread; pthread_create(&client_thread, NULL, client, NULL); UnixSocket * remote = new UnixSocket(); socket->Accept(remote); CHECK_TEXT(socket->IsOk(), "Server should accept connections"); CHECK_TEXT(remote->IsOk(), "Client should be accepted"); int buffer[1]; buffer[0] = 1; CHECK_TEXT(remote->Send(buffer, sizeof(int)) == sizeof(int), "Should send a buffer"); CHECK(remote->IsOk()); CHECK_TEXT(remote->Recv(buffer, sizeof(int)) == sizeof(int), "Should receive a buffer"); CHECK(remote->IsOk()); CHECK_TEXT(buffer[0] == 2, "Client should increment the number"); pthread_join(client_thread, NULL); remote->Close(); socket->Close(); CHECK_TEXT(remote->IsOk(), "Client should close connection"); CHECK_TEXT(socket->IsOk(), "Server should close connection"); delete remote; }
void * client(void *) { UnixSocket * local = new UnixSocket(); local->Connect("/tmp/test.sock"); CHECK_TEXT(local->IsOk(), "Client should connect"); int buffer[1]; CHECK_TEXT(local->Recv(buffer, sizeof(int)) == sizeof(int), "Should receive a buffer"); CHECK(local->IsOk()); buffer[0]++; CHECK_TEXT(local->Send(buffer, sizeof(int)) == sizeof(int), "Should send a buffer"); CHECK(local->IsOk()); local->Close(); CHECK_TEXT(local->IsOk(), "Client should close connection"); delete local; pthread_exit(NULL); }
TEST(UnixSocket, BrokenPipe) { socket->Bind("/tmp/test.sock"); pthread_t client_thread; pthread_create(&client_thread, NULL, early_closed_client, NULL); UnixSocket * remote = new UnixSocket(); socket->Accept(remote); int buffer[1]; buffer[0] = 1; CHECK_TEXT(remote->Send(buffer, sizeof(int)) == EPIPE, "Should identify an 'Broken Pipe'"); pthread_join(client_thread, NULL); remote->Close(); socket->Close(); delete remote; }
TEST(UnixSocket, Bind) { socket->Bind("/tmp/test.sock"); CHECK_TEXT(socket->IsOk(), "Socket should bind to address"); }
TEST(UnixSocket, Close) { socket->Close(); CHECK_TEXT(socket->IsOk(), "Socket should close"); }
IGNORE_TEST(UnitTestMacros, CHECK_TEXTWorksInAnIgnoredTest) { CHECK_TEXT(false, "false"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE
TEST(UnitTestMacros, CHECK_TEXTBehavesAsProperMacro) { if (false) CHECK_TEXT(false, "false") else CHECK_TEXT(true, "true") }
static void _failingTestMethodWithCHECK_TEXT() { CHECK_TEXT(false, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE