Tuesday 17 March 2020

Simple C Unit Test



#ifndef _CUNITTEST_ENGINE_H_
#define _CUNITTEST_ENGINE_H_
/*
 * File Name: cuteng.h
 * Author: Seree Rakwong
 * Date: 9-NOV-2017
 */
#include <stdio.h>

enum const_operation_enum
{
    kEQ = 0,    /* == */
    kLT,        /* <  */
    kLE,        /* <= */
    kGT,        /* >  */
    kGE,        /* >= */
    kNE,        /* != */
    kAND,       /* && */
    kOR,        /* || */
    kNOT,       /* !  */
    kXOR,       /* ^  */
    kEQS,       /* strcmp == 0 */
    kLTS,       /* strcmp <  0 */
    kGTS,       /* strcmp >  0 */
    kNES        /* strcmp != 0 */
};

typedef long    (*unit_test_fn)(char*);
typedef long    (*unit_test_parms_fn)(char*, void*);

struct unit_test_s
{
    char            alias[64];
    unit_test_fn    func;
    int             operation;
    long            expected;
};
typedef struct unit_test_s unit_test_t;

struct unit_test_parms_s
{
    char*                   alias;
    unit_test_parms_fn      func;
    void*                   args;
    int                     operation;
    long                    expected;
};
typedef struct unit_test_parms_s unit_test_parms_t;

struct results_s
{
    int passed_cases;
    int failed_cases;
};
typedef struct results_s results_t;

void run_test( char *title, unit_test_t* test_cases );
void run_test_params( char *title, unit_test_parms_t* test_cases );
void run_test_to_file( FILE* fp, char *title, unit_test_parms_t* test_cases );
void run_test_to_html( FILE* fp, char *title, unit_test_parms_t* test_cases );

