[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/slide_interface.h"
using namespace KWayland::Client;
class TestSlide : public QObject
{
Q_OBJECT
@ -52,7 +54,6 @@ private:
KWayland::Client::SlideManager *m_slideManager;
KWayland::Client::EventQueue *m_queue;
QThread *m_thread;
KWayland::Client::Registry m_registry;
};
static const QString s_socketName = QStringLiteral("kwayland-test-wayland-slide-0");
@ -94,43 +95,48 @@ void TestSlide::init()
m_queue->setup(m_connection);
QVERIFY(m_queue->isValid());
QSignalSpy compositorSpy(&m_registry, SIGNAL(compositorAnnounced(quint32,quint32)));
Registry registry;
QSignalSpy compositorSpy(&registry, &Registry::compositorAnnounced);
QVERIFY(compositorSpy.isValid());
QSignalSpy slideSpy(&m_registry, SIGNAL(slideAnnounced(quint32,quint32)));
QSignalSpy slideSpy(&registry, &Registry::slideAnnounced);
QVERIFY(slideSpy.isValid());
QVERIFY(!m_registry.eventQueue());
m_registry.setEventQueue(m_queue);
QCOMPARE(m_registry.eventQueue(), m_queue);
m_registry.create(m_connection->display());
QVERIFY(m_registry.isValid());
m_registry.setup();
QVERIFY(!registry.eventQueue());
registry.setEventQueue(m_queue);
QCOMPARE(registry.eventQueue(), m_queue);
registry.create(m_connection->display());
QVERIFY(registry.isValid());
registry.setup();
m_compositorInterface = m_display->createCompositor(m_display);
m_compositorInterface->create();
QVERIFY(m_compositorInterface->isValid());
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->create();
QVERIFY(m_slideManagerInterface->isValid());
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()
{
if (m_compositor) {
delete m_compositor;
m_compositor = nullptr;
#define CLEANUP(variable) \
if (variable) { \
delete variable; \
variable = nullptr; \
}
if (m_queue) {
delete m_queue;
m_queue = nullptr;
CLEANUP(m_compositor)
CLEANUP(m_slideManager)
CLEANUP(m_queue)
if (m_connection) {
m_connection->deleteLater();
m_connection = nullptr;
}
if (m_thread) {
m_thread->quit();
@ -138,11 +144,10 @@ void TestSlide::cleanup()
delete m_thread;
m_thread = nullptr;
}
delete m_connection;
m_connection = nullptr;
delete m_display;
m_display = nullptr;
CLEANUP(m_compositorInterface)
CLEANUP(m_slideManagerInterface)
CLEANUP(m_display)
#undef CLEANUP
}
void TestSlide::testCreate()