1 /* 2 * Macros for testing 3 * 4 * Copyright (C) 2013-2021, Joachim Metz <joachim.metz@gmail.com> 5 * 6 * Refer to AUTHORS for acknowledgements. 7 * 8 * This program is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this program. If not, see <https://www.gnu.org/licenses/>. 20 */ 21 22 #if !defined( _CREG_TEST_MACROS_H ) 23 #define _CREG_TEST_MACROS_H 24 25 #include <common.h> 26 #include <file_stream.h> 27 28 #if defined( HAVE_STDLIB_H ) || defined( WINAPI ) 29 #include <stdlib.h> 30 #endif 31 32 #define CREG_TEST_ASSERT_EQUAL_INT( name, value, expected_value ) \ 33 if( value != expected_value ) \ 34 { \ 35 fprintf( stdout, "%s:%d %s (%d) != %d\n", __FILE__, __LINE__, name, value, expected_value ); \ 36 goto on_error; \ 37 } 38 39 #define CREG_TEST_ASSERT_NOT_EQUAL_INT( name, value, expected_value ) \ 40 if( value == expected_value ) \ 41 { \ 42 fprintf( stdout, "%s:%d %s (%d) == %d\n", __FILE__, __LINE__, name, value, expected_value ); \ 43 goto on_error; \ 44 } 45 46 #define CREG_TEST_ASSERT_GREATER_THAN_INT( name, value, expected_value ) \ 47 if( value <= expected_value ) \ 48 { \ 49 fprintf( stdout, "%s:%d %s (%d) <= %d\n", __FILE__, __LINE__, name, value, expected_value ); \ 50 goto on_error; \ 51 } 52 53 #define CREG_TEST_ASSERT_LESS_THAN_INT( name, value, expected_value ) \ 54 if( value >= expected_value ) \ 55 { \ 56 fprintf( stdout, "%s:%d %s (%d) >= %d\n", __FILE__, __LINE__, name, value, expected_value ); \ 57 goto on_error; \ 58 } 59 60 #define CREG_TEST_ASSERT_EQUAL_INTPTR( name, value, expected_value ) \ 61 if( value != expected_value ) \ 62 { \ 63 fprintf( stdout, "%s:%d %s (0x%08x" PRIjx ") != 0x%08x" PRIjx "\n", __FILE__, __LINE__, name, value, expected_value ); \ 64 goto on_error; \ 65 } 66 67 #define CREG_TEST_ASSERT_NOT_EQUAL_INTPTR( name, value, expected_value ) \ 68 if( value == expected_value ) \ 69 { \ 70 fprintf( stdout, "%s:%d %s (0x%08x" PRIjx ") == 0x%08x" PRIjx "\n", __FILE__, __LINE__, name, value, expected_value ); \ 71 goto on_error; \ 72 } 73 74 #define CREG_TEST_ASSERT_EQUAL_FLOAT( name, value, expected_value ) \ 75 if( value != expected_value ) \ 76 { \ 77 fprintf( stdout, "%s:%d %s (%f) != %f\n", __FILE__, __LINE__, name, value, expected_value ); \ 78 goto on_error; \ 79 } 80 81 #define CREG_TEST_ASSERT_NOT_EQUAL_FLOAT( name, value, expected_value ) \ 82 if( value == expected_value ) \ 83 { \ 84 fprintf( stdout, "%s:%d %s (%f) == %f\n", __FILE__, __LINE__, name, value, expected_value ); \ 85 goto on_error; \ 86 } 87 88 #define CREG_TEST_ASSERT_EQUAL_SIZE( name, value, expected_value ) \ 89 if( value != expected_value ) \ 90 { \ 91 fprintf( stdout, "%s:%d %s (%" PRIzd ") != %" PRIzd "\n", __FILE__, __LINE__, name, value, expected_value ); \ 92 goto on_error; \ 93 } 94 95 #define CREG_TEST_ASSERT_EQUAL_SSIZE( name, value, expected_value ) \ 96 if( value != expected_value ) \ 97 { \ 98 fprintf( stdout, "%s:%d %s (%" PRIzd ") != %" PRIzd "\n", __FILE__, __LINE__, name, value, expected_value ); \ 99 goto on_error; \ 100 } 101 102 #define CREG_TEST_ASSERT_NOT_EQUAL_SSIZE( name, value, expected_value ) \ 103 if( value == expected_value ) \ 104 { \ 105 fprintf( stdout, "%s:%d %s (%" PRIzd ") == %" PRIzd "\n", __FILE__, __LINE__, name, value, expected_value ); \ 106 goto on_error; \ 107 } 108 109 #define CREG_TEST_ASSERT_EQUAL_INT8( name, value, expected_value ) \ 110 if( value != expected_value ) \ 111 { \ 112 fprintf( stdout, "%s:%d %s (%" PRIi8 ") != %" PRIi8 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 113 goto on_error; \ 114 } 115 116 #define CREG_TEST_ASSERT_NOT_EQUAL_INT8( name, value, expected_value ) \ 117 if( value == expected_value ) \ 118 { \ 119 fprintf( stdout, "%s:%d %s (%" PRIi8 ") == %" PRIi8 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 120 goto on_error; \ 121 } 122 123 #define CREG_TEST_ASSERT_EQUAL_UINT8( name, value, expected_value ) \ 124 if( value != expected_value ) \ 125 { \ 126 fprintf( stdout, "%s:%d %s (%" PRIi8 ") != %" PRIu8 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 127 goto on_error; \ 128 } 129 130 #define CREG_TEST_ASSERT_LESS_THAN_UINT8( name, value, expected_value ) \ 131 if( value >= expected_value ) \ 132 { \ 133 fprintf( stdout, "%s:%d %s (%" PRIi8 ") >= %" PRIu8 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 134 goto on_error; \ 135 } 136 137 #define CREG_TEST_ASSERT_EQUAL_INT16( name, value, expected_value ) \ 138 if( value != expected_value ) \ 139 { \ 140 fprintf( stdout, "%s:%d %s (%" PRIi16 ") != %" PRIi16 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 141 goto on_error; \ 142 } 143 144 #define CREG_TEST_ASSERT_NOT_EQUAL_INT16( name, value, expected_value ) \ 145 if( value == expected_value ) \ 146 { \ 147 fprintf( stdout, "%s:%d %s (%" PRIi16 ") == %" PRIi16 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 148 goto on_error; \ 149 } 150 151 #define CREG_TEST_ASSERT_EQUAL_UINT16( name, value, expected_value ) \ 152 if( value != expected_value ) \ 153 { \ 154 fprintf( stdout, "%s:%d %s (%" PRIi16 ") != %" PRIu16 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 155 goto on_error; \ 156 } 157 158 #define CREG_TEST_ASSERT_LESS_THAN_UINT16( name, value, expected_value ) \ 159 if( value >= expected_value ) \ 160 { \ 161 fprintf( stdout, "%s:%d %s (%" PRIi16 ") >= %" PRIu16 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 162 goto on_error; \ 163 } 164 165 #define CREG_TEST_ASSERT_EQUAL_INT32( name, value, expected_value ) \ 166 if( value != expected_value ) \ 167 { \ 168 fprintf( stdout, "%s:%d %s (%" PRIi32 ") != %" PRIi32 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 169 goto on_error; \ 170 } 171 172 #define CREG_TEST_ASSERT_NOT_EQUAL_INT32( name, value, expected_value ) \ 173 if( value == expected_value ) \ 174 { \ 175 fprintf( stdout, "%s:%d %s (%" PRIi32 ") == %" PRIi32 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 176 goto on_error; \ 177 } 178 179 #define CREG_TEST_ASSERT_EQUAL_UINT32( name, value, expected_value ) \ 180 if( value != expected_value ) \ 181 { \ 182 fprintf( stdout, "%s:%d %s (%" PRIu32 ") != %" PRIu32 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 183 goto on_error; \ 184 } 185 186 #define CREG_TEST_ASSERT_LESS_THAN_UINT32( name, value, expected_value ) \ 187 if( value >= expected_value ) \ 188 { \ 189 fprintf( stdout, "%s:%d %s (%" PRIu32 ") >= %" PRIu32 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 190 goto on_error; \ 191 } 192 193 #define CREG_TEST_ASSERT_EQUAL_INT64( name, value, expected_value ) \ 194 if( value != expected_value ) \ 195 { \ 196 fprintf( stdout, "%s:%d %s (%" PRIi64 ") != %" PRIi64 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 197 goto on_error; \ 198 } 199 200 #define CREG_TEST_ASSERT_NOT_EQUAL_INT64( name, value, expected_value ) \ 201 if( value == expected_value ) \ 202 { \ 203 fprintf( stdout, "%s:%d %s (%" PRIi64 ") == %" PRIi64 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 204 goto on_error; \ 205 } 206 207 #define CREG_TEST_ASSERT_EQUAL_UINT64( name, value, expected_value ) \ 208 if( value != expected_value ) \ 209 { \ 210 fprintf( stdout, "%s:%d %s (%" PRIu64 ") != %" PRIu64 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 211 goto on_error; \ 212 } 213 214 #define CREG_TEST_ASSERT_LESS_THAN_UINT64( name, value, expected_value ) \ 215 if( value >= expected_value ) \ 216 { \ 217 fprintf( stdout, "%s:%d %s (%" PRIu64 ") >= %" PRIu64 "\n", __FILE__, __LINE__, name, value, expected_value ); \ 218 goto on_error; \ 219 } 220 221 #define CREG_TEST_ASSERT_IS_NOT_NULL( name, value ) \ 222 if( value == NULL ) \ 223 { \ 224 fprintf( stdout, "%s:%d %s == NULL\n", __FILE__, __LINE__, name ); \ 225 goto on_error; \ 226 } 227 228 #define CREG_TEST_ASSERT_IS_NULL( name, value ) \ 229 if( value != NULL ) \ 230 { \ 231 fprintf( stdout, "%s:%d %s != NULL\n", __FILE__, __LINE__, name ); \ 232 goto on_error; \ 233 } 234 235 #define CREG_TEST_RUN( name, function ) \ 236 if( function() != 1 ) \ 237 { \ 238 fprintf( stdout, "Unable to run test: %s\n", name ); \ 239 goto on_error; \ 240 } 241 242 #if !defined( __BORLANDC__ ) || ( __BORLANDC__ >= 0x0560 ) 243 244 #define CREG_TEST_RUN_WITH_ARGS( name, function, ... ) \ 245 if( function( __VA_ARGS__ ) != 1 ) \ 246 { \ 247 fprintf( stdout, "Unable to run test: %s\n", name ); \ 248 goto on_error; \ 249 } 250 251 #endif /* !defined( __BORLANDC__ ) || ( __BORLANDC__ >= 0x0560 ) */ 252 253 #define CREG_TEST_FPRINT_ERROR( error ) \ 254 libcerror_error_backtrace_fprint( error, stdout ); 255 256 #endif /* !defined( _CREG_TEST_MACROS_H ) */ 257 258