108 lines
2.5 KiB
C
108 lines
2.5 KiB
C
|
/*
|
||
|
*******************************************************************************
|
||
|
* *
|
||
|
* COPYRIGHT: *
|
||
|
* (C) Copyright International Business Machines Corporation, 1998 *
|
||
|
* Licensed Material - Program-Property of IBM - All Rights Reserved. *
|
||
|
* US Government Users Restricted Rights - Use, duplication, or disclosure *
|
||
|
* restricted by GSA ADP Schedule Contract with IBM Corp. *
|
||
|
* *
|
||
|
*******************************************************************************
|
||
|
*
|
||
|
* File ieeetest.h
|
||
|
*
|
||
|
* Modification History:
|
||
|
*
|
||
|
* Date Name Description
|
||
|
* 08/21/98 stephen Creation.
|
||
|
*******************************************************************************
|
||
|
*/
|
||
|
|
||
|
#ifndef _IEEETEST
|
||
|
#define _IEEETEST
|
||
|
|
||
|
int main(int argc, char **argv);
|
||
|
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();
|
||
|
|
||
|
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();
|
||
|
int testPositiveInfinity();
|
||
|
int testNegativeInfinity();
|
||
|
int testZero();
|
||
|
|
||
|
// subtests of testNaN
|
||
|
int testIsNaN();
|
||
|
int NaNGT();
|
||
|
int NaNLT();
|
||
|
int NaNGTE();
|
||
|
int NaNLTE();
|
||
|
int NaNE();
|
||
|
int NaNNE();
|
||
|
|
||
|
|
||
|
// logging utilities
|
||
|
int getTestLevel() const;
|
||
|
void increaseTestLevel();
|
||
|
void decreaseTestLevel();
|
||
|
|
||
|
IEEETest& log(char c);
|
||
|
IEEETest& log(const char *s);
|
||
|
IEEETest& log(int i);
|
||
|
IEEETest& log(long l);
|
||
|
IEEETest& log(double d);
|
||
|
IEEETest& logln();
|
||
|
|
||
|
IEEETest& err(char c);
|
||
|
IEEETest& err(const char *s);
|
||
|
IEEETest& err(int i);
|
||
|
IEEETest& err(long l);
|
||
|
IEEETest& err(double d);
|
||
|
IEEETest& errln();
|
||
|
|
||
|
// data members
|
||
|
int mFlags; // flags - only verbose for now
|
||
|
int mTestLevel; // indent level
|
||
|
|
||
|
short mNeedLogIndent;
|
||
|
short mNeedErrIndent;
|
||
|
};
|
||
|
|
||
|
inline int
|
||
|
IEEETest::getTestLevel() const
|
||
|
{ return mTestLevel; }
|
||
|
|
||
|
inline void
|
||
|
IEEETest::increaseTestLevel()
|
||
|
{ mTestLevel++; }
|
||
|
|
||
|
inline void
|
||
|
IEEETest::decreaseTestLevel()
|
||
|
{ mTestLevel--; }
|
||
|
|
||
|
#endif
|
||
|
|
||
|
//eof
|