12ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Copyright 2009 The RE2 Authors. All Rights Reserved. 22ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Use of this source code is governed by a BSD-style 32ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// license that can be found in the LICENSE file. 42ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 52ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#ifndef RE2_UTIL_TEST_H__ 62ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define RE2_UTIL_TEST_H__ 72ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 82ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#include "util/util.h" 92ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#include "util/flags.h" 102ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 112ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define TEST(x, y) \ 122ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void x##y(void); \ 132ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson TestRegisterer r##x##y(x##y, # x "." # y); \ 142ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void x##y(void) 152ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 162ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonvoid RegisterTest(void (*)(void), const char*); 172ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 182ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonclass TestRegisterer { 192ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson public: 202ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson TestRegisterer(void (*fn)(void), const char *s) { 212ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson RegisterTest(fn, s); 222ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson } 232ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson}; 242ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 252ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// TODO(rsc): Do a better job. 262ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_EQ CHECK_EQ 272ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_TRUE CHECK 282ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_LT CHECK_LT 292ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_GT CHECK_GT 302ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_LE CHECK_LE 312ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_GE CHECK_GE 322ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_FALSE(x) CHECK(!(x)) 332ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 342ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define ARRAYSIZE arraysize 352ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 362ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_TRUE_M(x, y) CHECK(x) << (y) 372ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define EXPECT_FALSE_M(x, y) CHECK(!(x)) << (y) 382ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define ASSERT_TRUE_M(x, y) CHECK(x) << (y) 392ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define ASSERT_EQUALS(x, y) CHECK_EQ(x, y) 402ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 412ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonconst bool UsingMallocCounter = false; 422ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonnamespace testing { 432ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonclass MallocCounter { 442ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson public: 452ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson MallocCounter(int x) { } 462ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson static const int THIS_THREAD_ONLY = 0; 472ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson long long HeapGrowth() { return 0; } 482ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson long long PeakHeapGrowth() { return 0; } 492ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void Reset() { } 502ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson}; 512ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson} // namespace testing 522ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 532ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonnamespace re2 { 542ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonint64 VirtualProcessSize(); 552ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson} // namespace re2 562ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 572ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#endif // RE2_UTIL_TEST_H__ 58