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
Rohit Grover 1:4769360130ed 1 /*
Rohit Grover 1:4769360130ed 2 * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde
Rohit Grover 1:4769360130ed 3 * All rights reserved.
Rohit Grover 1:4769360130ed 4 *
Rohit Grover 1:4769360130ed 5 * Redistribution and use in source and binary forms, with or without
Rohit Grover 1:4769360130ed 6 * modification, are permitted provided that the following conditions are met:
Rohit Grover 1:4769360130ed 7 * * Redistributions of source code must retain the above copyright
Rohit Grover 1:4769360130ed 8 * notice, this list of conditions and the following disclaimer.
Rohit Grover 1:4769360130ed 9 * * Redistributions in binary form must reproduce the above copyright
Rohit Grover 1:4769360130ed 10 * notice, this list of conditions and the following disclaimer in the
Rohit Grover 1:4769360130ed 11 * documentation and/or other materials provided with the distribution.
Rohit Grover 1:4769360130ed 12 * * Neither the name of the <organization> nor the
Rohit Grover 1:4769360130ed 13 * names of its contributors may be used to endorse or promote products
Rohit Grover 1:4769360130ed 14 * derived from this software without specific prior written permission.
Rohit Grover 1:4769360130ed 15 *
Rohit Grover 1:4769360130ed 16 * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY
Rohit Grover 1:4769360130ed 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Rohit Grover 1:4769360130ed 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Rohit Grover 1:4769360130ed 19 * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
Rohit Grover 1:4769360130ed 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
Rohit Grover 1:4769360130ed 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
Rohit Grover 1:4769360130ed 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
Rohit Grover 1:4769360130ed 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Rohit Grover 1:4769360130ed 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Rohit Grover 1:4769360130ed 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Rohit Grover 1:4769360130ed 26 */
Rohit Grover 1:4769360130ed 27
Rohit Grover 1:4769360130ed 28 #include "CppUTest/TestHarness.h"
Rohit Grover 1:4769360130ed 29 #include "CppUTest/MemoryLeakDetector.h"
Rohit Grover 1:4769360130ed 30 #include "CppUTest/TestMemoryAllocator.h"
Rohit Grover 1:4769360130ed 31 #include "CppUTest/PlatformSpecificFunctions.h"
Rohit Grover 1:4769360130ed 32 #include "CppUTest/TestHarness_c.h"
Rohit Grover 1:4769360130ed 33
Rohit Grover 1:4769360130ed 34 extern "C"
Rohit Grover 1:4769360130ed 35 {
Rohit Grover 1:4769360130ed 36
Rohit Grover 1:4769360130ed 37
Rohit Grover 1:4769360130ed 38 void CHECK_EQUAL_C_INT_LOCATION(int expected, int actual, const char* fileName, int lineNumber)
Rohit Grover 1:4769360130ed 39 {
Rohit Grover 1:4769360130ed 40 UtestShell::getCurrent()->assertLongsEqual((long)expected, (long)actual, fileName, lineNumber, TestTerminatorWithoutExceptions());
Rohit Grover 1:4769360130ed 41 }
Rohit Grover 1:4769360130ed 42
Rohit Grover 1:4769360130ed 43 void CHECK_EQUAL_C_REAL_LOCATION(double expected, double actual, double threshold, const char* fileName, int lineNumber)
Rohit Grover 1:4769360130ed 44 {
Rohit Grover 1:4769360130ed 45 UtestShell::getCurrent()->assertDoublesEqual(expected, actual, threshold, fileName, lineNumber, TestTerminatorWithoutExceptions());
Rohit Grover 1:4769360130ed 46 }
Rohit Grover 1:4769360130ed 47
Rohit Grover 1:4769360130ed 48 void CHECK_EQUAL_C_CHAR_LOCATION(char expected, char actual, const char* fileName, int lineNumber)
Rohit Grover 1:4769360130ed 49 {
Rohit Grover 1:4769360130ed 50 UtestShell::getCurrent()->assertEquals(((expected) != (actual)), StringFrom(expected).asCharString(), StringFrom(actual).asCharString(), fileName, lineNumber, TestTerminatorWithoutExceptions());
Rohit Grover 1:4769360130ed 51 }
Rohit Grover 1:4769360130ed 52
Rohit Grover 1:4769360130ed 53 void CHECK_EQUAL_C_STRING_LOCATION(const char* expected, const char* actual, const char* fileName, int lineNumber)
Rohit Grover 1:4769360130ed 54 {
Rohit Grover 1:4769360130ed 55 UtestShell::getCurrent()->assertCstrEqual(expected, actual, fileName, lineNumber, TestTerminatorWithoutExceptions());
Rohit Grover 1:4769360130ed 56 }
Rohit Grover 1:4769360130ed 57
Rohit Grover 1:4769360130ed 58 void FAIL_TEXT_C_LOCATION(const char* text, const char* fileName, int lineNumber)
Rohit Grover 1:4769360130ed 59 {
Rohit Grover 1:4769360130ed 60 UtestShell::getCurrent()->fail(text, fileName, lineNumber, TestTerminatorWithoutExceptions());
Rohit Grover 1:4769360130ed 61 }
Rohit Grover 1:4769360130ed 62
Rohit Grover 1:4769360130ed 63 void FAIL_C_LOCATION(const char* fileName, int lineNumber)
Rohit Grover 1:4769360130ed 64 {
Rohit Grover 1:4769360130ed 65 UtestShell::getCurrent()->fail("", fileName, lineNumber, TestTerminatorWithoutExceptions());
Rohit Grover 1:4769360130ed 66 }
Rohit Grover 1:4769360130ed 67
Rohit Grover 1:4769360130ed 68 void CHECK_C_LOCATION(int condition, const char* conditionString, const char* fileName, int lineNumber)
Rohit Grover 1:4769360130ed 69 {
Rohit Grover 1:4769360130ed 70 UtestShell::getCurrent()->assertTrue(condition != 0, "CHECK_C", conditionString, fileName, lineNumber, TestTerminatorWithoutExceptions());
Rohit Grover 1:4769360130ed 71 }
Rohit Grover 1:4769360130ed 72
Rohit Grover 1:4769360130ed 73 enum { NO_COUNTDOWN = -1, OUT_OF_MEMORRY = 0 };
Rohit Grover 1:4769360130ed 74 static int malloc_out_of_memory_counter = NO_COUNTDOWN;
Rohit Grover 1:4769360130ed 75 static int malloc_count = 0;
Rohit Grover 1:4769360130ed 76
Rohit Grover 1:4769360130ed 77 void cpputest_malloc_count_reset(void)
Rohit Grover 1:4769360130ed 78 {
Rohit Grover 1:4769360130ed 79 malloc_count = 0;
Rohit Grover 1:4769360130ed 80 }
Rohit Grover 1:4769360130ed 81
Rohit Grover 1:4769360130ed 82 int cpputest_malloc_get_count()
Rohit Grover 1:4769360130ed 83 {
Rohit Grover 1:4769360130ed 84 return malloc_count;
Rohit Grover 1:4769360130ed 85 }
Rohit Grover 1:4769360130ed 86
Rohit Grover 1:4769360130ed 87 void cpputest_malloc_set_out_of_memory()
Rohit Grover 1:4769360130ed 88 {
Rohit Grover 1:4769360130ed 89 setCurrentMallocAllocator(NullUnknownAllocator::defaultAllocator());
Rohit Grover 1:4769360130ed 90 }
Rohit Grover 1:4769360130ed 91
Rohit Grover 1:4769360130ed 92 void cpputest_malloc_set_not_out_of_memory()
Rohit Grover 1:4769360130ed 93 {
Rohit Grover 1:4769360130ed 94 malloc_out_of_memory_counter = NO_COUNTDOWN;
Rohit Grover 1:4769360130ed 95 setCurrentMallocAllocatorToDefault();
Rohit Grover 1:4769360130ed 96 }
Rohit Grover 1:4769360130ed 97
Rohit Grover 1:4769360130ed 98 void cpputest_malloc_set_out_of_memory_countdown(int count)
Rohit Grover 1:4769360130ed 99 {
Rohit Grover 1:4769360130ed 100 malloc_out_of_memory_counter = count;
Rohit Grover 1:4769360130ed 101 if (malloc_out_of_memory_counter == OUT_OF_MEMORRY)
Rohit Grover 1:4769360130ed 102 cpputest_malloc_set_out_of_memory();
Rohit Grover 1:4769360130ed 103 }
Rohit Grover 1:4769360130ed 104
Rohit Grover 1:4769360130ed 105 void* cpputest_malloc(size_t size)
Rohit Grover 1:4769360130ed 106 {
Rohit Grover 1:4769360130ed 107 return cpputest_malloc_location(size, "<unknown>", 0);
Rohit Grover 1:4769360130ed 108 }
Rohit Grover 1:4769360130ed 109
Rohit Grover 1:4769360130ed 110 void* cpputest_calloc(size_t num, size_t size)
Rohit Grover 1:4769360130ed 111 {
Rohit Grover 1:4769360130ed 112 return cpputest_calloc_location(num, size, "<unknown>", 0);
Rohit Grover 1:4769360130ed 113 }
Rohit Grover 1:4769360130ed 114
Rohit Grover 1:4769360130ed 115 void* cpputest_realloc(void* ptr, size_t size)
Rohit Grover 1:4769360130ed 116 {
Rohit Grover 1:4769360130ed 117 return cpputest_realloc_location(ptr, size, "<unknown>", 0);
Rohit Grover 1:4769360130ed 118 }
Rohit Grover 1:4769360130ed 119
Rohit Grover 1:4769360130ed 120 void cpputest_free(void* buffer)
Rohit Grover 1:4769360130ed 121 {
Rohit Grover 1:4769360130ed 122 cpputest_free_location(buffer, "<unknown>", 0);
Rohit Grover 1:4769360130ed 123 }
Rohit Grover 1:4769360130ed 124
Rohit Grover 1:4769360130ed 125 static void countdown()
Rohit Grover 1:4769360130ed 126 {
Rohit Grover 1:4769360130ed 127 if (malloc_out_of_memory_counter <= NO_COUNTDOWN)
Rohit Grover 1:4769360130ed 128 return;
Rohit Grover 1:4769360130ed 129
Rohit Grover 1:4769360130ed 130 if (malloc_out_of_memory_counter == OUT_OF_MEMORRY)
Rohit Grover 1:4769360130ed 131 return;
Rohit Grover 1:4769360130ed 132
Rohit Grover 1:4769360130ed 133 malloc_out_of_memory_counter--;
Rohit Grover 1:4769360130ed 134
Rohit Grover 1:4769360130ed 135 if (malloc_out_of_memory_counter == OUT_OF_MEMORRY)
Rohit Grover 1:4769360130ed 136 cpputest_malloc_set_out_of_memory();
Rohit Grover 1:4769360130ed 137 }
Rohit Grover 1:4769360130ed 138
Rohit Grover 1:4769360130ed 139 void* cpputest_malloc_location(size_t size, const char* file, int line)
Rohit Grover 1:4769360130ed 140 {
Rohit Grover 1:4769360130ed 141 countdown();
Rohit Grover 1:4769360130ed 142 malloc_count++;
Rohit Grover 1:4769360130ed 143 return cpputest_malloc_location_with_leak_detection(size, file, line);
Rohit Grover 1:4769360130ed 144 }
Rohit Grover 1:4769360130ed 145
Rohit Grover 1:4769360130ed 146 void* cpputest_calloc_location(size_t num, size_t size, const char* file, int line)
Rohit Grover 1:4769360130ed 147 {
Rohit Grover 1:4769360130ed 148 void* mem = cpputest_malloc_location(num * size, file, line);
rgrover1 0:0b799af9d58e 149 if (mem)
Rohit Grover 1:4769360130ed 150 PlatformSpecificMemset(mem, 0, num*size);
Rohit Grover 1:4769360130ed 151 return mem;
Rohit Grover 1:4769360130ed 152 }
Rohit Grover 1:4769360130ed 153
Rohit Grover 1:4769360130ed 154 void* cpputest_realloc_location(void* memory, size_t size, const char* file, int line)
Rohit Grover 1:4769360130ed 155 {
Rohit Grover 1:4769360130ed 156 return cpputest_realloc_location_with_leak_detection(memory, size, file, line);
Rohit Grover 1:4769360130ed 157 }
Rohit Grover 1:4769360130ed 158
Rohit Grover 1:4769360130ed 159 void cpputest_free_location(void* buffer, const char* file, int line)
Rohit Grover 1:4769360130ed 160 {
Rohit Grover 1:4769360130ed 161 cpputest_free_location_with_leak_detection(buffer, file, line);
Rohit Grover 1:4769360130ed 162 }
Rohit Grover 1:4769360130ed 163
Rohit Grover 1:4769360130ed 164 }