1acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// Copyright 2008 Google Inc.
2acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// All Rights Reserved.
3acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian//
4acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// Redistribution and use in source and binary forms, with or without
5acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// modification, are permitted provided that the following conditions are
6acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// met:
7acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian//
8acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian//     * Redistributions of source code must retain the above copyright
9acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// notice, this list of conditions and the following disclaimer.
10acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian//     * Redistributions in binary form must reproduce the above
11acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// copyright notice, this list of conditions and the following disclaimer
12acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// in the documentation and/or other materials provided with the
13acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// distribution.
14acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian//     * Neither the name of Google Inc. nor the names of its
15acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// contributors may be used to endorse or promote products derived from
16acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// this software without specific prior written permission.
17acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian//
18acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian//
30acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// Author: wan@google.com (Zhanyong Wan)
31acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
32acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian#ifndef GTEST_TEST_GTEST_TYPED_TEST_TEST_H_
33acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian#define GTEST_TEST_GTEST_TYPED_TEST_TEST_H_
34acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
352620c79810d4741922e9fa89050c0af564994f24zhanyong.wan#include "gtest/gtest.h"
36acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
374cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#if GTEST_HAS_TYPED_TEST_P
38acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
39acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqianusing testing::Test;
40acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
41acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// For testing that the same type-parameterized test case can be
42acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// instantiated in different translation units linked together.
43acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// ContainerTest will be instantiated in both gtest-typed-test_test.cc
44acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian// and gtest-typed-test2_test.cc.
45acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
46acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqiantemplate <typename T>
47acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqianclass ContainerTest : public Test {
48acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian};
49acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
50acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqianTYPED_TEST_CASE_P(ContainerTest);
51acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
52acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqianTYPED_TEST_P(ContainerTest, CanBeDefaultConstructed) {
53acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian  TypeParam container;
54acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian}
55acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
56acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqianTYPED_TEST_P(ContainerTest, InitialSizeIsZero) {
57acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian  TypeParam container;
58a773ef8a3b70936450c94bdcba1e6345a980244ezhanyong.wan  EXPECT_EQ(0U, container.size());
59acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian}
60acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
61acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqianREGISTER_TYPED_TEST_CASE_P(ContainerTest,
62acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian                           CanBeDefaultConstructed, InitialSizeIsZero);
63acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
64acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian#endif  // GTEST_HAS_TYPED_TEST_P
65acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian
66acc68fa2ae88d0ab46bff0afdccd2554350f1b5fshiqian#endif  // GTEST_TEST_GTEST_TYPED_TEST_TEST_H_
67