/* * histogramtest.cpp * * Created on: Mar 27, 2017 * Author: gregor */ #include #include #include "GLTB/histogram.h" TEST(Histogram, processSingleValue) { gltb::Histogram1D histogram(10, 2.0, 3.0); histogram.processValue(2.55); auto result = histogram.getHistogramCounts(); for(size_t i = 0; i < result.size(); i++) { std::cout << result[i] << " "; } std::cout << std::endl; ASSERT_EQ(result.size(), 10); ASSERT_EQ(result[0], 0); ASSERT_EQ(result[5], 1); } TEST(Histogram, processSingleValueLow) { gltb::Histogram1D histogram(10, 2.0, 3.0); histogram.processValue(0.55); auto result = histogram.getHistogramCounts(); ASSERT_EQ(result.size(), 10); for(size_t i = 0; i < result.size(); i++) { ASSERT_EQ(result[i], 0); } ASSERT_EQ(histogram.getLowCount(), 1); ASSERT_EQ(histogram.getHighCount(), 0); } TEST(Histogram, processSingleValueHigh) { gltb::Histogram1D histogram(10, 2.0, 3.0); histogram.processValue(3.55); auto result = histogram.getHistogramCounts(); ASSERT_EQ(result.size(), 10); for(size_t i = 0; i < result.size(); i++) { ASSERT_EQ(result[i], 0); } ASSERT_EQ(histogram.getLowCount(), 0); ASSERT_EQ(histogram.getHighCount(), 1); } TEST(Histogram, totalCounts) { gltb::Histogram1D histogram(10, 2.0, 3.0); for(int i = 0; i < 5; i++) { histogram.processValue(1.95 + 0.1 * i); } ASSERT_EQ(histogram.getTotalCounts(true), 5); ASSERT_EQ(histogram.getTotalCounts(false), 4); } TEST(Histogram, normalizedHistogram) { gltb::Histogram1D histogram(10, 2.0, 3.0); auto normalizedEmpty = histogram.getNormalizedHistogram(true); for(size_t i = 0; i < normalizedEmpty.size(); i++) { ASSERT_FLOAT_EQ(0, normalizedEmpty[i]); } for(int i = 0; i < 5; i++) { histogram.processValue(1.95 + 0.1 * i); } auto normalized1 = histogram.getNormalizedHistogram(true); for(size_t i = 0; i < normalized1.size(); i++) { if(i < 4) { ASSERT_FLOAT_EQ(0.2, normalized1[i]); } else { ASSERT_FLOAT_EQ(0, normalized1[i]); } } auto normalized2 = histogram.getNormalizedHistogram(false); for(size_t i = 0; i < normalized2.size(); i++) { if(i < 4) { ASSERT_FLOAT_EQ(0.25, normalized2[i]); } else { ASSERT_FLOAT_EQ(0, normalized2[i]); } } } int main(int argc, char *argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }