Main Page | Modules | Class Hierarchy | Class List | Directories | Class Members | Related Pages | Examples

test_hist.cc

Test the Histogram class and subclasses.

#include "data_structures/basic_types.h"        // Timeval
#include "data_structures/Histogram.h"
#include <iostream>

using namespace std;

int main(void) {
    double bounds[5] = { 1.0, 3.0, 5.0, 10.0, 20.0 };

    cout << "Testing infinite histogram" << endl;

    Histogram<double> infHist( bounds, 5 );
    Histogram<double> infHistCopy( infHist );

    for( int i = -1; i < 30; i++ ) {
        infHist.addValue( static_cast<double>(i) );
    }

    for( int i = 0; i < infHist.size(); i++ ) {
        cout << "Bin " << infHist.getBin(i).toString() << endl;
    }

    cout << "Testing copy of infinite histogram" << endl;

    for( int i = 0; i < infHistCopy.size(); i++ ) {
        cout << "Bin " << infHistCopy.getBin(i).toString() << endl;
    }

    cout << "Testing finite histogram" << endl;

    Histogram<double> finHist( bounds, 5, true );

    int exceptCount = 0;
    for( int i = -1; i < 30; i++ ) {
        try {
            finHist.addValue( static_cast<double>(i) );
        } catch ( ValueOutOfRangeException range ) {
            if( ( i > 1 ) && ( i <= 20 ) ) {
                // unexpected 
                cerr << "Unexpected exception populating histogram : " << endl;
                cerr << range.what() << endl;
            } else { 
                ++exceptCount;
            }
        }
    }
    if( exceptCount != 12 ) { 
        cerr << "Incorrect number of exceptions caught: " << exceptCount << endl;
    }

    for( int i = 0; i < finHist.size(); i++ ) {
        cout << "Bin " << finHist.getBin(i).toString() << endl;
    }

    cout << "Testing Timeval histogram" << endl;

    Timeval timebounds[5] = {
        Timeval( 0.001 ),
        Timeval( 0.01 ),
        Timeval( 0.1 ),
        Timeval( 0.2 ),
        Timeval( 0.5 )
    };

    Histogram<Timeval> timeHist( timebounds, 5 );

    timeHist.addValue( Timeval( 0.0000 ) );
    timeHist.addValue( Timeval( 0.0001 ) );
    timeHist.addValue( Timeval( 0.0002 ) );
    timeHist.addValue( Timeval( 0.007 ) );
    timeHist.addValue( Timeval( 0.01 ) );
    timeHist.addValue( Timeval( 0.02 ) );
    timeHist.addValue( Timeval( 0.015 ) );
    timeHist.addValue( Timeval( 4.3 ) );

    for( int i = 0; i < timeHist.size(); i++ ) {
        cout << "Bin " << timeHist.getBin(i).toString() << endl;
    }

    cout << "Testing interval histogram" << endl;

    Histogram<double> intervalHist( 0.0, 4.0, 0.75 );

    for( int i = -1; i <= 5; i++ ) {
        intervalHist.addValue( static_cast<double>(i) );
    }

    for( int i = 0; i < intervalHist.size(); i++ ) {
        cout << "Bin " << intervalHist.getBin(i).toString() << endl;
    }


    return 0;
}

Generated on Thu Apr 5 01:02:36 2007 for ANTARES by  doxygen 1.4.2