1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/*----------------------------------------------------------------------
Test program for edm::signalslot::Signal class.
----------------------------------------------------------------------*/
#include <catch.hpp>
#include <cassert>
#include <iostream>
#include <string>
#include "FWCore/Utilities/interface/Signal.h"
static int s_value = 0;
static void setValueFunct(int iValue) { s_value = iValue; }
TEST_CASE("edm::signalslot::Signal", "[Signal]") {
SECTION("connectTest") {
edm::signalslot::Signal<void(int)> sig;
REQUIRE(sig.slots().size() == 0);
int value1 = 0;
sig.connect([&](int iValue) -> void { value1 = iValue; });
REQUIRE(sig.slots().size() == 1);
int value2 = 0;
sig.connect([&](int iValue) { value2 = iValue; });
REQUIRE(sig.slots().size() == 2);
sig.connect(setValueFunct);
//see that the slots we created are actually there
for (auto const& slot : sig.slots()) {
slot(5);
}
REQUIRE(value1 == 5);
REQUIRE(value2 == 5);
REQUIRE(value2 == s_value);
}
SECTION("emitTest") {
edm::signalslot::Signal<void(int)> sig;
int value1 = 0;
sig.connect([&](int iValue) { value1 = iValue; });
int value2 = 0;
sig.connect([&](int iValue) { value2 = iValue; });
sig.emit(5);
REQUIRE(value1 == 5);
REQUIRE(value2 == 5);
sig.emit(1);
REQUIRE(value1 == 1);
REQUIRE(value2 == 1);
}
}
|