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