#ifndef _IEEETEST
#define _IEEETEST
void usage(const char *execName);
class IEEETest
{
public:
enum EModeFlags {
kNone = 0x00,
kVerboseMode = 0x01
};
IEEETest(int flags = kNone);
~IEEETest();
int run(void);
private:
int runTest(const char *testName,
int (IEEETest::*testFunc)(void));
int testNaN(void);
int testPositiveInfinity(void);
int testNegativeInfinity(void);
int testZero(void);
int testIsNaN(void);
int NaNGT(void);
int NaNLT(void);
int NaNGTE(void);
int NaNLTE(void);
int NaNE(void);
int NaNNE(void);
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);
int mFlags; int mTestLevel;
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