[autotest] Prepare TestSlide for multiple test cases

Registry was not per test case, cleanup didn't clean up everything,
etc. Basically adding a second test case resulted in a crash.
This commit is contained in:
Martin Gräßlin 2016-05-30 11:55:10 +02:00
parent b0b5e16667
commit aef650df51

View file

@ -32,6 +32,8 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
#include "../../src/server/region_interface.h" #include "../../src/server/region_interface.h"
#include "../../src/server/slide_interface.h" #include "../../src/server/slide_interface.h"
using namespace KWayland::Client;
class TestSlide : public QObject class TestSlide : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -52,7 +54,6 @@ private:
KWayland::Client::SlideManager *m_slideManager; KWayland::Client::SlideManager *m_slideManager;
KWayland::Client::EventQueue *m_queue; KWayland::Client::EventQueue *m_queue;
QThread *m_thread; QThread *m_thread;
KWayland::Client::Registry m_registry;
}; };
static const QString s_socketName = QStringLiteral("kwayland-test-wayland-slide-0"); static const QString s_socketName = QStringLiteral("kwayland-test-wayland-slide-0");
@ -94,43 +95,48 @@ void TestSlide::init()
m_queue->setup(m_connection); m_queue->setup(m_connection);
QVERIFY(m_queue->isValid()); QVERIFY(m_queue->isValid());
QSignalSpy compositorSpy(&m_registry, SIGNAL(compositorAnnounced(quint32,quint32))); Registry registry;
QSignalSpy compositorSpy(&registry, &Registry::compositorAnnounced);
QVERIFY(compositorSpy.isValid()); QVERIFY(compositorSpy.isValid());
QSignalSpy slideSpy(&m_registry, SIGNAL(slideAnnounced(quint32,quint32))); QSignalSpy slideSpy(&registry, &Registry::slideAnnounced);
QVERIFY(slideSpy.isValid()); QVERIFY(slideSpy.isValid());
QVERIFY(!m_registry.eventQueue()); QVERIFY(!registry.eventQueue());
m_registry.setEventQueue(m_queue); registry.setEventQueue(m_queue);
QCOMPARE(m_registry.eventQueue(), m_queue); QCOMPARE(registry.eventQueue(), m_queue);
m_registry.create(m_connection->display()); registry.create(m_connection->display());
QVERIFY(m_registry.isValid()); QVERIFY(registry.isValid());
m_registry.setup(); registry.setup();
m_compositorInterface = m_display->createCompositor(m_display); m_compositorInterface = m_display->createCompositor(m_display);
m_compositorInterface->create(); m_compositorInterface->create();
QVERIFY(m_compositorInterface->isValid()); QVERIFY(m_compositorInterface->isValid());
QVERIFY(compositorSpy.wait()); QVERIFY(compositorSpy.wait());
m_compositor = m_registry.createCompositor(compositorSpy.first().first().value<quint32>(), compositorSpy.first().last().value<quint32>(), this); m_compositor = registry.createCompositor(compositorSpy.first().first().value<quint32>(), compositorSpy.first().last().value<quint32>(), this);
m_slideManagerInterface = m_display->createSlideManager(m_display); m_slideManagerInterface = m_display->createSlideManager(m_display);
m_slideManagerInterface->create(); m_slideManagerInterface->create();
QVERIFY(m_slideManagerInterface->isValid()); QVERIFY(m_slideManagerInterface->isValid());
QVERIFY(slideSpy.wait()); QVERIFY(slideSpy.wait());
m_slideManager = m_registry.createSlideManager(slideSpy.first().first().value<quint32>(), slideSpy.first().last().value<quint32>(), this); m_slideManager = registry.createSlideManager(slideSpy.first().first().value<quint32>(), slideSpy.first().last().value<quint32>(), this);
} }
void TestSlide::cleanup() void TestSlide::cleanup()
{ {
if (m_compositor) { #define CLEANUP(variable) \
delete m_compositor; if (variable) { \
m_compositor = nullptr; delete variable; \
variable = nullptr; \
} }
if (m_queue) { CLEANUP(m_compositor)
delete m_queue; CLEANUP(m_slideManager)
m_queue = nullptr; CLEANUP(m_queue)
if (m_connection) {
m_connection->deleteLater();
m_connection = nullptr;
} }
if (m_thread) { if (m_thread) {
m_thread->quit(); m_thread->quit();
@ -138,11 +144,10 @@ void TestSlide::cleanup()
delete m_thread; delete m_thread;
m_thread = nullptr; m_thread = nullptr;
} }
delete m_connection; CLEANUP(m_compositorInterface)
m_connection = nullptr; CLEANUP(m_slideManagerInterface)
CLEANUP(m_display)
delete m_display; #undef CLEANUP
m_display = nullptr;
} }
void TestSlide::testCreate() void TestSlide::testCreate()