// Copyright (2019-2023) Paul Scherrer Institute #include #include "../common/StatusVector.h" TEST_CASE("StatusVector_GetMeanPerBin","[StatusVector]") { StatusVector status_vector; status_vector.AddElement(5, 11); status_vector.AddElement(2000, 45); status_vector.AddElement(2543, 44); status_vector.AddElement(2600, 41); auto status_out = status_vector.GetMeanPerBin(1000); REQUIRE(status_out.size() == 3); REQUIRE(status_out[0] == 11); REQUIRE(status_out[1] == 0); REQUIRE(status_out[2] == Approx((45 + 44 + 41) / 3.0)); status_out = status_vector.GetMeanPerBin(500); REQUIRE(status_out.size() == 6); REQUIRE(status_out[0] == 11); REQUIRE(status_out[1] == 0); REQUIRE(status_out[2] == 0); REQUIRE(status_out[3] == 0); REQUIRE(status_out[4] == Approx(45)); REQUIRE(status_out[5] == Approx((44+41)/2.0)); status_out = status_vector.GetMeanPerBin(1); REQUIRE(status_out.size() == 2601); REQUIRE(status_out[5] == 11); REQUIRE(status_out[1900] == 0); REQUIRE(status_out[2000] == 45); REQUIRE(status_out[2543] == 44); REQUIRE(status_out[2600] == 41); } TEST_CASE("StatusVector_GetMaxPerBin","[StatusVector]") { StatusVector status_vector; status_vector.AddElement(5, 11); status_vector.AddElement(2000, 45); status_vector.AddElement(2543, 44); status_vector.AddElement(2600, 41); auto status_out = status_vector.GetMaxPerBin(1000); REQUIRE(status_out.size() == 3); REQUIRE(status_out[0] == 11); REQUIRE(status_out[1] == 0); REQUIRE(status_out[2] == 45); status_out = status_vector.GetMaxPerBin(500); REQUIRE(status_out.size() == 6); REQUIRE(status_out[0] == 11); REQUIRE(status_out[1] == 0); REQUIRE(status_out[2] == 0); REQUIRE(status_out[3] == 0); REQUIRE(status_out[4] == 45); REQUIRE(status_out[5] == 44); status_out = status_vector.GetMaxPerBin(1); REQUIRE(status_out.size() == 2601); REQUIRE(status_out[5] == 11); REQUIRE(status_out[1900] == 0); REQUIRE(status_out[2000] == 45); REQUIRE(status_out[2543] == 44); REQUIRE(status_out[2600] == 41); } TEST_CASE("StatusVector_ExportArray","[StatusVector]") { StatusVector status_vector; status_vector.AddElement(5, 11); status_vector.AddElement(7, 45); status_vector.AddElement(8, 44); status_vector.AddElement(10, 41); auto status_out = status_vector.ExportArray(1); REQUIRE(status_out.size() == 11); CHECK(status_out[0] == 1); CHECK(status_out[5] == 11); CHECK(status_out[7] == 45); CHECK(status_out[8] == 44); CHECK(status_out[9] == 1); CHECK(status_out[10] == 41); } TEST_CASE("StatusVector_GetMaxPerBin_Default","[StatusVector]") { StatusVector status_vector; status_vector.AddElement(5, 11); status_vector.AddElement(2000, 45); status_vector.AddElement(2543, 44); status_vector.AddElement(2600, 41); auto status_out = status_vector.GetMaxPerBin(1000, 25); REQUIRE(status_out.size() == 3); REQUIRE(status_out[0] == 25); REQUIRE(status_out[1] == 25); REQUIRE(status_out[2] == 45); } TEST_CASE("StatusVector_Plot","[StatusVector]") { StatusVector status_vector; status_vector.AddElement(5, 11); status_vector.AddElement(2000, 45); status_vector.AddElement(2543, 44); status_vector.AddElement(2600, 41); auto plot_out = status_vector.GetMeanPlot(1000); REQUIRE(plot_out.size() == 1); REQUIRE(plot_out[0].x.size() == 3); REQUIRE(plot_out[0].y.size() == 3); REQUIRE(plot_out[0].x[0] == Approx(500)); REQUIRE(plot_out[0].y[0] == Approx(11)); REQUIRE(plot_out[0].x[2] == Approx(2500)); REQUIRE(plot_out[0].y[2] == Approx((45 + 44 + 41) / 3.0)); } TEST_CASE("StatusVector_Plot_OneBin","[StatusVector]") { StatusVector status_vector; status_vector.AddElement(5, 11); auto plot_out = status_vector.GetMeanPlot(1000); REQUIRE(plot_out.size() == 1); REQUIRE(plot_out[0].x.size() == 1); REQUIRE(plot_out[0].y.size() == 1); REQUIRE(plot_out[0].x[0] == Approx(2.5)); REQUIRE(plot_out[0].y[0] == Approx(11)); } TEST_CASE("StatusVector_Plot_NoBinning","[StatusVector]") { StatusVector status_vector; status_vector.AddElement(5, 11); auto plot_out = status_vector.GetMaxPlot(1); REQUIRE(plot_out.size() == 1); REQUIRE(plot_out[0].x.size() == 6); REQUIRE(plot_out[0].y.size() == 6); REQUIRE(plot_out[0].x[0] == Approx(0)); REQUIRE(plot_out[0].y[0] == Approx(0)); REQUIRE(plot_out[0].x[5] == Approx(5)); REQUIRE(plot_out[0].y[5] == Approx(11)); }