fork

Fork of cpputest by Rohit Grover

Committer:
Kojto
Date:
Wed May 13 13:20:35 2015 +0000
Revision:
3:9e8c8907d9ee
Parent:
1:4769360130ed
Rename console to mbed_cpputest_console (as in mbed testrunner)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 0:0b799af9d58e 1 /*
rgrover1 0:0b799af9d58e 2 * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde
rgrover1 0:0b799af9d58e 3 * All rights reserved.
rgrover1 0:0b799af9d58e 4 *
rgrover1 0:0b799af9d58e 5 * Redistribution and use in source and binary forms, with or without
rgrover1 0:0b799af9d58e 6 * modification, are permitted provided that the following conditions are met:
rgrover1 0:0b799af9d58e 7 * * Redistributions of source code must retain the above copyright
rgrover1 0:0b799af9d58e 8 * notice, this list of conditions and the following disclaimer.
rgrover1 0:0b799af9d58e 9 * * Redistributions in binary form must reproduce the above copyright
rgrover1 0:0b799af9d58e 10 * notice, this list of conditions and the following disclaimer in the
rgrover1 0:0b799af9d58e 11 * documentation and/or other materials provided with the distribution.
rgrover1 0:0b799af9d58e 12 * * Neither the name of the <organization> nor the
rgrover1 0:0b799af9d58e 13 * names of its contributors may be used to endorse or promote products
rgrover1 0:0b799af9d58e 14 * derived from this software without specific prior written permission.
rgrover1 0:0b799af9d58e 15 *
rgrover1 0:0b799af9d58e 16 * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY
rgrover1 0:0b799af9d58e 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
rgrover1 0:0b799af9d58e 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rgrover1 0:0b799af9d58e 19 * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
rgrover1 0:0b799af9d58e 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
rgrover1 0:0b799af9d58e 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
rgrover1 0:0b799af9d58e 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
rgrover1 0:0b799af9d58e 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
rgrover1 0:0b799af9d58e 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
rgrover1 0:0b799af9d58e 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rgrover1 0:0b799af9d58e 26 */
rgrover1 0:0b799af9d58e 27
rgrover1 0:0b799af9d58e 28
rgrover1 0:0b799af9d58e 29 #ifndef CPPUTESTCONFIG_H_
rgrover1 0:0b799af9d58e 30 #define CPPUTESTCONFIG_H_
rgrover1 0:0b799af9d58e 31
rgrover1 0:0b799af9d58e 32 #ifdef HAVE_CONFIG_H
rgrover1 0:0b799af9d58e 33 #include "config.h"
rgrover1 0:0b799af9d58e 34 #endif
rgrover1 0:0b799af9d58e 35
rgrover1 0:0b799af9d58e 36 /*
rgrover1 0:0b799af9d58e 37 * This file is added for some specific CppUTest configurations that earlier were spread out into multiple files.
rgrover1 0:0b799af9d58e 38 *
rgrover1 0:0b799af9d58e 39 * The goal of this file is to stay really small and not to include other things, but mainly to remove duplication
rgrover1 0:0b799af9d58e 40 * from other files and resolve dependencies in #includes.
rgrover1 0:0b799af9d58e 41 *
rgrover1 0:0b799af9d58e 42 */
rgrover1 0:0b799af9d58e 43
rgrover1 0:0b799af9d58e 44 /*
rgrover1 0:0b799af9d58e 45 * Lib C dependencies that are currently still left:
rgrover1 0:0b799af9d58e 46 *
rgrover1 0:0b799af9d58e 47 * stdarg.h -> We use formatting functions and va_list requires to include stdarg.h in SimpleString
rgrover1 0:0b799af9d58e 48 * stdlib.h -> The TestHarness_c.h includes this to try to avoid conflicts in its malloc #define. This dependency can
rgrover1 0:0b799af9d58e 49 * easily be removed by not enabling the MALLOC overrides.
rgrover1 0:0b799af9d58e 50 *
rgrover1 0:0b799af9d58e 51 * Lib C++ dependencies are all under the CPPUTEST_USE_STD_CPP_LIB.
rgrover1 0:0b799af9d58e 52 * The only dependency is to <new> which has the bad_alloc struct
rgrover1 0:0b799af9d58e 53 *
rgrover1 0:0b799af9d58e 54 */
rgrover1 0:0b799af9d58e 55
rgrover1 0:0b799af9d58e 56 /* Do we use Standard C or not? When doing Kernel development, standard C usage is out. */
rgrover1 0:0b799af9d58e 57 #ifndef CPPUTEST_USE_STD_C_LIB
rgrover1 0:0b799af9d58e 58 #ifdef CPPUTEST_STD_C_LIB_DISABLED
rgrover1 0:0b799af9d58e 59 #define CPPUTEST_USE_STD_C_LIB 0
rgrover1 0:0b799af9d58e 60 #else
rgrover1 0:0b799af9d58e 61 #define CPPUTEST_USE_STD_C_LIB 1
rgrover1 0:0b799af9d58e 62 #endif
rgrover1 0:0b799af9d58e 63 #endif
rgrover1 0:0b799af9d58e 64
Rohit Grover 1:4769360130ed 65 #if NEED_TO_ENABLE_CPP_SUPPORT /* disabled by default because our
rgrover1 0:0b799af9d58e 66 * toolchain doesn't support exceptions. */
rgrover1 0:0b799af9d58e 67 /* Do we use Standard C++ or not? */
rgrover1 0:0b799af9d58e 68 #ifndef CPPUTEST_USE_STD_CPP_LIB
rgrover1 0:0b799af9d58e 69 #ifdef CPPUTEST_STD_CPP_LIB_DISABLED
rgrover1 0:0b799af9d58e 70 #define CPPUTEST_USE_STD_CPP_LIB 0
rgrover1 0:0b799af9d58e 71 #else
rgrover1 0:0b799af9d58e 72 #define CPPUTEST_USE_STD_CPP_LIB 1
rgrover1 0:0b799af9d58e 73 #endif
rgrover1 0:0b799af9d58e 74 #endif
rgrover1 0:0b799af9d58e 75 #endif /* #if NEED_TO_ENABLE_CPP_SUPPORT */
rgrover1 0:0b799af9d58e 76
rgrover1 0:0b799af9d58e 77 /* Is memory leak detection enabled?
rgrover1 0:0b799af9d58e 78 * Controls the override of the global operator new/deleted and malloc/free.
rgrover1 0:0b799af9d58e 79 * Without this, there will be no memory leak detection in C/C++.
rgrover1 0:0b799af9d58e 80 */
rgrover1 0:0b799af9d58e 81 #if NEED_TO_ENABLE_MEMORY_LEAK_DETECTION
rgrover1 0:0b799af9d58e 82 #ifndef CPPUTEST_USE_MEM_LEAK_DETECTION
rgrover1 0:0b799af9d58e 83 #ifdef CPPUTEST_MEM_LEAK_DETECTION_DISABLED
rgrover1 0:0b799af9d58e 84 #define CPPUTEST_USE_MEM_LEAK_DETECTION 0
rgrover1 0:0b799af9d58e 85 #else
rgrover1 0:0b799af9d58e 86 #define CPPUTEST_USE_MEM_LEAK_DETECTION 1
rgrover1 0:0b799af9d58e 87 #endif
rgrover1 0:0b799af9d58e 88 #endif
rgrover1 0:0b799af9d58e 89 #endif /* #if NEED_TO_ENABLE_MEMORY_LEAK_DETECTION */
rgrover1 0:0b799af9d58e 90
rgrover1 0:0b799af9d58e 91 /* Create a __no_return__ macro, which is used to flag a function as not returning.
rgrover1 0:0b799af9d58e 92 * Used for functions that always throws for instance.
rgrover1 0:0b799af9d58e 93 *
rgrover1 0:0b799af9d58e 94 * This is needed for compiling with clang, without breaking other compilers.
rgrover1 0:0b799af9d58e 95 */
rgrover1 0:0b799af9d58e 96 #ifndef __has_attribute
rgrover1 0:0b799af9d58e 97 #define __has_attribute(x) 0
rgrover1 0:0b799af9d58e 98 #endif
rgrover1 0:0b799af9d58e 99
rgrover1 0:0b799af9d58e 100 #if __has_attribute(noreturn)
rgrover1 0:0b799af9d58e 101 #define __no_return__ __attribute__((noreturn))
rgrover1 0:0b799af9d58e 102 #else
rgrover1 0:0b799af9d58e 103 #define __no_return__
rgrover1 0:0b799af9d58e 104 #endif
rgrover1 0:0b799af9d58e 105
rgrover1 0:0b799af9d58e 106 #if __has_attribute(format)
rgrover1 0:0b799af9d58e 107 #define __check_format__(type, format_parameter, other_parameters) __attribute__ ((format (type, format_parameter, other_parameters)))
rgrover1 0:0b799af9d58e 108 #else
rgrover1 0:0b799af9d58e 109 #define __check_format__(type, format_parameter, other_parameters) /* type, format_parameter, other_parameters */
rgrover1 0:0b799af9d58e 110 #endif
rgrover1 0:0b799af9d58e 111
rgrover1 0:0b799af9d58e 112 /*
rgrover1 0:0b799af9d58e 113 * When we don't link Standard C++, then we won't throw exceptions as we assume the compiler might not support that!
rgrover1 0:0b799af9d58e 114 */
rgrover1 0:0b799af9d58e 115
rgrover1 0:0b799af9d58e 116 #if CPPUTEST_USE_STD_CPP_LIB
rgrover1 0:0b799af9d58e 117 #if defined(__cplusplus) && __cplusplus >= 201103L
rgrover1 0:0b799af9d58e 118 #define UT_THROW(exception)
rgrover1 0:0b799af9d58e 119 #define UT_NOTHROW noexcept
rgrover1 0:0b799af9d58e 120 #else
rgrover1 0:0b799af9d58e 121 #define UT_THROW(exception) throw (exception)
rgrover1 0:0b799af9d58e 122 #define UT_NOTHROW throw()
rgrover1 0:0b799af9d58e 123 #endif
rgrover1 0:0b799af9d58e 124 #else
rgrover1 0:0b799af9d58e 125 #define UT_THROW(exception)
Rohit Grover 1:4769360130ed 126 #ifdef __clang__
Rohit Grover 1:4769360130ed 127 #define UT_NOTHROW throw()
Rohit Grover 1:4769360130ed 128 #else
Rohit Grover 1:4769360130ed 129 #define UT_NOTHROW
Rohit Grover 1:4769360130ed 130 #endif
rgrover1 0:0b799af9d58e 131 #endif
rgrover1 0:0b799af9d58e 132
rgrover1 0:0b799af9d58e 133 /*
Rohit Grover 1:4769360130ed 134 * Visual C++ doesn't define __cplusplus as C++11 yet (201103), however it doesn't want the throw(exception) either, but
Rohit Grover 1:4769360130ed 135 * it does want throw().
rgrover1 0:0b799af9d58e 136 */
rgrover1 0:0b799af9d58e 137
Rohit Grover 1:4769360130ed 138 #ifdef _MSC_VER
Rohit Grover 1:4769360130ed 139 #undef UT_THROW
Rohit Grover 1:4769360130ed 140 #define UT_THROW(exception)
Rohit Grover 1:4769360130ed 141 #endif
Rohit Grover 1:4769360130ed 142
Rohit Grover 1:4769360130ed 143 #if defined(__cplusplus) && __cplusplus >= 201103L
Rohit Grover 1:4769360130ed 144 #define DEFAULT_COPY_CONSTRUCTOR(classname) classname(const classname &) = default;
Rohit Grover 1:4769360130ed 145 #else
Rohit Grover 1:4769360130ed 146 #define DEFAULT_COPY_CONSTRUCTOR(classname)
rgrover1 0:0b799af9d58e 147 #endif
rgrover1 0:0b799af9d58e 148
rgrover1 0:0b799af9d58e 149 /*
rgrover1 0:0b799af9d58e 150 * g++-4.7 with stdc++11 enabled On MacOSX! will have a different exception specifier for operator new (and thank you!)
rgrover1 0:0b799af9d58e 151 * I assume they'll fix this in the future, but for now, we'll change that here.
rgrover1 0:0b799af9d58e 152 * (This should perhaps also be done in the configure.ac)
rgrover1 0:0b799af9d58e 153 */
rgrover1 0:0b799af9d58e 154
rgrover1 0:0b799af9d58e 155 #ifdef __GXX_EXPERIMENTAL_CXX0X__
rgrover1 0:0b799af9d58e 156 #ifdef __APPLE__
rgrover1 0:0b799af9d58e 157 #ifdef _GLIBCXX_THROW
rgrover1 0:0b799af9d58e 158 #undef UT_THROW
rgrover1 0:0b799af9d58e 159 #define UT_THROW(exception) _GLIBCXX_THROW(exception)
rgrover1 0:0b799af9d58e 160 #endif
rgrover1 0:0b799af9d58e 161 #endif
rgrover1 0:0b799af9d58e 162 #endif
rgrover1 0:0b799af9d58e 163
rgrover1 0:0b799af9d58e 164 /*
rgrover1 0:0b799af9d58e 165 * Detection of different 64 bit environments
rgrover1 0:0b799af9d58e 166 */
rgrover1 0:0b799af9d58e 167
rgrover1 0:0b799af9d58e 168 #if defined(__LP64__) || defined(_LP64) || (defined(__WORDSIZE) && (__WORDSIZE == 64 )) || defined(__x86_64) || defined(_WIN64)
rgrover1 0:0b799af9d58e 169 #define CPPUTEST_64BIT
rgrover1 0:0b799af9d58e 170 #if defined(_WIN64)
rgrover1 0:0b799af9d58e 171 #define CPPUTEST_64BIT_32BIT_LONGS
rgrover1 0:0b799af9d58e 172 #endif
rgrover1 0:0b799af9d58e 173 #endif
rgrover1 0:0b799af9d58e 174
Rohit Grover 1:4769360130ed 175 /* Visual C++ 10.0+ (2010+) supports the override keyword, but doesn't define the C++ version as C++11 */
Rohit Grover 1:4769360130ed 176 #if defined(__cplusplus) && ((__cplusplus >= 201103L) || (defined(_MSC_VER) && (_MSC_VER >= 1600)))
rgrover1 0:0b799af9d58e 177 #define _override override
rgrover1 0:0b799af9d58e 178 #else
rgrover1 0:0b799af9d58e 179 #define _override
rgrover1 0:0b799af9d58e 180 #endif
rgrover1 0:0b799af9d58e 181
rgrover1 0:0b799af9d58e 182 /* Should be the only #include here. Standard C library wrappers */
rgrover1 0:0b799af9d58e 183 #include "StandardCLibrary.h"
rgrover1 0:0b799af9d58e 184
rgrover1 0:0b799af9d58e 185 #endif