12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// Copyright 2009 The RE2 Authors.  All Rights Reserved.
22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// Use of this source code is governed by a BSD-style
32d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// license that can be found in the LICENSE file.
42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#ifndef RE2_UTIL_TEST_H__
62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define RE2_UTIL_TEST_H__
72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "util/util.h"
92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "util/flags.h"
102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define TEST(x, y) \
122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines	void x##y(void); \
132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines	TestRegisterer r##x##y(x##y, # x "." # y); \
142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines	void x##y(void)
152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesvoid RegisterTest(void (*)(void), const char*);
172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesclass TestRegisterer {
192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines public:
202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines  TestRegisterer(void (*fn)(void), const char *s) {
212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines    RegisterTest(fn, s);
222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines  }
232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines};
242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// TODO(rsc): Do a better job.
262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EXPECT_EQ CHECK_EQ
272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EXPECT_TRUE CHECK
282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EXPECT_LT CHECK_LT
292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EXPECT_GT CHECK_GT
302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EXPECT_LE CHECK_LE
312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EXPECT_GE CHECK_GE
322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EXPECT_FALSE(x) CHECK(!(x))
33
34#define ARRAYSIZE arraysize
35
36#define EXPECT_TRUE_M(x, y) CHECK(x) << (y)
37#define EXPECT_FALSE_M(x, y) CHECK(!(x)) << (y)
38#define ASSERT_TRUE_M(x, y) CHECK(x) << (y)
39#define ASSERT_EQUALS(x, y) CHECK_EQ(x, y)
40
41const bool UsingMallocCounter = false;
42namespace testing {
43class MallocCounter {
44 public:
45  MallocCounter(int x) { }
46  static const int THIS_THREAD_ONLY = 0;
47  long long HeapGrowth() { return 0; }
48  long long PeakHeapGrowth() { return 0; }
49  void Reset() { }
50};
51}  // namespace testing
52
53namespace re2 {
54int64 VirtualProcessSize();
55} // namespace re2
56
57#endif  // RE2_UTIL_TEST_H__
58