File indexing completed on 2025-07-31 02:19:16
0001
0002
0003
0004
0005
0006
0007 #include <catch.hpp>
0008 #include <cassert>
0009 #include <iostream>
0010 #include <string>
0011 #include "FWCore/Utilities/interface/Signal.h"
0012
0013 static int s_value = 0;
0014 static void setValueFunct(int iValue) { s_value = iValue; }
0015
0016 TEST_CASE("edm::signalslot::Signal", "[Signal]") {
0017 SECTION("connectTest") {
0018 edm::signalslot::Signal<void(int)> sig;
0019 REQUIRE(sig.slots().size() == 0);
0020
0021 int value1 = 0;
0022 sig.connect([&](int iValue) -> void { value1 = iValue; });
0023 REQUIRE(sig.slots().size() == 1);
0024
0025 int value2 = 0;
0026 sig.connect([&](int iValue) { value2 = iValue; });
0027 REQUIRE(sig.slots().size() == 2);
0028
0029 sig.connect(setValueFunct);
0030
0031 for (auto const& slot : sig.slots()) {
0032 slot(5);
0033 }
0034 REQUIRE(value1 == 5);
0035 REQUIRE(value2 == 5);
0036 REQUIRE(value2 == s_value);
0037 }
0038
0039 SECTION("emitTest") {
0040 edm::signalslot::Signal<void(int)> sig;
0041
0042 int value1 = 0;
0043 sig.connect([&](int iValue) { value1 = iValue; });
0044
0045 int value2 = 0;
0046 sig.connect([&](int iValue) { value2 = iValue; });
0047
0048 sig.emit(5);
0049 REQUIRE(value1 == 5);
0050 REQUIRE(value2 == 5);
0051
0052 sig.emit(1);
0053 REQUIRE(value1 == 1);
0054 REQUIRE(value2 == 1);
0055 }
0056 }