• 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>
    ", 
            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.
  • 相关阅读:
    JavaScript中的数组
    JavaScript中的对象
    Highcharts中设置x轴为时间的写法
    CSS 选择器(基础)
    DOM节点
    平衡木蜻蜓
    python2.7 qt4
    C语言优先级
    树莓派与stm32通信
    linux下USB转串口配置
  • 原文地址:https://www.cnblogs.com/code-style/p/3507467.html
Copyright © 2020-2023  润新知