gtest-test-part_test.cc revision 1be2c9def7187e4e643c00a31dd9986395795d7d
1// Copyright 2008 Google Inc. All Rights Reserved.
2// Author: mheule@google.com (Markus Heule)
3
4#include <gtest/gtest-test-part.h>
5
6#include <gtest/gtest.h>
7
8using testing::Test;
9using testing::TestPartResult;
10using testing::TestPartResultArray;
11
12using testing::TPRT_FATAL_FAILURE;
13using testing::TPRT_NONFATAL_FAILURE;
14using testing::TPRT_SUCCESS;
15
16namespace {
17
18// Tests the TestPartResult class.
19
20// The test fixture for testing TestPartResult.
21class TestPartResultTest : public Test {
22 protected:
23  TestPartResultTest()
24      : r1_(TPRT_SUCCESS, "foo/bar.cc", 10, "Success!"),
25        r2_(TPRT_NONFATAL_FAILURE, "foo/bar.cc", -1, "Failure!"),
26        r3_(TPRT_FATAL_FAILURE, NULL, -1, "Failure!") {}
27
28  TestPartResult r1_, r2_, r3_;
29};
30
31// Tests TestPartResult::type().
32TEST_F(TestPartResultTest, type) {
33  EXPECT_EQ(TPRT_SUCCESS, r1_.type());
34  EXPECT_EQ(TPRT_NONFATAL_FAILURE, r2_.type());
35  EXPECT_EQ(TPRT_FATAL_FAILURE, r3_.type());
36}
37
38// Tests TestPartResult::file_name().
39TEST_F(TestPartResultTest, file_name) {
40  EXPECT_STREQ("foo/bar.cc", r1_.file_name());
41  EXPECT_STREQ(NULL, r3_.file_name());
42}
43
44// Tests TestPartResult::line_number().
45TEST_F(TestPartResultTest, line_number) {
46  EXPECT_EQ(10, r1_.line_number());
47  EXPECT_EQ(-1, r2_.line_number());
48}
49
50// Tests TestPartResult::message().
51TEST_F(TestPartResultTest, message) {
52  EXPECT_STREQ("Success!", r1_.message());
53}
54
55// Tests TestPartResult::passed().
56TEST_F(TestPartResultTest, Passed) {
57  EXPECT_TRUE(r1_.passed());
58  EXPECT_FALSE(r2_.passed());
59  EXPECT_FALSE(r3_.passed());
60}
61
62// Tests TestPartResult::failed().
63TEST_F(TestPartResultTest, Failed) {
64  EXPECT_FALSE(r1_.failed());
65  EXPECT_TRUE(r2_.failed());
66  EXPECT_TRUE(r3_.failed());
67}
68
69// Tests TestPartResult::fatally_failed().
70TEST_F(TestPartResultTest, FatallyFailed) {
71  EXPECT_FALSE(r1_.fatally_failed());
72  EXPECT_FALSE(r2_.fatally_failed());
73  EXPECT_TRUE(r3_.fatally_failed());
74}
75
76// Tests TestPartResult::nonfatally_failed().
77TEST_F(TestPartResultTest, NonfatallyFailed) {
78  EXPECT_FALSE(r1_.nonfatally_failed());
79  EXPECT_TRUE(r2_.nonfatally_failed());
80  EXPECT_FALSE(r3_.nonfatally_failed());
81}
82
83// Tests the TestPartResultArray class.
84
85class TestPartResultArrayTest : public Test {
86 protected:
87  TestPartResultArrayTest()
88      : r1_(TPRT_NONFATAL_FAILURE, "foo/bar.cc", -1, "Failure 1"),
89        r2_(TPRT_FATAL_FAILURE, "foo/bar.cc", -1, "Failure 2") {}
90
91  const TestPartResult r1_, r2_;
92};
93
94// Tests that TestPartResultArray initially has size 0.
95TEST_F(TestPartResultArrayTest, InitialSizeIsZero) {
96  TestPartResultArray results;
97  EXPECT_EQ(0, results.size());
98}
99
100// Tests that TestPartResultArray contains the given TestPartResult
101// after one Append() operation.
102TEST_F(TestPartResultArrayTest, ContainsGivenResultAfterAppend) {
103  TestPartResultArray results;
104  results.Append(r1_);
105  EXPECT_EQ(1, results.size());
106  EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message());
107}
108
109// Tests that TestPartResultArray contains the given TestPartResults
110// after two Append() operations.
111TEST_F(TestPartResultArrayTest, ContainsGivenResultsAfterTwoAppends) {
112  TestPartResultArray results;
113  results.Append(r1_);
114  results.Append(r2_);
115  EXPECT_EQ(2, results.size());
116  EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message());
117  EXPECT_STREQ("Failure 2", results.GetTestPartResult(1).message());
118}
119
120#if GTEST_HAS_DEATH_TEST
121
122typedef TestPartResultArrayTest TestPartResultArrayDeathTest;
123
124// Tests that the program dies when GetTestPartResult() is called with
125// an invalid index.
126TEST_F(TestPartResultArrayDeathTest, DiesWhenIndexIsOutOfBound) {
127  TestPartResultArray results;
128  results.Append(r1_);
129
130  EXPECT_DEATH(results.GetTestPartResult(-1), "");
131  EXPECT_DEATH(results.GetTestPartResult(1), "");
132}
133
134#endif  // GTEST_HAS_DEATH_TEST
135
136// TODO(mheule@google.com): Add a test for the class HasNewFatalFailureHelper.
137
138}  // namespace
139