#define BEGIN_UNIT_TEST( test_case, test_type ) \
test_type test_case[] = \
{

#define BEGIN_UNIT_TEST_INT( test_case ) \
unit_test_t test_case[] = \
{

#define ON_UNIT_TEST( alias, func, op, val ) \
    { alias, func, op, val },

#define END_UNIT_TEST() \
    { "", 0, 0, 0L }   /* end of test cases */ \
};

#define BEGIN_UNIT_TEST_PARAMS( test_case ) \
unit_test_parms_t test_case[] = \
{

#define ON_UNIT_TEST_PARAMS( alias, func, args, op, val ) \
    { alias, func, args, op, val },
    

#define END_UNIT_TEST_PARAMS() \
    { "", 0, 0, 0, 0L }   /* end of test cases */ \
};


#define RUN_TEST( alias, test_case ) \
run_test( alias, test_case );

#define RUN_TEST_PARAMS( alias, test_case ) \
run_test_params( alias, test_case );

#define RUN_TEST_FILE( fp, alias, test_case ) \
run_test_to_file( fp, alias, test_case );

#define RUN_TEST_HTML( fp, alias, test_case ) \
run_test_to_html( fp, alias, test_case );


#define BEGIN_RUN_TEST_FILE(fp, fname) \
{ \
    char buffer[64]; \
    if ( fp == NULL ) \
    { \
        sprintf( buffer, "./log/%s", fname ); \
        fp = fopen( buffer, "w+" ); \
    }

#define END_RUN_TEST_FILE(fp) \
    fflush( fp ); \
    fclose( fp ); \
}

#define BEGIN_RUN_TEST_HTML(fp, fname) \
{ \
    char buffer[64]; \
    if ( fp == NULL ) \
    { \
        sprintf( buffer, "./log/%s", fname ); \
        fp = fopen( buffer, "w+" ); \
    } \
    fprintf( fp, "<!DOCTYPE html><html><body>" ); \
    fprintf( fp, "<head><style>" \
                 "#reports {font-family:\"Trebuchet MS\",Arial,Helvetica,sans-serif;border-collapse:collapse;width:100%%;}" \
                 "#reports td,#reports th{border:1px solid #ddd;padding:8px;}" \
                 "#reports tr:nth-child(even){background-color:#f2f2f2;}" \
                 "#reports tr:hover{background-color:#ddd;}" \
                 "#reports th{padding-top:12px;padding-bottom:12px;text-align:center;background-color:#4CAF50;color:white;}" \
                 "#reports th.passed{padding-top:12px;padding-bottom:12px;text-align:center;background-color:#4CAF50;color:white;}" \
                 "#reports th.failed{padding-top:12px;padding-bottom:12px;text-align:center;background-color:#AF4C50;color:white;}" \
                 "</style></head>" ); \
    fflush( fp );

#define END_RUN_TEST_HTML(fp) \
    fprintf( fp, "</body></html>" ); \
    fflush( fp ); \
    fclose( fp ); \
}

void dump_bin( FILE* fp, char* bin, int len );

#endif /* _CUNITTEST_ENGINE_H_ */

/*
 * File Name: cuteng.c
 * Author: Seree Rakwong
 * Date: 9-NOV-2017
 */
#include "cuteng.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* op_to_str[] =
{
    "EQ ",
    "LT ",
    "LE ",
    "GT ",
    "GE ",
    "NE ",
    "AND",
    "OR ",
    "NOT",
    "XOR",
    "EQS",
    "LTS",
    "GTS",
    "NES",
    0
};

void run_test( char *title, unit_test_t* test_cases )
{
    int  i      = 0;
    long rc     = 0;
    long rc2    = 0;
    results_t   results = { 0, 0 };
    char line_break[] = "---------------------------------------------------"
                        "---------------------------------------------------";
    /* title */
    printf( "\n\n" );
    printf( "%s\n", line_break );
    printf( "%*s\n", ( strlen( line_break ) + strlen( title ) ) / 2, title );
    printf( "%s\n", line_break );
    printf( "%4s %-64s %s  %8s %8s %s\n", "No", "Test cases", "Op", "Expected", "Returned", "Result" );
    printf( "%s\n", line_break );
    for ( ; ; ++i )
    {
        if ( !test_cases[i].func )
            break;

        rc = test_cases[i].func( test_cases[i].alias );
        switch ( test_cases[i].operation )
        {
            case kEQ:  rc2 = ( rc == test_cases[i].expected ); break;
            case kLT:  rc2 = ( rc <  test_cases[i].expected ); break;
            case kLE:  rc2 = ( rc <= test_cases[i].expected ); break;
            case kGT:  rc2 = ( rc >  test_cases[i].expected ); break;
            case kGE:  rc2 = ( rc >= test_cases[i].expected ); break;
            case kNE:
            default:   rc2 = ( rc != test_cases[i].expected ); break;
        }

        printf( "%4d %-64s %s %8ld %8ld [ %s ]\n", 
                (i+1),
                test_cases[i].alias,
                op_to_str[test_cases[i].operation], 
                test_cases[i].expected,
                rc,
                ( rc2 == 0 ? "failed" : "PASSED" ) );
        if ( rc2 == 0 )
        {
            ++results.failed_cases;
        }
        else
        {
            ++results.passed_cases;
        }
    }
    printf( "%s\n", line_break );
    printf( "[PASSED: %4d] | [FAILED: %4d]\n", results.passed_cases, results.failed_cases );
    printf( "%s\n", line_break );
}

void run_test_params( char *title, unit_test_parms_t* test_cases )
{
    int  i      = 0;
    long rc     = 0;
    long rc2    = 0;
    char        alias[64];
    results_t   results = { 0, 0 };
    char line_break[] = "---------------------------------------------------"
                        "---------------------------------------------------";
    /* title */
    printf( "\n\n" );
    printf( "%s\n", line_break );
    printf( "%*s\n", ( strlen( line_break ) + strlen( title ) ) / 2, title );
    printf( "%s\n", line_break );
    printf( "%4s %-64s %s  %8s %8s %s\n", "No", "Test cases", "Op", "Expected", "Returned", "Result" );
    printf( "%s\n", line_break );
    for ( ; ; ++i )
    {
        if ( !test_cases[i].func )
            break;

        rc = test_cases[i].func( test_cases[i].alias, test_cases[i].args );
        switch ( test_cases[i].operation )
        {
            case kEQ:  rc2 = ( rc == test_cases[i].expected ); break;
            case kLT:  rc2 = ( rc <  test_cases[i].expected ); break;
            case kLE:  rc2 = ( rc <= test_cases[i].expected ); break;
            case kGT:  rc2 = ( rc >  test_cases[i].expected ); break;
            case kGE:  rc2 = ( rc >= test_cases[i].expected ); break;
            case kNE:
            default:   rc2 = ( rc != test_cases[i].expected ); break;
        }

        strncpy( alias, test_cases[i].alias, 63 );
        printf( "%4d %-64s %s %8ld %8ld [ %s ]\n", 
                (i+1),
                alias,
                op_to_str[test_cases[i].operation], 
                test_cases[i].expected,
                rc,
                ( rc2 == 0 ? "failed" : "PASSED" ) );
        if ( rc2 == 0 )
        {
            ++results.failed_cases;
        }
        else
        {
            ++results.passed_cases;
        }
    }
    printf( "%s\n", line_break );
    printf( "[PASSED: %4d] | [FAILED: %4d]\n", results.passed_cases, results.failed_cases );
    printf( "%s\n", line_break );
}

void run_test_to_file( FILE* fp, char *title, unit_test_parms_t* test_cases )
{
    int  i      = 0;
    long rc     = 0;
    long rc2    = 0;
    char        alias[64];
    results_t   results = { 0, 0 };
    char line_break[] = "---------------------------------------------------"
                        "---------------------------------------------------";
    /* title */
    fprintf( fp, "\n\n" );
    fprintf( fp, "%s\n", line_break );
    fprintf( fp, "%*s\n", ( strlen( line_break ) + strlen( title ) ) / 2, title );
    fprintf( fp, "%s\n", line_break );
    fprintf( fp, "%4s %-64s %s  %8s %8s %s\n", "No", "Test cases", "Op", "Expected", "Returned", "Result" );
    fprintf( fp, "%s\n", line_break );
    for ( ; ; ++i )
    {
        if ( !test_cases[i].func )
            break;

        rc = test_cases[i].func( test_cases[i].alias, test_cases[i].args );
        switch ( test_cases[i].operation )
        {
            case kEQ:  rc2 = ( rc == test_cases[i].expected ); break;
            case kLT:  rc2 = ( rc <  test_cases[i].expected ); break;
            case kLE:  rc2 = ( rc <= test_cases[i].expected ); break;
            case kGT:  rc2 = ( rc >  test_cases[i].expected ); break;
            case kGE:  rc2 = ( rc >= test_cases[i].expected ); break;
            case kNE:
            default:   rc2 = ( rc != test_cases[i].expected ); break;
        }

        strncpy( alias, test_cases[i].alias, 63 );
        fprintf( fp, "%4d %-64s %s %8ld %8ld [ %s ]\n", 
                (i+1),
                alias,
                op_to_str[test_cases[i].operation], 
                test_cases[i].expected,
                rc,
                ( rc2 == 0 ? "failed" : "PASSED" ) );
        if ( rc2 == 0 )
        {
            ++results.failed_cases;
        }
        else
        {
            ++results.passed_cases;
        }
    }
    fprintf( fp, "%s\n", line_break );
    fprintf( fp, "[PASSED: %4d] | [FAILED: %4d]\n", results.passed_cases, results.failed_cases );
    fprintf( fp, "%s\n", line_break );
    fflush( fp );
    
    printf( "\n\n" );
    printf( "%s\n", line_break );
    printf( "%*s\n", ( strlen( line_break ) + strlen( title ) ) / 2, title );
    printf( "%s\n", line_break );
    printf( "[PASSED: %4d] | [FAILED: %4d]\n", results.passed_cases, results.failed_cases );
    printf( "%s\n", line_break );
}

void run_test_to_html( FILE* fp, char *title, unit_test_parms_t* test_cases )
{
    int  i      = 0;
    long rc     = 0;
    long rc2    = 0;
    results_t   results = { 0, 0 };
    char line_break[] = "---------------------------------------------------"
                        "---------------------------------------------------";
    /* title */
    fprintf( fp, "<table id=\"reports\"><tr><th colspan=\"6\">%s</th></tr>", title );
    fprintf( fp, "<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>", "No", "Test cases", "Op", "Expected", "Returned", "Result" );
    
    for ( ; ; ++i )
    {
        if ( !test_cases[i].func )
            break;

        rc = test_cases[i].func( test_cases[i].alias, test_cases[i].args );
        switch ( test_cases[i].operation )
        {
            case kEQ:  rc2 = ( rc == test_cases[i].expected ); break;
            case kLT:  rc2 = ( rc <  test_cases[i].expected ); break;
            case kLE:  rc2 = ( rc <= test_cases[i].expected ); break;
            case kGT:  rc2 = ( rc >  test_cases[i].expected ); break;
            case kGE:  rc2 = ( rc >= test_cases[i].expected ); break;
            case kNE:
            default:   rc2 = ( rc != test_cases[i].expected ); break;
        }

        fprintf( fp, "<tr><td align=\"right\">%d</td><td>%s</td><td>%s</td><td align=\"center\">%ld</td><td align=\"center\">%ld</td><td>%s</td></tr>", 
                (i+1),
                test_cases[i].alias,
                op_to_str[test_cases[i].operation], 
                test_cases[i].expected,
                rc,
                ( rc2 == 0 ? "<span style=\"color:red\">failed</span>" : "<span style=\"color:green\">PASSED</span>" ) );
        if ( rc2 == 0 )
        {
            ++results.failed_cases;
        }
        else
        {
            ++results.passed_cases;
        }
    }
    fprintf( fp, 
        "<tr><th>PASSED:</th><td colspan=\"5\">%d</td></tr>" 
        "<tr><th class=\"failed\">FAILED:</th><td colspan=\"5\">%d</td></tr>", 
        results.passed_cases, results.failed_cases );
    fprintf( fp, "</table><br>" );
    fflush( fp );
    
    printf( "\n\n" );
    printf( "%s\n", line_break );
    printf( "%*s\n", ( strlen( line_break ) + strlen( title ) ) / 2, title );
    printf( "%s\n", line_break );
    printf( "[PASSED: %4d] | [FAILED: %4d]\n", results.passed_cases, results.failed_cases );
    printf( "%s\n", line_break );
}

void dump_bin( FILE* fp, char* bin, int len )
{
    int i = 0;
    int j = 0;

    /* parameters or buffer */
    for (; i < (int)len; i += 16 )
    {
        /* address */
        fprintf( fp, "%08x ", i );

        /* hex */
        for( j = 0; j < 16; ++j )
        {
            if ( i+j >= (int)len )
            {
                if (j == 8 )
                {
                    fprintf( fp, "    " );
                }
                else
                {
                    fprintf( fp, "   " );
                }
            }
            else
            {
                if (j == 8 )
                {
                    fprintf( fp, "  %02X", bin[i+j] & 0xff );
                }
                else
                {
                    fprintf( fp, " %02X", bin[i+j] & 0xff );
                }
            }
        }

        /* characters */
        fprintf( fp, "  " );

        for( j = 0; j < 16; ++j )
        {
            if ( i+j >= (int)len )
            {
                fprintf( fp, " " );
            }
            else
            {
                if ( bin[i+j] < 0x20 )
                {
                    fprintf( fp, "." );
                }
                else
                {
                    fprintf( fp, "%c", bin[i+j] & 0xff );
                }
            }
        }

        /* next line */
        fprintf( fp, "\n" );
    }

}


#ifndef __ets_unittest_h__
#define __ets_unittest_h__

/*
 *
 * File Name: ets_unittest.h
 * Author: Seree Rakwong
 * Date: 28-NOV-2017
 *
 */

#include "etssup_2750.h"
#include "etssup_2775.h"
#include "etssup_2822.h"
#include "etssup_2838.h"
#include "etssup_2954.h"
#include "etssup_3023.h"
#include "etssup_3379.h"
#include "etssup_3552.h"
#include "etssup_3660.h"
#include "etssup_3702.h"
#include "etssup_3707.h"
#include "etssup_3720.h"
#include "etssup_3814.h"

#endif /* __ets_unittest_h__ */

/*
 *
 * File Name: ets_unittest.c
 * Author: Seree Rakwong
 * Date: 28-NOV-2017
 * Purpose:
 *   Main entry to run ETS server unit tests
 *
 */
#include "msedef.h"
#include "ets_unittest.h"
#include <stdio.h>

DECLARE_PROCEDURE_ID("ets_unittest");

typedef void (*run_test_fn)(char*);
struct test_function_s
{
    run_test_fn func;
    char title[64];
};

struct test_function_s ets_functions[] =
{
    /* ADD THE NEW RUN FUNCTION HERE */
    { etssup_2750_run, "etssup_2750" },
    { etssup_2775_run, "etssup_2775" },
    { etssup_2822_run, "etssup_2822" },
    { etssup_2838_run, "etssup_2838" },
    { etssup_2954_run, "etssup_2954" },
    { etssup_3023_run, "etssup_3023" },
    { etssup_3379_run, "etssup_3379" },
    { etssup_3552_run, "etssup_3552" },
    { etssup_3660_run, "etssup_3660" },
    { etssup_3702_run, "etssup_3702" },
    { etssup_3707_run, "etssup_3707" },
    { etssup_3720_run, "etssup_3720" },
    { etssup_3814_run, "etssup_3814" },
    /* DO NOT DELETE THE LAST ELEMENT */
    { 0, "" }
};

int main(int argc, char* argv[])
{
    int i = 0;
    printf("ETS Unit Test running...\n");

    for(;; ++i)
    {
        if (!ets_functions[i].func)
        {
            break;
        }
        ets_functions[i].func(ets_functions[i].title);
    }
    printf("\nCompleted!!\n");
    return 0;
}

#ifndef __etssup_2750_h__
#define __etssup_2750_h__

/*
 *
 * File Name: etssup_2750.h
 * Author: ETS Trading Solution
 * Date: Tue Feb  6 15:31:49 GMT 2018

 * Purpose:
 *   Generated by genut
 *
 */

void etssup_2750_run(char* title);

#endif /* __etssup_2750_h__ */

/*
 *
 * File Name: etssup_2750.c
 * Author: ETS Trading Solution
 * Date: Tue Feb  6 15:31:49 GMT 2018

 * Purpose:
 *   Generated by genut
 *
 */

#ifdef __UNIX__
#undef __UNIX__
#define __UNIX
#endif

#include "cuteng.h"
#include "etssup_2750.h"
#include <string.h>
#include <bu_validate.h>
#include <b_boscom.h>
#include <b_usrmap.h>

struct IsAdvOrdRequiredToCheckCrdt_parms_s
{
    char cSpecialOrdType;
    char cSide;
    char cBAdvOrdChkAtKey;
    char cSAdvOrdChkAtKey;
    unsigned char bPayBitFlag33;
};

long test_IsAdvOrdRequiredToCheckCrdt(char* alias, void* args)
{
    long lReturned = 0L;
    struct IsAdvOrdRequiredToCheckCrdt_parms_s* params = 
        (struct IsAdvOrdRequiredToCheckCrdt_parms_s*)args;
    lReturned = IsAdvOrdRequiredToCheckCrdt(
                    params->cSpecialOrdType,
                    params->cSide,
                    params->cBAdvOrdChkAtKey,
                    params->cSAdvOrdChkAtKey,
                    params->bPayBitFlag33
                );
    return lReturned;
}

struct IsAdvOrdRequiredToCheckCrdt_parms_s IsAdvOrdRequiredToCheckCrdt_parms[] =
{
    { 'S', 'B', 'N', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'B', 'N', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'B', 'Y', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'B', 'Y', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'B', 'N', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'B', 'N', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'B', 'Y', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'B', 'Y', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'B', 'N', 'N', 0x00 },
    { 'S', 'B', 'N', 'Y', 0x00 },
    { 'S', 'B', 'Y', 'N', 0x00 },
    { 'S', 'B', 'Y', 'Y', 0x00 },
    { 'T', 'B', 'N', 'N', 0x00 },
    { 'T', 'B', 'N', 'Y', 0x00 },
    { 'T', 'B', 'Y', 'N', 0x00 },
    { 'T', 'B', 'Y', 'Y', 0x00 },
    { 'S', 'S', 'N', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'S', 'N', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'S', 'Y', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'S', 'Y', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'S', 'N', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'S', 'N', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'S', 'Y', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'T', 'S', 'Y', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'S', 'S', 'N', 'N', 0x00 },
    { 'S', 'S', 'N', 'Y', 0x00 },
    { 'S', 'S', 'Y', 'N', 0x00 },
    { 'S', 'S', 'Y', 'Y', 0x00 },
    { 'T', 'S', 'N', 'N', 0x00 },
    { 'T', 'S', 'N', 'Y', 0x00 },
    { 'T', 'S', 'Y', 'N', 0x00 },
    { 'T', 'S', 'Y', 'Y', 0x00 },
    { 'A', 'S', 'N', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'N', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'Y', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'Y', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'N', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'N', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'Y', 'N', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'Y', 'Y', BIT33_PAY_ADVORD_CRDTCHK_MODE },
    { 'A', 'S', 'N', 'N', 0x00 },
    { 'A', 'S', 'N', 'Y', 0x00 },
    { 'A', 'S', 'Y', 'N', 0x00 },
    { 'A', 'S', 'Y', 'Y', 0x00 },
    { 'A', 'S', 'N', 'N', 0x00 },
    { 'A', 'S', 'N', 'Y', 0x00 },
    { 'A', 'S', 'Y', 'N', 0x00 },
    { 'A', 'S', 'Y', 'Y', 0x00 },
    { 0, 0, 0, 0, 0 }
};

/*ETSSUP-3726*/
BEGIN_UNIT_TEST_PARAMS( etssup_2750_1 )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='N', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[0],    kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='N', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[1],    kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='Y', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[2],    kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='Y', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[3],    kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='N', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[4],    kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='N', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[5],    kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='Y', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[6],    kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='Y', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[7],    kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='N', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[8],    kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='N', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[9],    kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='Y', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[10],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='B', BKey='Y', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[11],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='N', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[12],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='N', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[13],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='Y', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[14],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='B', BKey='Y', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[15],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='N', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[16],   kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='N', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[17],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='Y', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[18],   kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='Y', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[19],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='N', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[20],   kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='N', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[21],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='Y', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[22],   kEQ,    0L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='Y', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[23],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='N', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[24],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='N', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[25],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='Y', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[26],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='S', side='S', BKey='Y', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[27],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='N', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[28],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='N', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[29],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='Y', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[30],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='T', side='S', BKey='Y', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[31],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[32],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[33],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[34],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[35],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[36],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[37],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='N', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[38],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='Y', pay=BIT33_PAY_ADVORD_CRDTCHK_MODE",  test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[39],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[40],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[41],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[42],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[43],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[44],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='N', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[45],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='N', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[46],   kEQ,    1L )
    ON_UNIT_TEST_PARAMS( "type='A', side='S', BKey='Y', SKey='Y', pay=0x00",                           test_IsAdvOrdRequiredToCheckCrdt,   &IsAdvOrdRequiredToCheckCrdt_parms[47],   kEQ,    1L )
END_UNIT_TEST_PARAMS()

void etssup_2750_run(char* title)
{
    FILE* fp = NULL;
    BEGIN_RUN_TEST_HTML(fp, "etssup_2750_3726_utr.html" )
        RUN_TEST_HTML( fp, title,  etssup_2750_1 )
    END_RUN_TEST_HTML(fp)
}













No comments:

Post a Comment