Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
remainder
test
LinearSolverSetupFailure
LinearSolverSetupFailure.cpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Teuchos: Common Tools Package
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#include "
Trilinos_LinearSolverSetupFailure.hpp
"
43
#include "
Teuchos_UnitTestHarness.hpp
"
44
#include <type_traits>
45
46
namespace
{
// (anonymous)
47
48
void
throws_LSSF () {
49
throw
Trilinos::LinearSolverSetupFailure
(
"Not an std::runtime_error"
);
50
}
51
52
void
does_not_throw () {
53
}
54
55
void
throws_runtime_error () {
56
throw
std::runtime_error (
"Not a LinearSolverSetupFailure"
);
57
}
58
59
void
catches_LSSF_0 (
bool
& success,
Teuchos::FancyOStream
& out) {
60
out <<
"Test that LinearSolverSetupFailure has a what() method that "
61
"returns something convertible to std::string, and test that the "
62
"resulting message is as expected"
<< std::endl;
63
Teuchos::OSTab
tab1 (out);
64
bool
threw =
false
;
65
try
{
66
throws_LSSF ();
67
}
68
catch
(
Trilinos::LinearSolverSetupFailure
& e) {
69
threw =
true
;
70
const
std::string msg (e.what ());
71
TEST_ASSERT
( msg ==
"Not an std::runtime_error"
);
72
}
73
TEST_ASSERT
( threw );
74
}
75
76
void
catches_LSSF_1 (
bool
& success,
Teuchos::FancyOStream
& out) {
77
out <<
"Test that LinearSolverSetupFailure is a subclass of "
78
"std::runtime_error"
<< std::endl;
79
Teuchos::OSTab
tab1 (out);
80
81
bool
first_threw =
false
;
82
try
{
83
throws_LSSF ();
84
}
85
catch
(std::runtime_error& e) {
86
first_threw =
true
;
87
const
std::string msg (e.what ());
88
TEST_ASSERT
(msg ==
"Not an std::runtime_error"
);
89
}
90
TEST_ASSERT
( first_threw );
91
static_assert
(std::has_virtual_destructor<Trilinos::LinearSolverSetupFailure>::value,
92
"LinearSolverSetupFailure does not have a virtual destructor. "
93
"This is bad for memory safety, because LinearSolverSetupFailure "
94
"inherits from a class with virtual methods."
);
95
96
bool
second_threw =
false
;
97
try
{
98
throws_runtime_error ();
99
}
100
catch
(std::runtime_error& e) {
101
second_threw =
true
;
102
const
std::string msg (e.what ());
103
TEST_ASSERT
(msg ==
"Not a LinearSolverSetupFailure"
);
104
}
105
TEST_ASSERT
( second_threw );
106
}
107
108
TEUCHOS_UNIT_TEST
( LinearSolverSetupFailure, Test0 )
109
{
110
using
std::endl;
111
112
out <<
"LinearSolverSetupFailure Test0"
<< endl;
113
Teuchos::OSTab
tab1 (out);
114
TEST_NOTHROW
( does_not_throw () );
// sanity-check TEST_NOTHROW macro itself
115
TEST_NOTHROW
( catches_LSSF_0 (success, out) );
116
TEST_NOTHROW
( catches_LSSF_1 (success, out) );
117
}
118
}
// (anonymous)
TEST_ASSERT
#define TEST_ASSERT(v1)
Assert the given statement is true.
Definition
Teuchos_LocalTestingHelpers.hpp:71
TEST_NOTHROW
#define TEST_NOTHROW(code)
Asserr that the statement 'code' does not thrown any excpetions.
Definition
Teuchos_LocalTestingHelpers.hpp:206
Teuchos_UnitTestHarness.hpp
Unit testing support.
TEUCHOS_UNIT_TEST
#define TEUCHOS_UNIT_TEST(TEST_GROUP, TEST_NAME)
Macro for defining a (non-templated) unit test.
Definition
Teuchos_UnitTestHelpers.hpp:83
Trilinos_LinearSolverSetupFailure.hpp
Declaration and definition of Trilinos::LinearSolverSetupFailure exception class.
Trilinos::LinearSolverSetupFailure
Exception reporting failure in setting up a linear solver.
Definition
Trilinos_LinearSolverSetupFailure.hpp:109
Teuchos::FancyOStream
basic_FancyOStream< char > FancyOStream
Definition
Teuchos_FancyOStream.hpp:845
Teuchos::OSTab
basic_OSTab< char > OSTab
Definition
Teuchos_FancyOStream.hpp:851
Generated by
1.17.0