/* ======================== test_piro_band_main.c ========================== */

/* -----------------------------------------------------------------------------
 * PIRO_BAND.  Version 0.9.
 * Copyright (C) 2009, Sivasankaran Rajamanickam, Timothy A. Davis.
 * PIRO_BAND is licensed under Version 2.0 of the GNU
 * General Public License.  See gpl.txt for a text of the license.
 * PIRO_BAND is also available under other licenses; contact authors for 
 * details. http://www.cise.ufl.edu/research/sparse
 * -------------------------------------------------------------------------- */

/* Main Source file for testing piro_band_reduce . This just includes the other 
 * source files multiple times for the various versions we support.
 *  */


/* ------------------------ Double  ---------------------------------------- */

#include "piro_band_internal.h"
#include "test_piro_band.c"      /* dri */
#include "piro_band_testutils.c" /* dri */

#define COMPLEX      /* dci */
#include "piro_band_internal.h"
#include "test_piro_band.c"
#include "piro_band_testutils.c"
#undef COMPLEX
#undef PIRO_BAND_BLOCKSIZE_H
#undef PIRO_BAND_UV_UPDATE_H
#undef L_UV

#define LONG         /* drl */
#include "piro_band_internal.h"
#include "test_piro_band.c"
#include "piro_band_testutils.c"

#define COMPLEX      /* dcl */
#include "piro_band_internal.h"
#include "test_piro_band.c"
#include "piro_band_testutils.c"
#undef COMPLEX
#undef LONG

/* ------------------------ Single  ---------------------------------------- */
#define FLOAT         /* sri */
#include "piro_band_internal.h"
#include "test_piro_band.c"
#include "piro_band_testutils.c"

#define COMPLEX       /* sci */
#include "piro_band_internal.h"
#include "test_piro_band.c"
#include "piro_band_testutils.c"
#undef COMPLEX

#define LONG          /* srl */
#include "piro_band_internal.h"
#include "test_piro_band.c"
#include "piro_band_testutils.c"

#define COMPLEX       /* scl */
#include "piro_band_internal.h"
#include "test_piro_band.c"
#include "piro_band_testutils.c"
#undef COMPLEX    
#undef LONG
#undef FLOAT

/* Call all the tests explicitly */
int main(void)
{
    printf("------------- Tests for piro_band_reduce ------- \n") ;
    printf("------------- Tests for double/real/integer ------- \n") ;
    piro_band_run_tests_dri() ;
    printf("------------- Tests for double/complex/integer ------- \n") ;
    piro_band_run_tests_dci() ;
    printf("------------- Tests for double/real/long ------- \n") ;
    piro_band_run_tests_drl() ;
    printf("------------- Tests for double/complex/long ------- \n") ;
    piro_band_run_tests_dcl() ;
    printf("------------- Tests for float/real/integer ------- \n") ;
    piro_band_run_tests_sri() ;
    printf("------------- Tests for float/complex/integer ------- \n") ;
    piro_band_run_tests_sci() ;
    printf("------------- Tests for float/real/long ------- \n") ;
    piro_band_run_tests_srl() ;
    printf("------------- Tests for float/complex/long ------- \n") ;
    piro_band_run_tests_scl() ;
    return 0 ;
}

