1dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Copyright 2005, Google Inc.
2dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// All rights reserved.
3dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
4dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Redistribution and use in source and binary forms, with or without
5dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// modification, are permitted provided that the following conditions are
6dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// met:
7dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
8dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//     * Redistributions of source code must retain the above copyright
9dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// notice, this list of conditions and the following disclaimer.
10dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//     * Redistributions in binary form must reproduce the above
11dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// copyright notice, this list of conditions and the following disclaimer
12dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// in the documentation and/or other materials provided with the
13dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// distribution.
14dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//     * Neither the name of Google Inc. nor the names of its
15dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// contributors may be used to endorse or promote products derived from
16dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// this software without specific prior written permission.
17dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
18dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
30dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Author: wan@google.com (Zhanyong Wan)
31dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
32dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Unit test for Google Test test filters.
33dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
34dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// A user can specify which test(s) in a Google Test program to run via
35dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// either the GTEST_FILTER environment variable or the --gtest_filter
36dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// flag.  This is used for testing such functionality.
37dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
38dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// The program will be invoked from a Python unit test.  Don't run it
39dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// directly.
40dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
4146108a219a4b812dd8f36fee479a0340ea5963f5Ben Chan#include "gtest/gtest.h"
42dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
43dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixternamespace {
44dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
45dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Test case FooTest.
46dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
47dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixterclass FooTest : public testing::Test {
48dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter};
49dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
50dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST_F(FooTest, Abc) {
51dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
52dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
53dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST_F(FooTest, Xyz) {
54dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
55dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
56dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
57dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Test case BarTest.
58dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
59dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BarTest, TestOne) {
60dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
61dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
62dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BarTest, TestTwo) {
63dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
64dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
65dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BarTest, TestThree) {
66dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
67dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
68dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BarTest, DISABLED_TestFour) {
69dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
70dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
71dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
72dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BarTest, DISABLED_TestFive) {
73dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
74dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
75dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
76dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Test case BazTest.
77dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
78dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BazTest, TestOne) {
79dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
80dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
81dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
82dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BazTest, TestA) {
83dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
84dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
85dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BazTest, TestB) {
86dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
87dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
88dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(BazTest, DISABLED_TestC) {
89dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
90dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
91dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
92dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Test case HasDeathTest
93dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
94dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(HasDeathTest, Test1) {
9546108a219a4b812dd8f36fee479a0340ea5963f5Ben Chan  EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*");
96dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
97dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
98dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// We need at least two death tests to make sure that the all death tests
99dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// aren't on the first shard.
100dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(HasDeathTest, Test2) {
10146108a219a4b812dd8f36fee479a0340ea5963f5Ben Chan  EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*");
102dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
103dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
104dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Test case FoobarTest
105dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
106dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(DISABLED_FoobarTest, Test1) {
107dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
108dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
109dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
110dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(DISABLED_FoobarTest, DISABLED_Test2) {
111dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
112dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
113dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
114dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Test case FoobarbazTest
115dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
116dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(DISABLED_FoobarbazTest, TestA) {
117dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  FAIL() << "Expected failure.";
118dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
119dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
120dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter#if GTEST_HAS_PARAM_TEST
121dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixterclass ParamTest : public testing::TestWithParam<int> {
122dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter};
123dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
124dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST_P(ParamTest, TestX) {
125dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
126dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
127dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST_P(ParamTest, TestY) {
128dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
129dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
130dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterINSTANTIATE_TEST_CASE_P(SeqP, ParamTest, testing::Values(1, 2));
131dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterINSTANTIATE_TEST_CASE_P(SeqQ, ParamTest, testing::Values(5, 6));
132dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter#endif  // GTEST_HAS_PARAM_TEST
133dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
134dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}  // namespace
135dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
136dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixterint main(int argc, char **argv) {
137dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  ::testing::InitGoogleTest(&argc, argv);
138dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
139dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  return RUN_ALL_TESTS();
140dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
141