/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . * * This code is based on the SocketEventsTester from the Qt4 test suite. */ #pragma once #include #include const QEvent::Type eventType = QEvent::User; class TestExcludePostedEvents : public QObject { Q_OBJECT public: TestExcludePostedEvents(); virtual bool event(QEvent* e) override; bool processed; }; TestExcludePostedEvents::TestExcludePostedEvents() : processed(false) { } bool TestExcludePostedEvents::event(QEvent* e) { if (e->type() == eventType) processed = true; return QObject::event(e); } #define QVERIFY(a) \ if (!a) \ return 1; static int tst_excludePostedEvents() { TestExcludePostedEvents test; QCoreApplication::postEvent(&test, new QEvent(eventType)); QEventLoop loop; loop.processEvents(QEventLoop::ExcludeUserInputEvents | QEventLoop::ExcludeSocketNotifiers // | QEventLoop::WaitForMoreEvents | QEventLoop::X11ExcludeTimers); QVERIFY(!test.processed); loop.processEvents(); QVERIFY(test.processed); return 0; }