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