C语言:Message类
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>\n", \ 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>\n", 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.
posted on 2014-01-06 16:27 codestyle 阅读(1974) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述