From 7b305a1faf5a514fe9be409c591ccadee5245ee6 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 9 Mar 2026 18:01:19 +0100 Subject: [PATCH] fixed some tests --- .../slsDetectorFunctionList.c | 2 +- slsDetectorSoftware/src/CallerSpecial.cpp | 2 +- .../Caller/test-Caller-chiptestboard.cpp | 36 ++++++++++++------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c index 7531f9e08..87b3c2f47 100644 --- a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c @@ -1436,7 +1436,7 @@ int setDAC(enum DACINDEX ind, int val, bool mV, char *mess) { return FAIL; // power dacs (power should be disabled) - if (ind > NDAC_ONLY && ind != D_PWR_CHIP) { + if (ind >= NDAC_ONLY && ind != D_PWR_CHIP) { if (verifyPowerRailDisabled(ind, mess) == FAIL) return FAIL; } diff --git a/slsDetectorSoftware/src/CallerSpecial.cpp b/slsDetectorSoftware/src/CallerSpecial.cpp index 36f14d10e..bb99ad99e 100644 --- a/slsDetectorSoftware/src/CallerSpecial.cpp +++ b/slsDetectorSoftware/src/CallerSpecial.cpp @@ -1915,7 +1915,7 @@ std::string Caller::v_limit(int action) { } else if (action == defs::PUT_ACTION) { - if (args.size() < 1) { + if (args.size() != 1) { WrongNumberOfParameters(1); } auto val = StringTo(args[0]); diff --git a/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp b/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp index 629abc936..8cce14ded 100644 --- a/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp +++ b/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp @@ -586,7 +586,7 @@ TEST_CASE("dac", "[.detectorintegration][.dacs]") { caller.call("dac", {std::to_string(idac), "-1"}, -1, PUT)); } - // power dacs + // power dacs. TODO: check v_chip if (det.isVirtualDetectorServer().tsquash( "Inconsistent virtual servers")) { std::vector names{"v_a", "v_b", "v_c", "v_d", "v_io"}; @@ -663,6 +663,8 @@ TEST_CASE("dac", "[.detectorintegration][.dacs]") { } // Reset all dacs to previous value for (int imod = 0; imod != det.size(); ++imod) { + det.setPowerEnabled(std::vector{indices[iPower]}, false, + {imod}); det.setDAC(indices[iPower], prev_val[imod], true, {imod}); det.setPowerEnabled(std::vector{indices[iPower]}, prev_val_power[imod], {imod}); @@ -863,7 +865,6 @@ TEST_CASE("v_limit", "[.detectorintegration]") { auto prev_val = det.getDAC(defs::V_LIMIT, true); REQUIRE_THROWS(caller.call("v_limit", {"1200", "mV"}, -1, PUT)); REQUIRE_THROWS(caller.call("v_limit", {"-100"}, -1, PUT)); - REQUIRE_THROWS(caller.call("v_limit", {"0"}, -1, PUT)); REQUIRE_THROWS(caller.call("v_limit", {"-100", "mV"}, -1, PUT)); REQUIRE_THROWS(caller.call("v_limit", {"0", "mV"}, -1, PUT)); @@ -1173,10 +1174,10 @@ TEST_CASE("power", "[.detectorintegration]") { det_type == defs::XILINX_CHIPTESTBOARD) { std::vector cmds{"v_a", "v_b", "v_c", - "v_d", "v_io", "v_chip"}; + "v_d", "v_io"}; std::vector indices{ defs::V_POWER_A, defs::V_POWER_B, defs::V_POWER_C, - defs::V_POWER_D, defs::V_POWER_IO, defs::V_POWER_CHIP}; + defs::V_POWER_D, defs::V_POWER_IO}; for (size_t iPower = 0; iPower < cmds.size(); ++iPower) { auto prev_val = det.isPowerEnabled(indices[iPower]); @@ -1187,7 +1188,7 @@ TEST_CASE("power", "[.detectorintegration]") { { std::ostringstream oss; caller.call("power", {"v_a", "on"}, -1, PUT, oss); - REQUIRE(oss.str() == "power v_a on\n"); + REQUIRE(oss.str() == "power [v_a] on\n"); } { std::ostringstream oss; @@ -1200,17 +1201,28 @@ TEST_CASE("power", "[.detectorintegration]") { REQUIRE(oss.str() == "power [v_a, v_c] on\n"); } { - std::ostringstream oss; + std::ostringstream oss1, oss2, oss3; caller.call("power", {"v_a", "v_b", "off"}, -1, PUT); - caller.call("power", {"v_a", "v_b", "v_c"}, -1, GET, oss); - REQUIRE(oss.str() == "power [v_a, v_b, v_c] [on, off, on]\n"); + caller.call("power", {"v_a"}, -1, GET, oss1); + caller.call("power", {"v_b"}, -1, GET, oss2); + caller.call("power", {"v_c"}, -1, GET, oss3); + REQUIRE(oss1.str() == "power v_a off\n"); + REQUIRE(oss2.str() == "power v_b off\n"); + REQUIRE(oss3.str() == "power v_c on\n"); } { // power chip caller.call("powerchip", {"1"}, -1, PUT); - std::ostringstream oss; - caller.call("power", {"v_a", "v_b", "v_c", "v_d", "v_io"}, -1, - GET, oss); - REQUIRE(oss.str() == "power [v_a, v_b, v_c, v_d, v_io] on\n"); + std::ostringstream oss1, oss2, oss3, oss4, oss5; + caller.call("power", {"v_a"}, -1, GET, oss1); + caller.call("power", {"v_b"}, -1, GET, oss2); + caller.call("power", {"v_c"}, -1, GET, oss3); + caller.call("power", {"v_d"}, -1, GET, oss4); + caller.call("power", {"v_io"}, -1, GET, oss5); + REQUIRE(oss1.str() == "power v_a on\n"); + REQUIRE(oss2.str() == "power v_b on\n"); + REQUIRE(oss3.str() == "power v_c on\n"); + REQUIRE(oss4.str() == "power v_d on\n"); + REQUIRE(oss5.str() == "power v_io on\n"); } for (int imod = 0; imod != det.size(); ++imod) { det.setPowerEnabled(std::vector{indices[iPower]},