1 |
/* |
2 |
* CUnit - A Unit testing framework library for C. |
3 |
* Copyright (C) 2001 Anil Kumar |
4 |
* Copyright (C) 2004, 2005 Anil Kumar, Jerry St.Clair |
5 |
* |
6 |
* This library is free software; you can redistribute it and/or |
7 |
* modify it under the terms of the GNU Library General Public |
8 |
* License as published by the Free Software Foundation; either |
9 |
* version 2 of the License, or (at your option) any later version. |
10 |
* |
11 |
* This library is distributed in the hope that it will be useful, |
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 |
* Library General Public License for more details. |
15 |
* |
16 |
* You should have received a copy of the GNU Library General Public |
17 |
* License along with this library; if not, write to the Free Software |
18 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 |
*/ |
20 |
|
21 |
/* |
22 |
* Contains CUnit error codes which can be used externally. |
23 |
* |
24 |
* Created By : Anil Kumar on ...(in month of Aug 2001) |
25 |
* Last Modified : 09/Aug/2001 |
26 |
* Comment : ------- |
27 |
* EMail : aksaharan@yahoo.com |
28 |
* |
29 |
* Modified : 02/Oct/2001 |
30 |
* Comment : Added proper Eror Codes |
31 |
* EMail : aksaharan@yahoo.com |
32 |
* |
33 |
* Modified : 13-Oct-2001 |
34 |
* Comment : Added Error Codes for Duplicate TestGroup and Test |
35 |
* EMail : aksaharan@yahoo.com |
36 |
* |
37 |
* Modified : 3-Aug-2004 (JDS) |
38 |
* Comment : Converted error code macros to an enum, doxygen comments |
39 |
* moved error handing code here, changed file name from Errno.h, |
40 |
* added error codes for file open errors, added error action selection |
41 |
* EMail : jds2@users.sourceforge.net |
42 |
* |
43 |
* Modified : 5-Sep-2004 (JDS) |
44 |
* Comment : Added internal test interface. |
45 |
* EMail : jds2@users.sourceforge.net |
46 |
*/ |
47 |
|
48 |
/** @file |
49 |
* Error handling functions (user interface). |
50 |
* CUnit uses a simple (and conventional) error handling strategy. |
51 |
* Functions that can generate errors set (and usually return) an |
52 |
* error code to indicate the run status. The error code can be |
53 |
* inspected using the CU_get_error() function. A descriptive |
54 |
* error message can be retrieved using CU_get_error_msg(). |
55 |
*/ |
56 |
/** @addtogroup Framework |
57 |
* @{ |
58 |
*/ |
59 |
|
60 |
#ifndef CUNIT_CUERROR_H_SEEN |
61 |
#define CUNIT_CUERROR_H_SEEN |
62 |
|
63 |
#include <errno.h> |
64 |
|
65 |
/*------------------------------------------------------------------------*/ |
66 |
/** CUnit error codes. |
67 |
* If codes are added or removed, be sure to make a change to the |
68 |
* error messages in CUError.c/get_error_desc(). |
69 |
* @see CU_set_error() |
70 |
* @see CU_get_error() |
71 |
* @see CU_get_error_msg() |
72 |
*/ |
73 |
typedef enum { |
74 |
/* basic errors */ |
75 |
CUE_SUCCESS = 0, /**< No error condition. */ |
76 |
CUE_NOMEMORY = 1, /**< Memory allocation failed. */ |
77 |
|
78 |
/* Test Registry Level Errors */ |
79 |
CUE_NOREGISTRY = 10, /**< Test registry not initialized. */ |
80 |
CUE_REGISTRY_EXISTS = 11, /**< Attempt to CU_set_registry() without CU_cleanup_registry(). */ |
81 |
|
82 |
/* Test Suite Level Errors */ |
83 |
CUE_NOSUITE = 20, /**< A required CU_pSuite pointer was NULL. */ |
84 |
CUE_NO_SUITENAME = 21, /**< Required CU_Suite name not provided. */ |
85 |
CUE_SINIT_FAILED = 22, /**< Suite initialization failed. */ |
86 |
CUE_SCLEAN_FAILED = 23, /**< Suite cleanup failed. */ |
87 |
CUE_DUP_SUITE = 24, /**< Duplicate suite name not allowed. */ |
88 |
|
89 |
/* Test Case Level Errors */ |
90 |
CUE_NOTEST = 30, /**< A required CU_pTest pointer was NULL. */ |
91 |
CUE_NO_TESTNAME = 31, /**< Required CU_Test name not provided. */ |
92 |
CUE_DUP_TEST = 32, /**< Duplicate test case name not allowed. */ |
93 |
CUE_TEST_NOT_IN_SUITE = 33, /**< Test not registered in specified suite. */ |
94 |
|
95 |
/* File handling errors */ |
96 |
CUE_FOPEN_FAILED = 40, /**< An error occurred opening a file. */ |
97 |
CUE_FCLOSE_FAILED = 41, /**< An error occurred closing a file. */ |
98 |
CUE_BAD_FILENAME = 42, /**< A bad filename was requested (NULL, empty, nonexistent, etc.). */ |
99 |
CUE_WRITE_ERROR = 43 /**< An error occurred during a write to a file. */ |
100 |
} CU_ErrorCode; |
101 |
|
102 |
/*------------------------------------------------------------------------*/ |
103 |
/** CUnit error action codes. |
104 |
* These are used to set the action desired when an error |
105 |
* condition is detected in the CUnit framework. |
106 |
* @see CU_set_error_action() |
107 |
* @see CU_get_error_action() |
108 |
*/ |
109 |
typedef enum { |
110 |
CUEA_IGNORE, /**< Runs should be continued when an error condition occurs (if possible). */ |
111 |
CUEA_FAIL, /**< Runs should be stopped when an error condition occurs. */ |
112 |
CUEA_ABORT /**< The application should exit() when an error conditions occurs. */ |
113 |
} CU_ErrorAction; |
114 |
|
115 |
/* Error handling & reporting functions. */ |
116 |
|
117 |
#include "CUnit.h" |
118 |
|
119 |
#ifdef __cplusplus |
120 |
extern "C" { |
121 |
#endif |
122 |
|
123 |
CU_EXPORT CU_ErrorCode CU_get_error(void); |
124 |
/*@observer@*/ |
125 |
CU_EXPORT const char* CU_get_error_msg(void); |
126 |
CU_EXPORT void CU_set_error_action(CU_ErrorAction action); |
127 |
CU_EXPORT CU_ErrorAction CU_get_error_action(void); |
128 |
|
129 |
#ifdef CUNIT_BUILD_TESTS |
130 |
void test_cunit_CUError(void); |
131 |
#endif |
132 |
|
133 |
/* Internal function - users should not generally call this function */ |
134 |
void CU_set_error(CU_ErrorCode error); |
135 |
|
136 |
#ifdef __cplusplus |
137 |
} |
138 |
#endif |
139 |
|
140 |
#ifdef USE_DEPRECATED_CUNIT_NAMES |
141 |
/** Deprecated (version 1). @deprecated Use CU_get_error_msg(). */ |
142 |
#define get_error() CU_get_error_msg() |
143 |
#endif /* USE_DEPRECATED_CUNIT_NAMES */ |
144 |
|
145 |
#endif /* CUNIT_CUERROR_H_SEEN */ |
146 |
/** @} */ |