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