diff -r 8b2d6d0384b0 -r d9aefe59d544 camerauis/cameraxui/cxengine/tsrc/unit/utils/cxetestutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraxui/cxengine/tsrc/unit/utils/cxetestutils.cpp Fri Apr 16 14:51:30 2010 +0300 @@ -0,0 +1,65 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include + +#include "cxetestutils.h" + +/*! +* Wait for a signal (or multiple instances of the same signal) to be caught +* by signal spy. Returns false if signal is not received within the given +* timeout. +* +* @param spy Signal spy attached to the signal to wait for. +* @param ms Timeout in milliseconds +* @param count How many instances of the signal to wait for +* (default 1) +* @param allowExtraSignals True to ignore any extranous signal. Setting +* this as false will cause this function to return +* false the spy receives more signals than received +* @return True if signal(s) were received, false if timed out or +* signal spy was invalid. +*/ +bool CxeTestUtils::waitForSignal( + QSignalSpy &spy, int ms, int count, bool allowExtraSignals) +{ + int waitingTime = 0; + + if (spy.isValid()) { + while (spy.count() < count && waitingTime < ms) { + QTest::qWait(CXE_TEST_POLL_TIME); + waitingTime += CXE_TEST_POLL_TIME; + } + if (spy.count() > count && !allowExtraSignals) { + CX_DEBUG(("waitForSignal() - got too many signals for %s, count = %d", + spy.signal().constData(), spy.count())); + return false; + } else if (spy.count() >= count) { + CX_DEBUG(("waitForSignal() - got signal %s successfully, count = %d", + spy.signal().constData(), spy.count())); + return true; + } else { + CX_DEBUG(("waitForSignal() - signal %s timed out, waitingTime = %d", + spy.signal().constData(), waitingTime)); + return false; + } + } else { + CX_DEBUG(("waitForSignal() - given signalspy is not valid!")); + return false; + } +}