1d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// Use of this source code is governed by a BSD-style license that can be
3d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// found in the LICENSE file.
4d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott
5d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#ifndef TESTING_PLATFORM_TEST_H_
6d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#define TESTING_PLATFORM_TEST_H_
7d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott
8d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#include <gtest/gtest.h>
9d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott
10d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#if defined(GTEST_OS_MAC)
11d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#ifdef __OBJC__
12d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott@class NSAutoreleasePool;
13d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#else
14d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scottclass NSAutoreleasePool;
15d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#endif
16d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott
17d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// The purpose of this class us to provide a hook for platform-specific
18d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// operations across unit tests.  For example, on the Mac, it creates and
19d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// releases an outer NSAutoreleasePool for each test case.  For now, it's only
20d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// implemented on the Mac.  To enable this for another platform, just adjust
21d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott// the #ifdefs and add a platform_test_<platform>.cc implementation file.
22d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scottclass PlatformTest : public testing::Test {
23d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott protected:
24d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott  PlatformTest();
25d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott  virtual ~PlatformTest();
26d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott
27d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott private:
28d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott  NSAutoreleasePool* pool_;
29d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott};
30d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#else
31d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scotttypedef testing::Test PlatformTest;
32d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#endif // GTEST_OS_MAC
33d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott
34d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#endif // TESTING_PLATFORM_TEST_H_
35