Example #1
0
void TestHistogram::testCumulative_Normalized()
{
    Histogram hist(9);

    hist[0] = 1; hist[1] = 2; hist[2] = 3; hist[3] = 4;
    hist[4] = 5;
    hist[5] = 4; hist[6] = 3; hist[7] = 2; hist[8] = 1;

    CPPUNIT_ASSERT_EQUAL( 9, static_cast<int>(hist.size()));
    CPPUNIT_ASSERT_EQUAL(25, static_cast<int>(hist.sum()));

    // cumulative
    {
        IntVector cum = *hist.cumulative();

        CPPUNIT_ASSERT_EQUAL(  9, static_cast<int>(cum.size()));
        CPPUNIT_ASSERT_EQUAL(125, static_cast<int>(cum.Sum()));

        CPPUNIT_ASSERT_EQUAL( 1, static_cast<int>(cum[0]));
        CPPUNIT_ASSERT_EQUAL( 3, static_cast<int>(cum[1]));
        CPPUNIT_ASSERT_EQUAL( 6, static_cast<int>(cum[2]));
        CPPUNIT_ASSERT_EQUAL(10, static_cast<int>(cum[3]));
        CPPUNIT_ASSERT_EQUAL(15, static_cast<int>(cum[4]));
        CPPUNIT_ASSERT_EQUAL(19, static_cast<int>(cum[5]));
        CPPUNIT_ASSERT_EQUAL(22, static_cast<int>(cum[6]));
        CPPUNIT_ASSERT_EQUAL(24, static_cast<int>(cum[7]));
        CPPUNIT_ASSERT_EQUAL(25, static_cast<int>(cum[8]));
    }

    // normalized
    {
        FloatVector norm = *hist.normalized();

        CPPUNIT_ASSERT_EQUAL(   9, static_cast<int>(norm.size()));
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, static_cast<double>(norm.Sum()), 0.00001);

        CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0/25.0, static_cast<double>(norm[0]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 2.0/25.0, static_cast<double>(norm[1]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 3.0/25.0, static_cast<double>(norm[2]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.0/25.0, static_cast<double>(norm[3]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 5.0/25.0, static_cast<double>(norm[4]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.0/25.0, static_cast<double>(norm[5]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 3.0/25.0, static_cast<double>(norm[6]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 2.0/25.0, static_cast<double>(norm[7]), 0.00001);
        CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0/25.0, static_cast<double>(norm[8]), 0.00001);
    }
}