blob: f473c7d1a45f1f196b137483b053ca598007d288 [file] [log] [blame]
Austin Schuh0cbef622015-09-06 17:34:52 -07001// Copyright 2006, Google Inc.
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met:
7//
8// * Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10// * Redistributions in binary form must reproduce the above
11// copyright notice, this list of conditions and the following disclaimer
12// in the documentation and/or other materials provided with the
13// distribution.
14// * Neither the name of Google Inc. nor the names of its
15// contributors may be used to endorse or promote products derived from
16// this software without specific prior written permission.
17//
18// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Austin Schuh889ac432018-10-29 22:57:02 -070029
Austin Schuh0cbef622015-09-06 17:34:52 -070030
31// Unit test for Google Test's --gtest_list_tests flag.
32//
33// A user can ask Google Test to list all tests that will run
34// so that when using a filter, a user will know what
35// tests to look for. The tests will not be run after listing.
36//
37// This program will be invoked from a Python unit test.
38// Don't run it directly.
39
40#include "gtest/gtest.h"
41
42// Several different test cases and tests that will be listed.
43TEST(Foo, Bar1) {
44}
45
46TEST(Foo, Bar2) {
47}
48
49TEST(Foo, DISABLED_Bar3) {
50}
51
52TEST(Abc, Xyz) {
53}
54
55TEST(Abc, Def) {
56}
57
58TEST(FooBar, Baz) {
59}
60
61class FooTest : public testing::Test {
62};
63
64TEST_F(FooTest, Test1) {
65}
66
67TEST_F(FooTest, DISABLED_Test2) {
68}
69
70TEST_F(FooTest, Test3) {
71}
72
73TEST(FooDeathTest, Test1) {
74}
75
76// A group of value-parameterized tests.
77
78class MyType {
79 public:
80 explicit MyType(const std::string& a_value) : value_(a_value) {}
81
82 const std::string& value() const { return value_; }
83
84 private:
85 std::string value_;
86};
87
88// Teaches Google Test how to print a MyType.
89void PrintTo(const MyType& x, std::ostream* os) {
90 *os << x.value();
91}
92
93class ValueParamTest : public testing::TestWithParam<MyType> {
94};
95
96TEST_P(ValueParamTest, TestA) {
97}
98
99TEST_P(ValueParamTest, TestB) {
100}
101
102INSTANTIATE_TEST_CASE_P(
103 MyInstantiation, ValueParamTest,
104 testing::Values(MyType("one line"),
105 MyType("two\nlines"),
106 MyType("a very\nloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong line"))); // NOLINT
107
108// A group of typed tests.
109
110// A deliberately long type name for testing the line-truncating
111// behavior when printing a type parameter.
112class VeryLoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogName { // NOLINT
113};
114
115template <typename T>
116class TypedTest : public testing::Test {
117};
118
119template <typename T, int kSize>
120class MyArray {
121};
122
123typedef testing::Types<VeryLoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogName, // NOLINT
124 int*, MyArray<bool, 42> > MyTypes;
125
126TYPED_TEST_CASE(TypedTest, MyTypes);
127
128TYPED_TEST(TypedTest, TestA) {
129}
130
131TYPED_TEST(TypedTest, TestB) {
132}
133
134// A group of type-parameterized tests.
135
136template <typename T>
137class TypeParamTest : public testing::Test {
138};
139
140TYPED_TEST_CASE_P(TypeParamTest);
141
142TYPED_TEST_P(TypeParamTest, TestA) {
143}
144
145TYPED_TEST_P(TypeParamTest, TestB) {
146}
147
148REGISTER_TYPED_TEST_CASE_P(TypeParamTest, TestA, TestB);
149
150INSTANTIATE_TYPED_TEST_CASE_P(My, TypeParamTest, MyTypes);
151
152int main(int argc, char **argv) {
153 ::testing::InitGoogleTest(&argc, argv);
154
155 return RUN_ALL_TESTS();
156}