fork

Fork of cpputest by Rohit Grover

Committer:
Kojto
Date:
Wed May 13 13:20:35 2015 +0000
Revision:
3:9e8c8907d9ee
Parent:
0:0b799af9d58e
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 #ifndef D_TestMemoryAllocator_h
rgrover1 0:0b799af9d58e 29 #define D_TestMemoryAllocator_h
rgrover1 0:0b799af9d58e 30
rgrover1 0:0b799af9d58e 31 struct MemoryLeakNode;
rgrover1 0:0b799af9d58e 32 class TestMemoryAllocator;
rgrover1 0:0b799af9d58e 33
rgrover1 0:0b799af9d58e 34 extern void setCurrentNewAllocator(TestMemoryAllocator* allocator);
rgrover1 0:0b799af9d58e 35 extern TestMemoryAllocator* getCurrentNewAllocator();
rgrover1 0:0b799af9d58e 36 extern void setCurrentNewAllocatorToDefault();
rgrover1 0:0b799af9d58e 37 extern TestMemoryAllocator* defaultNewAllocator();
rgrover1 0:0b799af9d58e 38
rgrover1 0:0b799af9d58e 39 extern void setCurrentNewArrayAllocator(TestMemoryAllocator* allocator);
rgrover1 0:0b799af9d58e 40 extern TestMemoryAllocator* getCurrentNewArrayAllocator();
rgrover1 0:0b799af9d58e 41 extern void setCurrentNewArrayAllocatorToDefault();
rgrover1 0:0b799af9d58e 42 extern TestMemoryAllocator* defaultNewArrayAllocator();
rgrover1 0:0b799af9d58e 43
rgrover1 0:0b799af9d58e 44 extern void setCurrentMallocAllocator(TestMemoryAllocator* allocator);
rgrover1 0:0b799af9d58e 45 extern TestMemoryAllocator* getCurrentMallocAllocator();
rgrover1 0:0b799af9d58e 46 extern void setCurrentMallocAllocatorToDefault();
rgrover1 0:0b799af9d58e 47 extern TestMemoryAllocator* defaultMallocAllocator();
rgrover1 0:0b799af9d58e 48
rgrover1 0:0b799af9d58e 49 class TestMemoryAllocator
rgrover1 0:0b799af9d58e 50 {
rgrover1 0:0b799af9d58e 51 public:
rgrover1 0:0b799af9d58e 52 TestMemoryAllocator(const char* name_str = "generic", const char* alloc_name_str = "alloc", const char* free_name_str = "free");
rgrover1 0:0b799af9d58e 53 virtual ~TestMemoryAllocator();
rgrover1 0:0b799af9d58e 54 bool hasBeenDestroyed();
rgrover1 0:0b799af9d58e 55
rgrover1 0:0b799af9d58e 56 virtual char* alloc_memory(size_t size, const char* file, int line);
rgrover1 0:0b799af9d58e 57 virtual void free_memory(char* memory, const char* file, int line);
rgrover1 0:0b799af9d58e 58
rgrover1 0:0b799af9d58e 59 virtual const char* name();
rgrover1 0:0b799af9d58e 60 virtual const char* alloc_name();
rgrover1 0:0b799af9d58e 61 virtual const char* free_name();
rgrover1 0:0b799af9d58e 62
rgrover1 0:0b799af9d58e 63 virtual bool isOfEqualType(TestMemoryAllocator* allocator);
rgrover1 0:0b799af9d58e 64
rgrover1 0:0b799af9d58e 65 virtual char* allocMemoryLeakNode(size_t size);
rgrover1 0:0b799af9d58e 66 virtual void freeMemoryLeakNode(char* memory);
rgrover1 0:0b799af9d58e 67
rgrover1 0:0b799af9d58e 68 protected:
rgrover1 0:0b799af9d58e 69
rgrover1 0:0b799af9d58e 70 const char* name_;
rgrover1 0:0b799af9d58e 71 const char* alloc_name_;
rgrover1 0:0b799af9d58e 72 const char* free_name_;
rgrover1 0:0b799af9d58e 73
rgrover1 0:0b799af9d58e 74 bool hasBeenDestroyed_;
rgrover1 0:0b799af9d58e 75 };
rgrover1 0:0b799af9d58e 76
rgrover1 0:0b799af9d58e 77 class CrashOnAllocationAllocator : public TestMemoryAllocator
rgrover1 0:0b799af9d58e 78 {
rgrover1 0:0b799af9d58e 79 unsigned allocationToCrashOn_;
rgrover1 0:0b799af9d58e 80 public:
rgrover1 0:0b799af9d58e 81 CrashOnAllocationAllocator();
rgrover1 0:0b799af9d58e 82
rgrover1 0:0b799af9d58e 83 virtual void setNumberToCrashOn(unsigned allocationToCrashOn);
rgrover1 0:0b799af9d58e 84
rgrover1 0:0b799af9d58e 85 virtual char* alloc_memory(size_t size, const char* file, int line) _override;
rgrover1 0:0b799af9d58e 86 };
rgrover1 0:0b799af9d58e 87
rgrover1 0:0b799af9d58e 88
rgrover1 0:0b799af9d58e 89 class NullUnknownAllocator: public TestMemoryAllocator
rgrover1 0:0b799af9d58e 90 {
rgrover1 0:0b799af9d58e 91 public:
rgrover1 0:0b799af9d58e 92 NullUnknownAllocator();
rgrover1 0:0b799af9d58e 93 virtual char* alloc_memory(size_t size, const char* file, int line) _override;
rgrover1 0:0b799af9d58e 94 virtual void free_memory(char* memory, const char* file, int line) _override;
rgrover1 0:0b799af9d58e 95
rgrover1 0:0b799af9d58e 96 static TestMemoryAllocator* defaultAllocator();
rgrover1 0:0b799af9d58e 97 };
rgrover1 0:0b799af9d58e 98
rgrover1 0:0b799af9d58e 99 #endif
rgrover1 0:0b799af9d58e 100