| /* |
| ******************************************************************************* |
| * |
| * Copyright (C) 1998-2003, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************* |
| * |
| * File ieeetest.h |
| * |
| * Modification History: |
| * |
| * Date Name Description |
| * 08/21/98 stephen Creation. |
| ******************************************************************************* |
| */ |
| |
| #ifndef _IEEETEST |
| #define _IEEETEST |
| |
| void usage(const char *execName); |
| |
| // Very simple class for testing IEEE compliance |
| class IEEETest |
| { |
| public: |
| |
| // additive constants for flags |
| enum EModeFlags { |
| kNone = 0x00, |
| kVerboseMode = 0x01 |
| }; |
| |
| |
| IEEETest(int flags = kNone); |
| ~IEEETest(); |
| |
| // method returns the number of errors |
| int run(void); |
| |
| private: |
| // utility function for running a test function |
| int runTest(const char *testName, |
| int (IEEETest::*testFunc)(void)); |
| |
| // the actual tests; methods return the number of errors |
| int testNaN(void); |
| int testPositiveInfinity(void); |
| int testNegativeInfinity(void); |
| int testZero(void); |
| |
| // subtests of testNaN |
| int testIsNaN(void); |
| int NaNGT(void); |
| int NaNLT(void); |
| int NaNGTE(void); |
| int NaNLTE(void); |
| int NaNE(void); |
| int NaNNE(void); |
| |
| |
| // logging utilities |
| int getTestLevel(void) const; |
| void increaseTestLevel(void); |
| void decreaseTestLevel(void); |
| |
| IEEETest& log(char c); |
| IEEETest& log(const char *s); |
| IEEETest& log(int i); |
| IEEETest& log(long l); |
| IEEETest& log(double d); |
| IEEETest& logln(void); |
| |
| IEEETest& err(char c); |
| IEEETest& err(const char *s); |
| IEEETest& err(int i); |
| IEEETest& err(long l); |
| IEEETest& err(double d); |
| IEEETest& errln(void); |
| |
| // data members |
| int mFlags; // flags - only verbose for now |
| int mTestLevel; // indent level |
| |
| short mNeedLogIndent; |
| short mNeedErrIndent; |
| }; |
| |
| inline int |
| IEEETest::getTestLevel(void) const |
| { return mTestLevel; } |
| |
| inline void |
| IEEETest::increaseTestLevel(void) |
| { mTestLevel++; } |
| |
| inline void |
| IEEETest::decreaseTestLevel(void) |
| { mTestLevel--; } |
| |
| #endif |
| |
| //eof |