cctest.h revision a7e24c173cf37484693b9abb38e494fa7bd7baeb
1// Copyright 2008 the V8 project authors. All rights reserved. 2// Redistribution and use in source and binary forms, with or without 3// modification, are permitted provided that the following conditions are 4// met: 5// 6// * Redistributions of source code must retain the above copyright 7// notice, this list of conditions and the following disclaimer. 8// * Redistributions in binary form must reproduce the above 9// copyright notice, this list of conditions and the following 10// disclaimer in the documentation and/or other materials provided 11// with the distribution. 12// * Neither the name of Google Inc. nor the names of its 13// contributors may be used to endorse or promote products derived 14// from this software without specific prior written permission. 15// 16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28#ifndef CCTEST_H_ 29#define CCTEST_H_ 30 31#ifndef TEST 32#define TEST(Name) \ 33 static void Test##Name(); \ 34 CcTest register_test_##Name(Test##Name, __FILE__, #Name, NULL, true); \ 35 static void Test##Name() 36#endif 37 38#ifndef DEPENDENT_TEST 39#define DEPENDENT_TEST(Name, Dep) \ 40 static void Test##Name(); \ 41 CcTest register_test_##Name(Test##Name, __FILE__, #Name, #Dep, true); \ 42 static void Test##Name() 43#endif 44 45#ifndef DISABLED_TEST 46#define DISABLED_TEST(Name) \ 47 static void Test##Name(); \ 48 CcTest register_test_##Name(Test##Name, __FILE__, #Name, NULL, false); \ 49 static void Test##Name() 50#endif 51 52class CcTest { 53 public: 54 typedef void (TestFunction)(); 55 CcTest(TestFunction* callback, const char* file, const char* name, 56 const char* dependency, bool enabled); 57 void Run() { callback_(); } 58 static int test_count(); 59 static CcTest* last() { return last_; } 60 CcTest* prev() { return prev_; } 61 const char* file() { return file_; } 62 const char* name() { return name_; } 63 const char* dependency() { return dependency_; } 64 bool enabled() { return enabled_; } 65 private: 66 TestFunction* callback_; 67 const char* file_; 68 const char* name_; 69 const char* dependency_; 70 bool enabled_; 71 static CcTest* last_; 72 CcTest* prev_; 73}; 74 75#endif // ifndef CCTEST_H_ 76