mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
#8580 cafSignal : Assert if signal is connected twice to the same object
This commit is contained in:
parent
4693dc44ef
commit
5706c433d0
@ -72,6 +72,12 @@ public:
|
||||
emitter->structSignal.connect( this, &TestObserver::setSimpleStruct );
|
||||
}
|
||||
|
||||
void connectSignalsTwice( TestEmitter* emitter )
|
||||
{
|
||||
emitter->basicSignal.connect( this, &TestObserver::setBasicSignalReceived );
|
||||
emitter->basicSignal.connect( this, &TestObserver::setBasicSignalReceived );
|
||||
}
|
||||
|
||||
void setBasicSignalReceived( const caf::SignalEmitter* emitter ) { m_receivedBasicSignal = true; }
|
||||
void setBoolValue( const caf::SignalEmitter*, bool test ) { m_boolValue = test; }
|
||||
void setStringValue( const caf::SignalEmitter*, std::string test ) { m_stringValue = test; }
|
||||
@ -149,3 +155,15 @@ TEST( SignalTest, ObserverDeletion )
|
||||
ASSERT_EQ( (size_t)0, emitter.basicSignal.observerCount() );
|
||||
emitter.triggerBasicSignal();
|
||||
}
|
||||
|
||||
TEST( SignalTest, ConnectSignalTwiceAssert )
|
||||
{
|
||||
ASSERT_DEATH(
|
||||
{
|
||||
TestEmitter emitter;
|
||||
TestObserver observer;
|
||||
|
||||
observer.connectSignalsTwice( &emitter );
|
||||
},
|
||||
"" );
|
||||
}
|
||||
|
@ -135,6 +135,10 @@ public:
|
||||
{
|
||||
static_assert( std::is_convertible<ClassType*, SignalObserver*>::value,
|
||||
"Only classes that inherit SignalObserver can connect as an observer of a Signal." );
|
||||
|
||||
// Connecting a signal twice is not supported
|
||||
CAF_ASSERT( m_observerCallbacks.find( observer ) == m_observerCallbacks.end() );
|
||||
|
||||
m_observerCallbacks[observer] = std::make_pair( callback, true );
|
||||
observer->addObservedSignal( this );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user