Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
test
GTestSuite
googletest
googletest
test
gtest_assert_by_exception_test.cc
Go to the documentation of this file.
1
// Copyright 2009, 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.
29
30
31
// Tests Google Test's assert-by-exception mode with exceptions enabled.
32
33
#include "
gtest/gtest.h
"
34
35
#include <stdlib.h>
36
#include <stdio.h>
37
#include <string.h>
38
#include <stdexcept>
39
40
class
ThrowListener
:
public
testing::EmptyTestEventListener
{
41
void
OnTestPartResult
(
const
testing::TestPartResult& result)
override
{
42
if
(result.type() == testing::TestPartResult::kFatalFailure) {
43
throw
testing::AssertionException(result);
44
}
45
}
46
};
47
48
// Prints the given failure message and exits the program with
49
// non-zero. We use this instead of a Google Test assertion to
50
// indicate a failure, as the latter is been tested and cannot be
51
// relied on.
52
void
Fail
(
const
char
* msg) {
53
printf(
"FAILURE: %s\n"
, msg);
54
fflush(stdout);
55
exit(1);
56
}
57
58
static
void
AssertFalse
() {
59
ASSERT_EQ
(2, 3) <<
"Expected failure"
;
60
}
61
62
// Tests that an assertion failure throws a subclass of
63
// std::runtime_error.
64
TEST
(
Test
,
Test
) {
65
// A successful assertion shouldn't throw.
66
try
{
67
EXPECT_EQ
(3, 3);
68
}
catch
(...) {
69
Fail
(
"A successful assertion wrongfully threw."
);
70
}
71
72
// A successful assertion shouldn't throw.
73
try
{
74
EXPECT_EQ
(3, 4);
75
}
catch
(...) {
76
Fail
(
"A failed non-fatal assertion wrongfully threw."
);
77
}
78
79
// A failed assertion should throw.
80
try
{
81
AssertFalse
();
82
}
catch
(
const
testing::AssertionException& e) {
83
if
(strstr(e.what(),
"Expected failure"
) !=
nullptr
)
throw
;
84
85
printf(
"%s"
,
86
"A failed assertion did throw an exception of the right type, "
87
"but the message is incorrect. Instead of containing \"Expected "
88
"failure\", it is:\n"
);
89
Fail
(e.what());
90
}
catch
(...) {
91
Fail
(
"A failed assertion threw the wrong type of exception."
);
92
}
93
Fail
(
"A failed assertion should've thrown but didn't."
);
94
}
95
96
int
kTestForContinuingTest
= 0;
97
98
TEST
(
Test
, Test2) {
99
kTestForContinuingTest
= 1;
100
}
101
102
int
main
(
int
argc,
char
** argv) {
103
testing::InitGoogleTest
(&argc, argv);
104
testing::UnitTest::GetInstance
()->
listeners
().
Append
(
new
ThrowListener
);
105
106
int
result =
RUN_ALL_TESTS
();
107
if
(result == 0) {
108
printf(
"RUN_ALL_TESTS returned %d\n"
, result);
109
Fail
(
"Expected failure instead."
);
110
}
111
112
if
(
kTestForContinuingTest
== 0) {
113
Fail
(
"Should have continued with other tests, but did not."
);
114
}
115
return
0;
116
}
main
int main()
Definition
ad_example.cpp:191
Test
Definition
gtest.h:414
ThrowListener
Definition
gtest_assert_by_exception_test.cc:40
ThrowListener::OnTestPartResult
void OnTestPartResult(const testing::TestPartResult &result) override
Definition
gtest_assert_by_exception_test.cc:41
testing::EmptyTestEventListener
Definition
gtest.h:1157
testing::TestEventListeners::Append
void Append(TestEventListener *listener)
Definition
gtest.cc:4930
testing::UnitTest::GetInstance
static UnitTest * GetInstance()
Definition
gtest.cc:4998
testing::UnitTest::listeners
TestEventListeners & listeners()
Definition
gtest.cc:5129
gtest.h
ASSERT_EQ
#define ASSERT_EQ(val1, val2)
Definition
gtest.h:2068
EXPECT_EQ
#define EXPECT_EQ(val1, val2)
Definition
gtest.h:2038
RUN_ALL_TESTS
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition
gtest.h:2484
TEST
#define TEST(test_suite_name, test_name)
Definition
gtest.h:2348
AssertFalse
static void AssertFalse()
Definition
gtest_assert_by_exception_test.cc:58
kTestForContinuingTest
int kTestForContinuingTest
Definition
gtest_assert_by_exception_test.cc:96
Fail
void Fail(const char *msg)
Definition
gtest_assert_by_exception_test.cc:52
testing::InitGoogleTest
GTEST_API_ void InitGoogleTest()
Definition
gtest.cc:6547
Generated by
1.17.0