#ifndef TA_TEST_PRIV_H
#define TA_TEST_PRIV_H
#ifndef TA_LIBC_H
#include "ta_libc.h"
#endif
#ifndef TA_ERROR_NUMBER_H
#include "ta_error_number.h"
#endif
typedef struct
{
unsigned int nbBars;
TA_Real *open;
TA_Real *high;
TA_Real *low;
TA_Real *close;
TA_Real *volume;
TA_Real *openInterest;
} TA_History;
ErrorNumber test_internals( void );
ErrorNumber test_abstract( void );
ErrorNumber freeLib( void );
ErrorNumber allocLib( void );
void reportError( const char *str, TA_RetCode retCode );
typedef struct
{
TA_Real *in;
TA_Real *out0;
TA_Real *out1;
TA_Real *out2;
} TestBuffer;
#define NB_GLOBAL_BUFFER 5
extern TestBuffer gBuffer[NB_GLOBAL_BUFFER];
#define MAX_NB_TEST_ELEMENT 280
void initGlobalBuffer( void );
void clearAllBuffers( void );
void setInputBuffer( unsigned int i, const TA_Real *data, unsigned int nbElement );
void setInputBufferValue( unsigned int i, const TA_Real data, unsigned int nbElement );
ErrorNumber checkForNAN( const TA_Real *buffer,
unsigned int nbElement );
ErrorNumber checkDataSame( const TA_Real *data,
const TA_Real *originalInput,
unsigned int nbElement );
ErrorNumber checkSameContent( TA_Real *buffer1,
TA_Real *buffer2 );
ErrorNumber checkExpectedValue( const TA_Real *data,
TA_RetCode retCode, TA_RetCode expectedRetCode,
unsigned int outBegIdx, unsigned int expectedBegIdx,
unsigned int outNbElement, unsigned int expectedNbElement,
TA_Real oneOfTheExpectedOutReal,
unsigned int oneOfTheExpectedOutRealIndex );
#define CHECK_EXPECTED_VALUE(bufid,id) \
{ \
errNb = checkExpectedValue( bufid, \
retCode, test->expectedRetCode, \
outBegIdx, test->expectedBegIdx, \
outNbElement, test->expectedNbElement, \
test->oneOfTheExpectedOutReal##id, \
test->oneOfTheExpectedOutRealIndex##id ); \
if( errNb != TA_TEST_PASS ) \
{ \
printf( "Fail for output id=%d\n", id ); \
return errNb; \
} \
}
#define CLEAR_EXPECTED_VALUE(id) \
{ \
retCode = TA_INTERNAL_ERROR(127); \
outBegIdx = 0;\
outNbElement = 0;\
}
#define MAX_RANGE_SIZE 252
#define MAX_RANGE_END (MAX_RANGE_SIZE-1)
typedef TA_RetCode (*RangeTestFunction)( TA_Integer startIdx,
TA_Integer endIdx,
TA_Real *outputBuffer,
TA_Integer *outputBufferInt,
TA_Integer *outBegIdx,
TA_Integer *outNbElement,
TA_Integer *lookback,
void *opaqueData,
unsigned int outputNb,
unsigned int *isOutputInteger );
#define TA_DO_NOT_COMPARE 0xFFFFFFFF
ErrorNumber doRangeTest( RangeTestFunction testFunction,
TA_FuncUnstId unstId,
void *opaqueData,
unsigned int nbOutput,
unsigned int integerTolerance );
void printRetCode( TA_RetCode retCode );
void showFeedback(void);
void hideFeedback(void);
#endif