1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Copyright 2007, Google Inc.
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// All rights reserved.
3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Redistribution and use in source and binary forms, with or without
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// modification, are permitted provided that the following conditions are
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// met:
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//     * Redistributions of source code must retain the above copyright
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// notice, this list of conditions and the following disclaimer.
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//     * Redistributions in binary form must reproduce the above
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// copyright notice, this list of conditions and the following disclaimer
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// in the documentation and/or other materials provided with the
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// distribution.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//     * Neither the name of Google Inc. nor the names of its
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// contributors may be used to endorse or promote products derived from
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// this software without specific prior written permission.
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Author: wan@google.com (Zhanyong Wan)
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// This file is the input to a negative-compilation test for Google
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Test.  Code here is NOT supposed to compile.  Its purpose is to
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// verify that certain incorrect usages of the Google Test API are
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// indeed rejected by the compiler.
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// We still need to write the negative-compilation test itself, which
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// will be tightly coupled with the build environment.
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project//
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// TODO(wan@google.com): finish the negative-compilation test.
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef TEST_CANNOT_IGNORE_RUN_ALL_TESTS_RESULT
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the result of RUN_ALL_TESTS() cannot be ignored.
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectint main(int argc, char** argv) {
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  testing::InitGoogleTest(&argc, argv);
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  RUN_ALL_TESTS();  // This line shouldn't compile.
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_USER_CANNOT_INCLUDE_GTEST_INTERNAL_INL_H)
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that a user cannot include gtest-internal-inl.h in his code.
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "src/gtest-internal-inl.h"
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_DECLARING_SETUP_IN_TEST_FIXTURE_WITH_TYPO)
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches the typo when a user declares a
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Setup() method in a test fixture.
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass MyTest : public testing::Test {
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project protected:
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  void Setup() {}
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_CALLING_SETUP_IN_TEST_WITH_TYPO)
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches the typo when a user calls Setup()
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// from a test fixture.
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass MyTest : public testing::Test {
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project protected:
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  virtual void SetUp() {
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    testing::Test::Setup();  // Tries to call SetUp() in the parent class.
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  }
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_DECLARING_SETUP_IN_ENVIRONMENT_WITH_TYPO)
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches the typo when a user declares a
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Setup() method in a subclass of Environment.
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass MyEnvironment : public testing::Environment {
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project public:
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  void Setup() {}
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_CALLING_SETUP_IN_ENVIRONMENT_WITH_TYPO)
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches the typo when a user calls Setup()
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// in an Environment.
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass MyEnvironment : public testing::Environment {
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project protected:
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  virtual void SetUp() {
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    // Tries to call SetUp() in the parent class.
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    testing::Environment::Setup();
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  }
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_WRONG_CASE_IN_TYPED_TEST_P)
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches using the wrong test case name in
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// TYPED_TEST_P.
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass FooTest : public testing::Test {
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass BarTest : public testing::Test {
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_CASE_P(FooTest);
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_P(BarTest, A) {}  // Wrong test case name.
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectREGISTER_TYPED_TEST_CASE_P(FooTest, A);
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectINSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types<int>);
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_WRONG_CASE_IN_REGISTER_TYPED_TEST_CASE_P)
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches using the wrong test case name in
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// REGISTER_TYPED_TEST_CASE_P.
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass FooTest : public testing::Test {
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass BarTest : public testing::Test {
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_CASE_P(FooTest);
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_P(FooTest, A) {}
141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectREGISTER_TYPED_TEST_CASE_P(BarTest, A);  // Wrong test case name.
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectINSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types<int>);
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_WRONG_CASE_IN_INSTANTIATE_TYPED_TEST_CASE_P)
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches using the wrong test case name in
146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// INSTANTIATE_TYPED_TEST_CASE_P.
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass FooTest : public testing::Test {
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass BarTest : public testing::Test {
156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_CASE_P(FooTest);
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_P(FooTest, A) {}
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectREGISTER_TYPED_TEST_CASE_P(FooTest, A);
161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Wrong test case name.
163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectINSTANTIATE_TYPED_TEST_CASE_P(My, BarTest, testing::Types<int>);
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_CATCHES_INSTANTIATE_TYPED_TESET_CASE_P_WITH_SAME_NAME_PREFIX)
166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that the compiler catches instantiating TYPED_TEST_CASE_P
167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// twice with the same name prefix.
168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass FooTest : public testing::Test {
173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_CASE_P(FooTest);
176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTYPED_TEST_P(FooTest, A) {}
177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectREGISTER_TYPED_TEST_CASE_P(FooTest, A);
178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectINSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types<int>);
180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Wrong name prefix: "My" has been used.
182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectINSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, testing::Types<double>);
183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_IS_NOT_A_TYPE)
185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that StaticAssertTypeEq<T1, T2> cannot be used as a type.
189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttesting::StaticAssertTypeEq<int, int> dummy;
190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_WORKS_IN_NAMESPACE)
192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// Tests that StaticAssertTypeEq<T1, T2> works in a namespace scope.
196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectstatic bool dummy = testing::StaticAssertTypeEq<int, const int>();
197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_WORKS_IN_CLASS)
199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttemplate <typename T>
203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass Helper {
204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project public:
205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  // Tests that StaticAssertTypeEq<T1, T2> works in a class.
206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  Helper() { testing::StaticAssertTypeEq<int, T>(); }
207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  void DoSomething() {}
209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid Test() {
212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  Helper<bool> h;
213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  h.DoSomething();  // To avoid the "unused variable" warning.
214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#elif defined(TEST_STATIC_ASSERT_TYPE_EQ_WORKS_IN_FUNCTION)
217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid Test() {
221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  // Tests that StaticAssertTypeEq<T1, T2> works inside a function.
222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  testing::StaticAssertTypeEq<const int, int>();
223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project// A sanity test.  This should compile.
227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <gtest/gtest.h>
229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectint main() {
231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project  return RUN_ALL_TESTS();
232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project