@@ -25,35 +25,61 @@ using namespace testFloatingPointExceptionsHelpers;
2525
2626const char IGNORE_OUTPUT[] = " .*" ;
2727
28- TEST ( TestFloatingPointEnvironment, test_FE_UNDERFLOW_flush )
28+ namespace LvArray
2929{
30- LvArray::system::enableFloatingPointExceptions ( FE_UNDERFLOW );
31- EXPECT_DEATH_IF_SUPPORTED ( uf_test ( DBL_MIN, 2 ), IGNORE_OUTPUT );
32- LvArray::system::disableFloatingPointExceptions ( FE_UNDERFLOW );
30+ namespace testing
31+ {
32+
33+ TEST ( TestFloatingPointEnvironment, Underflow )
34+ {
35+ system::enableFloatingPointExceptions ( FE_UNDERFLOW );
36+ EXPECT_DEATH_IF_SUPPORTED ( divide ( DBL_MIN, 2 ), IGNORE_OUTPUT );
37+ system::disableFloatingPointExceptions ( FE_UNDERFLOW );
3338
34- LvArray:: system::setFPE ();
35- double fpnum = uf_test ( DBL_MIN, 2 );
39+ system::setFPE ();
40+ double fpnum = divide ( DBL_MIN, 2 );
3641 int fpclassification = std::fpclassify ( fpnum );
3742 EXPECT_NE ( fpclassification, FP_SUBNORMAL );
3843}
3944
40- TEST ( TestFloatingPointEnvironment, test_FE_DIVBYZERO )
45+ TEST ( TestFloatingPointEnvironment, DivideByZero )
4146{
42- LvArray:: system::setFPE ();
43- EXPECT_DEATH_IF_SUPPORTED ( func3 ( 0. 0 ), IGNORE_OUTPUT );
47+ system::setFPE ();
48+ EXPECT_DEATH_IF_SUPPORTED ( divide ( 1 , 0 ), IGNORE_OUTPUT );
4449}
4550
51+ TEST ( TestFloatingPointEnvironment, Overlow )
52+ {
53+ system::setFPE ();
54+ EXPECT_DEATH_IF_SUPPORTED ( multiply ( DBL_MAX, 2 ), IGNORE_OUTPUT );
55+ }
4656
47- TEST ( TestFloatingPointEnvironment, test_FE_OVERFLOW )
57+ TEST ( TestFloatingPointEnvironment, Invalid )
4858{
49- LvArray:: system::setFPE ();
50- EXPECT_DEATH_IF_SUPPORTED ( of_test ( 2 , DBL_MAX ), IGNORE_OUTPUT );
59+ system::setFPE ();
60+ EXPECT_DEATH_IF_SUPPORTED ( invalid ( ), IGNORE_OUTPUT );
5161}
5262
53- TEST ( TestFloatingPointEnvironment, test_FE_INVALID )
63+ TEST ( TestFloatingPointEnvironment, FloatingPointExceptionGuard )
5464{
55- LvArray::system::setFPE ();
56- EXPECT_DEATH_IF_SUPPORTED ( invalid_test ( 0.0 ), IGNORE_OUTPUT );
65+ system::setFPE ();
66+
67+ {
68+ system::FloatingPointExceptionGuard guard ( FE_UNDERFLOW );
69+ divide ( DBL_MIN, 2 );
70+ EXPECT_DEATH_IF_SUPPORTED ( multiply ( DBL_MAX, 2 ), IGNORE_OUTPUT );
71+ }
5772}
5873
74+ } // namespace testing
75+ } // namespace LvArray
76+
5977#endif
78+
79+ // This is the default gtest main method. It is included for ease of debugging.
80+ int main ( int argc, char * * argv )
81+ {
82+ ::testing::InitGoogleTest ( &argc, argv );
83+ int const result = RUN_ALL_TESTS ();
84+ return result;
85+ }
0 commit comments