Kaydet (Commit) b014150e authored tarafından Tobias Lippert's avatar Tobias Lippert Kaydeden (comit) Markus Mohrhard

tdf#68016 Write fixture for current behaviour of SfxListener

Also: Make destructor of SfxListener more robust, so that it can be used
in tests.

Change-Id: I02b273ca8e527705c2d3ea3295ed0dec1c4f83ae
Reviewed-on: https://gerrit.libreoffice.org/16483Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
üst e03a5f5e
......@@ -22,12 +22,16 @@ class SfxBroadcasterTest : public CppUnit::TestFixture
void AddingListenersIncreasesCount();
void RemovingListenersDecreasesCount();
void HintsAreNotForwardedToRemovedListeners();
void SameListenerCanBeAddedMoreThanOnce();
void StoppingListeningAffectsOnlyFirstOfIdenticalListeners();
// Adds code needed to register the test suite
CPPUNIT_TEST_SUITE(SfxBroadcasterTest);
CPPUNIT_TEST(AddingListenersIncreasesCount);
CPPUNIT_TEST(RemovingListenersDecreasesCount);
CPPUNIT_TEST(HintsAreNotForwardedToRemovedListeners);
CPPUNIT_TEST(SameListenerCanBeAddedMoreThanOnce);
CPPUNIT_TEST(StoppingListeningAffectsOnlyFirstOfIdenticalListeners);
CPPUNIT_TEST_SUITE_END();
};
......@@ -93,6 +97,27 @@ SfxBroadcasterTest::HintsAreNotForwardedToRemovedListeners()
CPPUNIT_ASSERT_EQUAL(false, sl1.NotifyWasCalled());
}
void
SfxBroadcasterTest::SameListenerCanBeAddedMoreThanOnce()
{
MockedSfxListener sl;
SfxBroadcaster sb;
sb.AddListener(sl);
sb.AddListener(sl);
CPPUNIT_ASSERT_EQUAL((size_t)2, sb.GetListenerCount());
}
void
SfxBroadcasterTest::StoppingListeningAffectsOnlyFirstOfIdenticalListeners()
{
MockedSfxListener sl;
SfxBroadcaster sb;
sb.AddListener(sl);
sb.AddListener(sl);
sb.RemoveListener(sl);
CPPUNIT_ASSERT_EQUAL((size_t)1, sb.GetListenerCount());
}
CPPUNIT_TEST_SUITE_REGISTRATION(SfxBroadcasterTest);
CPPUNIT_PLUGIN_IMPLEMENT();
......@@ -68,7 +68,10 @@ SfxListener::~SfxListener()
void SfxListener::RemoveBroadcaster_Impl( SfxBroadcaster& rBroadcaster )
{
mpImpl->maBCs.erase( std::find( mpImpl->maBCs.begin(), mpImpl->maBCs.end(), &rBroadcaster ) );
auto it = std::find( mpImpl->maBCs.begin(), mpImpl->maBCs.end(), &rBroadcaster );
if (it != mpImpl->maBCs.end()) {
mpImpl->maBCs.erase( it );
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment