⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdb.c

📁 linux 下 C程序单元测试,可以实现交互模式和静态模式
💻 C
📖 第 1 页 / 共 5 页
字号:
    if ((NULL != pCur->pName) && (0 == CU_compare_strings(pCur->pName, szSuiteName))) {      pSuite = pCur;      break;    }    pCur = pCur->pNext;  }  return pSuite;}/*------------------------------------------------------------------------*//** Retrieve a pointer to the test case having the specified name. *  Scans the pSuite and returns a pointer to the first *  test case located having the specified name. *  @param szTestName The name of the test case to locate. *  @param pSuite     The suite to scan. *  @return Pointer to the first test case having the specified name, *          NULL if not found. */CU_pTest CU_get_test_by_name(const char* szTestName, CU_pSuite pSuite){  CU_pTest pTest = NULL;  CU_pTest pCur = NULL;  assert(NULL != pSuite);  assert(NULL != szTestName);  pCur = pSuite->pTest;  while (NULL != pCur) {    if ((NULL != pCur->pName) && (0 == CU_compare_strings(pCur->pName, szTestName))) {      pTest = pCur;      break;    }    pCur = pCur->pNext;  }  return pTest;}/** @} *//*------------------------------------------------------------------------*//*------------------------------------------------------------------------*/#ifdef CUNIT_BUILD_TESTS#include "test_cunit.h"static int sfunc1(void){  return 0;}static void test1(void){}/*--------------------------------------------------*/static void test_CU_initialize_registry(void){  CU_pTestRegistry pReg = NULL;  unsigned int ndeallocs_before;  /* initial state */  TEST(NULL == CU_get_registry());  TEST(CU_FALSE == CU_registry_initialized());  /* after normal initialization */  TEST(CUE_SUCCESS == CU_initialize_registry());  pReg = CU_get_registry();  TEST_FATAL(NULL != pReg);  TEST(CU_TRUE == CU_registry_initialized());  TEST(0 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(NULL == pReg->pSuite);  /* after reinitialization */  TEST(0 < test_cunit_get_n_memevents(pReg));  ndeallocs_before = test_cunit_get_n_deallocations(pReg);  TEST(CUE_SUCCESS == CU_initialize_registry());  TEST((ndeallocs_before + 1) == test_cunit_get_n_deallocations(pReg));  pReg = CU_get_registry();  TEST_FATAL(NULL != pReg);  TEST(0 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(NULL == pReg->pSuite);  /* after cleanup */  CU_cleanup_registry();  TEST(NULL == CU_get_registry());  TEST(CU_FALSE == CU_registry_initialized());  /* if malloc fails */  test_cunit_deactivate_malloc();  TEST(CUE_NOMEMORY == CU_initialize_registry());  TEST(NULL == CU_get_registry());  TEST(CU_FALSE == CU_registry_initialized());  test_cunit_activate_malloc();}/*--------------------------------------------------*/static void test_CU_cleanup_registry(void){  /* make sure calling with uninitialized registry does not crash */  CU_cleanup_registry();  CU_cleanup_registry();  CU_cleanup_registry();  CU_cleanup_registry();  CU_cleanup_registry();  /* nothing more to do over test_CU_initialize_registry() */}/*--------------------------------------------------*/static void test_CU_add_suite(void){  CU_pSuite pSuite = NULL;  CU_pSuite pSuite2 = NULL;  CU_pSuite pSuite3 = NULL;  CU_pSuite pSuite4 = NULL;  CU_pTestRegistry pReg = NULL;  CU_cleanup_registry();  /* make sure registry not initialized */  /* error condition - registry not initialized */  pSuite = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_NOREGISTRY == CU_get_error());  TEST(NULL == pSuite);  /* error condition - no name */  CU_initialize_registry();  pReg = CU_get_registry();  pSuite = CU_add_suite(NULL, NULL, NULL);  TEST(CUE_NO_SUITENAME == CU_get_error());  TEST(NULL == pSuite);  TEST(0 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  /* error condition - duplicate name */  CU_initialize_registry();  pReg = CU_get_registry();  pSuite = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pSuite);  TEST(1 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  pSuite = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_DUP_SUITE == CU_get_error());  TEST(NULL == pSuite);  TEST(1 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  /* error condition - memory allocation failure */  CU_initialize_registry();  pReg = CU_get_registry();  test_cunit_deactivate_malloc();  pSuite = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_NOMEMORY == CU_get_error());  TEST(NULL == pSuite);  TEST(0 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  test_cunit_activate_malloc();  /* normal creation & cleanup */  CU_initialize_registry();  pReg = CU_get_registry();  pSuite = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pSuite);  TEST(1 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(CU_get_suite_by_name("suite1", pReg) == pSuite);  TEST(pReg->pSuite == pSuite);  TEST(!strcmp("suite1", pSuite->pName));  TEST(pSuite->pTest == NULL);            /* no tests added yet */  TEST(pSuite->uiNumberOfTests == 0);     /* no tests added yet */  TEST(pSuite->pInitializeFunc == NULL);  /* no init function */  TEST(pSuite->pCleanupFunc == NULL);     /* no cleanup function */  TEST(pSuite->pNext == NULL);            /* no more suites added yet */  pSuite2 = CU_add_suite("suite2", sfunc1, NULL);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pSuite2);  TEST(2 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(CU_get_suite_by_name("suite2", pReg) == pSuite2);  pSuite3 = CU_add_suite("suite3", NULL, sfunc1);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pSuite3);  TEST(3 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(CU_get_suite_by_name("suite3", pReg) == pSuite3);  pSuite4 = CU_add_suite("suite4", sfunc1, sfunc1);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pSuite4);  TEST(4 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(CU_get_suite_by_name("suite4", pReg) == pSuite4);  TEST(pReg->pSuite == pSuite);  TEST(!strcmp("suite1", pSuite->pName));  TEST(pSuite->pTest == NULL);              /* no tests added yet */  TEST(pSuite->uiNumberOfTests == 0);       /* no tests added yet */  TEST(pSuite->pInitializeFunc == NULL);    /* no init function */  TEST(pSuite->pCleanupFunc == NULL);       /* no cleanup function */  TEST(pSuite->pNext == pSuite2);           /* now have another suite */  TEST(!strcmp("suite2", pSuite2->pName));  TEST(pSuite2->pTest == NULL);             /* no tests added yet */  TEST(pSuite2->uiNumberOfTests == 0);      /* no tests added yet */  TEST(pSuite2->pInitializeFunc == sfunc1); /* no init function */  TEST(pSuite2->pCleanupFunc == NULL);      /* no cleanup function */  TEST(pSuite2->pNext == pSuite3);          /* next suite in list */  TEST(!strcmp("suite3", pSuite3->pName));  TEST(pSuite3->pTest == NULL);             /* no tests added yet */  TEST(pSuite3->uiNumberOfTests == 0);      /* no tests added yet */  TEST(pSuite3->pInitializeFunc == NULL);   /* no init function */  TEST(pSuite3->pCleanupFunc == sfunc1);    /* no cleanup function */  TEST(pSuite3->pNext == pSuite4);          /* next suite in list */  TEST(!strcmp("suite4", pSuite4->pName));  TEST(pSuite4->pTest == NULL);             /* no tests added yet */  TEST(pSuite4->uiNumberOfTests == 0);      /* no tests added yet */  TEST(pSuite4->pInitializeFunc == sfunc1); /* no init function */  TEST(pSuite4->pCleanupFunc == sfunc1);    /* no cleanup function */  TEST(pSuite4->pNext == NULL);             /* end of suite list */  TEST(0 != test_cunit_get_n_memevents(pSuite));  TEST(0 != test_cunit_get_n_memevents(pSuite2));  TEST(0 != test_cunit_get_n_memevents(pSuite3));  TEST(0 != test_cunit_get_n_memevents(pSuite4));  TEST(test_cunit_get_n_allocations(pSuite) != test_cunit_get_n_deallocations(pSuite));  TEST(test_cunit_get_n_allocations(pSuite2) != test_cunit_get_n_deallocations(pSuite2));  TEST(test_cunit_get_n_allocations(pSuite3) != test_cunit_get_n_deallocations(pSuite3));  TEST(test_cunit_get_n_allocations(pSuite4) != test_cunit_get_n_deallocations(pSuite4));  CU_cleanup_registry();  TEST(test_cunit_get_n_allocations(pSuite) == test_cunit_get_n_deallocations(pSuite));  TEST(test_cunit_get_n_allocations(pSuite2) == test_cunit_get_n_deallocations(pSuite2));  TEST(test_cunit_get_n_allocations(pSuite3) == test_cunit_get_n_deallocations(pSuite3));  TEST(test_cunit_get_n_allocations(pSuite4) == test_cunit_get_n_deallocations(pSuite4));}/*--------------------------------------------------*/static void test_CU_add_test(void){  CU_pSuite pSuite1 = NULL;  CU_pSuite pSuite2 = NULL;  CU_pTest pTest1 = NULL;  CU_pTest pTest2 = NULL;  CU_pTest pTest3 = NULL;  CU_pTest pTest4 = NULL;  CU_pTestRegistry pReg = NULL;  CU_cleanup_registry();  /* error condition - registry not initialized */  pTest1 = CU_add_test(pSuite1, "test1", test1);  TEST(CUE_NOREGISTRY == CU_get_error());  TEST(NULL == pTest1);  CU_initialize_registry();  pReg = CU_get_registry();  /* error condition - no suite */  pTest1 = CU_add_test(pSuite1, "test1", test1);  TEST(CUE_NOSUITE == CU_get_error());  TEST(NULL == pTest1);  /* error condition - no name */  pSuite1 = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_SUCCESS == CU_get_error());  pTest1 = CU_add_test(pSuite1, NULL, test1);  TEST(CUE_NO_TESTNAME == CU_get_error());  TEST(NULL == pTest1);  TEST(1 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(0 == pSuite1->uiNumberOfTests);  /* error condition - no test function */  pTest1 = CU_add_test(pSuite1, "test1", NULL);  TEST(CUE_NOTEST == CU_get_error());  TEST(NULL == pTest1);  TEST(1 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(0 == pSuite1->uiNumberOfTests);  /* error condition - duplicate name */  CU_initialize_registry();  pReg = CU_get_registry();  pSuite1 = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_SUCCESS == CU_get_error());  pTest1 = CU_add_test(pSuite1, "test1", test1);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pTest1);  TEST(1 == pReg->uiNumberOfSuites);  TEST(1 == pReg->uiNumberOfTests);  TEST(1 == pSuite1->uiNumberOfTests);  pTest2 = CU_add_test(pSuite1, "test1", test1);  TEST(CUE_DUP_TEST == CU_get_error());  TEST(NULL == pTest2);  TEST(1 == pReg->uiNumberOfSuites);  TEST(1 == pReg->uiNumberOfTests);  TEST(1 == pSuite1->uiNumberOfTests);  /* error condition - memory allocation failure */  CU_initialize_registry();  pReg = CU_get_registry();  pSuite1 = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_SUCCESS == CU_get_error());  test_cunit_deactivate_malloc();  pTest1 = CU_add_test(pSuite1, "test1", test1);  test_cunit_activate_malloc();  TEST(CUE_NOMEMORY == CU_get_error());  TEST(NULL == pTest1);  TEST(1 == pReg->uiNumberOfSuites);  TEST(0 == pReg->uiNumberOfTests);  TEST(0 == pSuite1->uiNumberOfTests);  /* normal creation & cleanup */  CU_initialize_registry();  pReg = CU_get_registry();  pSuite1 = CU_add_suite("suite1", NULL, NULL);  TEST(CUE_SUCCESS == CU_get_error());  pSuite2 = CU_add_suite("suite2", sfunc1, sfunc1);  TEST(CUE_SUCCESS == CU_get_error());  pTest1 = CU_add_test(pSuite1, "test1", test1);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pTest1);  TEST(2 == pReg->uiNumberOfSuites);  TEST(1 == pReg->uiNumberOfTests);  TEST(1 == pSuite1->uiNumberOfTests);  TEST(0 == pSuite2->uiNumberOfTests);  TEST(pSuite1->pTest == pTest1);  TEST(pSuite2->pTest == NULL);  pTest2 = CU_add_test(pSuite2, "test2", test1);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pTest2);  TEST(2 == pReg->uiNumberOfSuites);  TEST(2 == pReg->uiNumberOfTests);  TEST(1 == pSuite1->uiNumberOfTests);  TEST(1 == pSuite2->uiNumberOfTests);  TEST(pSuite1->pTest == pTest1);  TEST(pSuite2->pTest == pTest2);  pTest3 = CU_add_test(pSuite1, "test3", test1);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pTest3);  TEST(2 == pReg->uiNumberOfSuites);  TEST(3 == pReg->uiNumberOfTests);  TEST(2 == pSuite1->uiNumberOfTests);  TEST(1 == pSuite2->uiNumberOfTests);  TEST(pSuite1->pTest == pTest1);  TEST(pSuite2->pTest == pTest2);  pTest4 = CU_add_test(pSuite1, "test4", test1);  TEST(CUE_SUCCESS == CU_get_error());  TEST(NULL != pTest4);  TEST(2 == pReg->uiNumberOfSuites);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -