message.h
#ifndef MESSAGE_H #define MESSAGE_H #define TRUE 1 #define FALSE 0 typedef struct { int sender; int isSend; int isCharge; char date[8]; }Message; Message * makeMessage(const int sender, const char *date); void setSendFlag(Message * const message); void setChargeFlag(Message * const message); int isSameDate(const Message * const message, const char * const date); char * format(const Message * const message); const char * boolStr(const int value); #endif
message.c
#include <assert.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include "message.h" Message * makeMessage(const int sender, const char *date) { Message *message = (Message*)malloc(sizeof(Message)); assert(message != NULL); message->sender = sender; message->isSend = FALSE; message->isCharge = FALSE; strncpy(message->date, date, 8); return message; } const char * boolStr(const int value) { return value == TRUE ? "TRUE" : "FALSE"; } char * format(const Message * const message) { #define BUF_SIZE 1024 static char buffer[BUF_SIZE]; memset(&buffer, 0, BUF_SIZE); snprintf((char*)&buffer, BUF_SIZE, "Message <%d %s %s> ", message->sender, boolStr(message->isSend), boolStr(message->isCharge)); return (char*)buffer; } void setSendFlag(Message * const message) { message->isSend = TRUE; } void setChargeFlag(Message * const message) { message->isCharge = TRUE; } int isSameDate(const Message * const message, const char * const date) { if (strncmp(message->date, date, 8) == 0) { return TRUE; } else { return FALSE; } }
testMessage.c
#include <stdio.h> #include "message.h" #include "gtest/gtest.h" TEST(MESSAGE,makeMessage){ Message *message = makeMessage(1,"20131212"); EXPECT_EQ(1, message->sender); EXPECT_STREQ("Message <1 FALSE FALSE> ", format(message)); }
编译命令:
g++ -c message.c g++ -c testMessage.c g++ message.o testMessage.o -lgtest -lpthread ./a.out
输出
Running main() from gtest_main.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from MESSAGE [ RUN ] MESSAGE.makeMessage [ OK ] MESSAGE.makeMessage (0 ms) [----------] 1 test from MESSAGE (0 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (2 ms total) [ PASSED ] 1 test.