127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// Copyright 2005, Google Inc. 227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// All rights reserved. 327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// 427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// Redistribution and use in source and binary forms, with or without 527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// modification, are permitted provided that the following conditions are 627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// met: 727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// 827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// * Redistributions of source code must retain the above copyright 927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// notice, this list of conditions and the following disclaimer. 1027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// * Redistributions in binary form must reproduce the above 1127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// copyright notice, this list of conditions and the following disclaimer 1227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// in the documentation and/or other materials provided with the 1327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// distribution. 1427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// * Neither the name of Google Inc. nor the names of its 1527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// contributors may be used to endorse or promote products derived from 1627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// this software without specific prior written permission. 172272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi// 1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// 3027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// Author: wan@google.com (Zhanyong Wan) 318d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang 328d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang// Unit test for Google Test test filters. 338d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang// 3427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// A user can specify which test(s) in a Google Test program to run via 3527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// either the GTEST_FILTER environment variable or the --gtest_filter 368f00151cbe693d52f3e233757c57fab3b6396d21Gloria Wang// flag. This is used for testing such functionality. 378f00151cbe693d52f3e233757c57fab3b6396d21Gloria Wang// 388f00151cbe693d52f3e233757c57fab3b6396d21Gloria Wang// The program will be invoked from a Python unit test. Don't run it 398f00151cbe693d52f3e233757c57fab3b6396d21Gloria Wang// directly. 4027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 4127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <gtest/gtest.h> 4227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 4327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshinamespace { 442272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi 4527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// Test case FooTest. 4627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 4727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass FooTest : public testing::Test { 488d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang}; 498d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang 5027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST_F(FooTest, Abc) { 5127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 5227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 5327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST_F(FooTest, Xyz) { 5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi FAIL() << "Expected failure."; 5527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 575ff1dd576bb93c45b44088a51544a18fc43ebf58Steve Block// Test case BarTest. 5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(BarTest, TestOne) { 6027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(BarTest, TestTwo) { 638d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang} 648d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang 658d2577b9ac2f95f218db59a78447efd3c6a742ddGloria WangTEST(BarTest, TestThree) { 668d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang} 678d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang 6827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(BarTest, DISABLED_TestFour) { 698d2577b9ac2f95f218db59a78447efd3c6a742ddGloria Wang FAIL() << "Expected failure."; 7027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 72e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi AimiTEST(BarTest, DISABLED_TestFive) { 73e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi FAIL() << "Expected failure."; 7427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 76e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi// Test case BazTest. 77e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi 7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(BazTest, TestOne) { 7927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi FAIL() << "Expected failure."; 8027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 81b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang 82b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria WangTEST(BazTest, TestA) { 8327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 8427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 85c618b5af98dec06d49374a61a5a94016f9fec2d3Takeshi AimiTEST(BazTest, TestB) { 86c618b5af98dec06d49374a61a5a94016f9fec2d3Takeshi Aimi} 8727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 8827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(BazTest, DISABLED_TestC) { 89b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang FAIL() << "Expected failure."; 90b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang} 9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// Test case HasDeathTest 9327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(HasDeathTest, Test1) { 9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*"); 9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 9727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// We need at least two death tests to make sure that the all death tests 9927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// aren't on the first shard. 10027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(HasDeathTest, Test2) { 10127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*"); 102b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang} 103b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang 10427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// Test case FoobarTest 10527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 10627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST(DISABLED_FoobarTest, Test1) { 10727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi FAIL() << "Expected failure."; 1083473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi} 1093473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi 1103473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi AimiTEST(DISABLED_FoobarTest, DISABLED_Test2) { 1113473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi FAIL() << "Expected failure."; 1123473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi} 1133473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi 1143473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi// Test case FoobarbazTest 1153473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi 116b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria WangTEST(DISABLED_FoobarbazTest, TestA) { 117b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang FAIL() << "Expected failure."; 11827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 11927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 12027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#if GTEST_HAS_PARAM_TEST 12127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass ParamTest : public testing::TestWithParam<int> { 12227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}; 12327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 12427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST_P(ParamTest, TestX) { 125b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang} 126b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang 12727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiTEST_P(ParamTest, TestY) { 12827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 12927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 13027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiINSTANTIATE_TEST_CASE_P(SeqP, ParamTest, testing::Values(1, 2)); 13127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiINSTANTIATE_TEST_CASE_P(SeqQ, ParamTest, testing::Values(5, 6)); 13227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#endif // GTEST_HAS_PARAM_TEST 13327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 134b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang} // namespace 135b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang 13627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint main(int argc, char **argv) { 13727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi ::testing::InitGoogleTest(&argc, argv); 13827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 13927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return RUN_ALL_TESTS(); 14027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 14127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi