200910codeind

#ifndef __OJ_H__
#define __OJ_H__

 

/*内存分配函数*/
void *MLC_MemAlloc(unsigned int ulPidSid, unsigned char ucPtNo, unsigned int ulSize,  char *pcFileName, unsigned int ulLine);

/*内存释放函数*/                          
void MLC_MemFree(unsigned int ulPidSid,  void *pAddr);

/*内存泄漏检查函数*/
unsigned int MLC_CheckIfMemLeak(unsigned int *pulAddrNum, void* pAddrArray[]);

/*自动回收泄漏的内存*/
void MLC_CollectMemory(void);

#endif

 

CExampleTest.cpp

******************************************************************************/

#include <cppunit/config/SourcePrefix.h>
#include "CExampleTest.h"
#include <stdlib.h>
#include "OJ.h"

// 定义测试用的PID
#define PID_TEST_MLC 110
#define DYNAMIC_MEM_PT 1

void *g_paMemLeakAddrArray[2048] = {0}; /*定义存放泄漏的内存块地址的buff*/


// 注册测试套到CppUnit
CPPUNIT_TEST_SUITE_REGISTRATION( CExampleTest);

// SetUp: 在每个用例前执行一次
void CExampleTest::setUp()
{
}

// tearDown: 在每个用例后执行一次
void CExampleTest::tearDown()
{
}

 

// 测试用例实现示例

/************************************************************************************************/
void CExampleTest::TestCase01()   //用例1:没有泄漏
{
    unsigned int ulSize = 10;
 unsigned int ulMemLeakNum = 0;
 void*  pAddr  = NULL;
   
 memset(g_paMemLeakAddrArray, 0, sizeof(g_paMemLeakAddrArray));

    pAddr = MLC_MemAlloc(PID_TEST_MLC, DYNAMIC_MEM_PT, ulSize, __FILE__, __LINE__); // 申请内存

    if (NULL != pAddr)
    {      
        MLC_MemFree(PID_TEST_MLC, pAddr);   // 释放内存
    }   
   
    CPPUNIT_ASSERT(0 == MLC_CheckIfMemLeak(&ulMemLeakNum, g_paMemLeakAddrArray));
 CPPUNIT_ASSERT(0 == ulMemLeakNum);
}

/************************************************************************************************/
void CExampleTest::TestCase02() 
{
   
}

/************************************************************************************************/
void CExampleTest::TestCase03() 
{


}

/************************************************************************************************/
void CExampleTest::TestCase04() 
{

}


/************************************************************************************************/
// 在这里添加测试用例实现
// void CExampleTest::TestCasexx()
// {
//
// }

 

CExampleTest.h

******************************************************************************/
#ifndef _CEXAMPLE_TEST_H
#define _CEXAMPLE_TEST_H

#include <cppunit/extensions/HelperMacros.h>

class CExampleTest : public CPPUNIT_NS::TestFixture
{
    CPPUNIT_TEST_SUITE( CExampleTest );
//     CPPUNIT_TEST( TestCase01 );
//     CPPUNIT_TEST( TestCase02 );
//     CPPUNIT_TEST( TestCase03 );
//     CPPUNIT_TEST( TestCase04 );
//     CPPUNIT_TEST( TestCase05 );
//     CPPUNIT_TEST( TestCase06 );
//     CPPUNIT_TEST( TestCase07 );
//     CPPUNIT_TEST( TestCase08 );
//     CPPUNIT_TEST( TestCase09 );
//     CPPUNIT_TEST( TestCase10 );
//     CPPUNIT_TEST( TestCase11 );
//     CPPUNIT_TEST( TestCase12 );
//     CPPUNIT_TEST( TestCase13 );
//     CPPUNIT_TEST( TestCase14 );
//     CPPUNIT_TEST( TestCase15 );
//     CPPUNIT_TEST( TestCase16 );
//     CPPUNIT_TEST( TestCase17 );
//     CPPUNIT_TEST( TestCase18 );
//     CPPUNIT_TEST( TestCase19 );
//     CPPUNIT_TEST( TestCase20 );
    // 在这里添加测试用例声明, 将测试用例加入测试套
    // CPPUNIT_TEST( TestCasexx );

    CPPUNIT_TEST_SUITE_END();

public:
    void setUp();
    void tearDown();
    void TestCase01();
    void TestCase02();
    void TestCase03();
    void TestCase04();
//     void TestCase05();
//     void TestCase06();
//     void TestCase07();
//     void TestCase08();
//     void TestCase09();
//     void TestCase10();
//     void TestCase11();
//     void TestCase12();
//     void TestCase13();
//     void TestCase14();
//     void TestCase15();
//     void TestCase16();
//     void TestCase17();
//     void TestCase18();
//     void TestCase19();
//     void TestCase20();
    // 在这里添加测试用例声明, 声明测试类的成员函数
    // void TestCasexx();

};

#endif /*_CEXAMPLE_TEST_H*/

 

main,cpp

******************************************************************************/
#include <cppunit/TextOutputter.h>
#include <cppunit/XmlOutputter.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestRunner.h>
#include "conio.h"

int main(int argc, char* argv[])
{
    // Create the event manager and test controller
    CPPUNIT_NS::TestResult controller;

    // Add a listener that colllects test result
    CPPUNIT_NS::TestResultCollector result;
    controller.addListener( &result );

    // Add a listener that print dots as test run.
    CPPUNIT_NS::BriefTestProgressListener progress;
    controller.addListener( &progress );

    // Add the top suite to the test runner
    CPPUNIT_NS::TestRunner runner;
    runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry("All Tests").makeTest() );
    runner.run( controller );

    // Print test in a text format.
    CPPUNIT_NS::TextOutputter outputter( &result, CPPUNIT_NS::stdCOut() );
    outputter.write();

    // This for XML output
    std::ofstream file( "TestResult.xml" );
    CPPUNIT_NS::XmlOutputter xml( &result, file );
    xml.setStyleSheet( "report.xsl" );
    xml.write();
    file.close();
 getch();

    return result.wasSuccessful() ? 0 : 1;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值