--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/keepalive/flextimer/test/testflextimer/inc/testrflextimer.h Tue Aug 31 15:35:44 2010 +0300
@@ -0,0 +1,520 @@
+/*
+* ============================================================================
+* Name : testrflextimer.h
+* Part of : src / testflextimer
+* Description : STIF test cases for RFlexTimer
+* Version : %version: 1 %
+*
+* Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+* Nokia Corporation
+* ============================================================================
+* Template version: 4.2
+*/
+
+#ifndef TESTRFLEXTIMER_H
+#define TESTRFLEXTIMER_H
+
+
+#include <e32base.h>
+
+/**
+ * STIF test cases for RFlexTimer class.
+ * This class is only a container for STIF test cases - it should NOT be
+ * instantiated, just call the static functions.
+ *
+ * @lib testflextimer.lib
+ * @since TB10.1
+ */
+class CTestRFlexTimer : public CBase
+ {
+
+public:
+
+ /**
+ * Destructor.
+ */
+ virtual ~CTestRFlexTimer();
+
+ /**
+ * @brief Start a timer using After (32 bit) and wait it to expire
+ *
+ * Open RFlexTimer handle and connect to the server. Set timer to expire
+ * after 3 secs. Close the handle and check that the expiration is done
+ * at correct time.
+ *
+ * Tests:
+ * - RFlexTimer::RFlexTimer()
+ * - RFlexTimer::Connect()
+ * - RFlexTimer::After() 32 bit
+ * - RFlexTimer::Close()
+ * - RFlexTimer::~RFlexTimer()
+ * - Expiration of timer
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ExpireAfter32L( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+
+ /**
+ * @brief Start a timer using After (64 bit) and wait it to expire
+ *
+ * Open RFlexTimer handle and connect to the server. Set timer to expire
+ * after 3 secs. Close the handle and check that the expiration is done
+ * at correct time.
+ *
+ * Tests:
+ * - RFlexTimer::RFlexTimer()
+ * - RFlexTimer::Connect()
+ * - RFlexTimer::After() 64 bit
+ * - RFlexTimer::Close()
+ * - RFlexTimer::~RFlexTimer()
+ * - Expiration of timer
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ExpireAfter64L( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+
+ /**
+ * @brief Start a timer using AfterTicks and wait it to expire
+ *
+ * Open RFlexTimer handle and connect to the server. Set timer to expire
+ * after 192 ticks (3 secs). Close the handle and check that the
+ * expiration is done at correct time.
+ *
+ * Tests:
+ * - RFlexTimer::RFlexTimer()
+ * - RFlexTimer::Connect()
+ * - RFlexTimer::AfterTicks()
+ * - RFlexTimer::Close()
+ * - RFlexTimer::~RFlexTimer()
+ * - Expiration of timer
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ExpireAfterTicksL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Start a timer using At and wait it to expire
+ *
+ * Open RFlexTimer handle and connect to the server. Set timer to expire
+ * after 3 secs from now. Close the handle and check that the expiration is
+ * done at correct time.
+ *
+ * Tests:
+ * - RFlexTimer::RFlexTimer()
+ * - RFlexTimer::Connect()
+ * - RFlexTimer::At()
+ * - RFlexTimer::Close()
+ * - RFlexTimer::~RFlexTimer()
+ * - Expiration of timer
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ExpireAtL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Start a timer using AtUTC and wait it to expire
+ *
+ * Open RFlexTimer handle and connect to the server. Set timer to expire
+ * after 3 secs from now. Close the handle and check that the expiration is
+ * done at correct time.
+ *
+ * Tests:
+ * - RFlexTimer::RFlexTimer()
+ * - RFlexTimer::Connect()
+ * - RFlexTimer::AtUTC()
+ * - RFlexTimer::Close()
+ * - RFlexTimer::~RFlexTimer()
+ * - Expiration of timer
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ExpireAtUtcL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Start timer using After (32 bit) without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt After32WithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Start timer using After (64 bit) without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt After64WithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Start timer using AfterTicks without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt AfterTicksWithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Start timer using At without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt AtWithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Start timer using AtUtc without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt AtUtcWithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Configure (32 bit) timer without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt Configure32WithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Configure (64 bit) timer without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt Configure64WithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Cancel timer using RFlexTimer without connecting to the server first.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * KERN-EXEC 0.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt CancelWithoutConnect( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Set timer twice by After.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * RFlexTimer 15 (EFlexTimerServerErrorPendingTimer).
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt CallAfterTwiceL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+
+ /**
+ * @brief Set timer twice by AfterTicks.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * RFlexTimer 15 (EFlexTimerServerErrorPendingTimer).
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt CallAfterTicksTwiceL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Set timer twice by At.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * RFlexTimer 15 (EFlexTimerServerErrorPendingTimer).
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt CallAtTwiceL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Set timer twice by AtUTC.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * RFlexTimer 15 (EFlexTimerServerErrorPendingTimer).
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt CallAtUtcTwiceL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Connect to timer server twice.
+ *
+ * This tests illeagal usage of the interface and it'll panic with
+ * RFlexTimer 32 (EFlexTimerAlreadyConnected).
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt CallConnectTwiceL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+
+ /**
+ * @brief Reconnect to timer server.
+ *
+ * Connect, close and connect again the handle.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ReconnectL( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+
+ /**
+ * @brief Cancel timer using RFlexTimer without starting it first.
+ *
+ * This tests a leagal uage of the interface. Timer can be cancelled
+ * without setting it first.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt CancelWithoutStart( TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Call AfterTicks() with negative value.
+ *
+ * This test illegal usage of the interface. There has to be zero or more
+ * ticks.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt NegativeTicksInAfterTicksL(
+ TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Call AfterTicks() with zero.
+ *
+ * This tests leagal usage of the interface.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ZeroTicksInAfterTicksL(
+ TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Change system time during AfterTicks timer is running.
+ *
+ * Set timer to be expired after 640 ticks (10 sec). After 1 sec from
+ * starting the timer, add system time 3 seconds. Check that the timer
+ * expires after 10 seconds from starting (13 secs by system time).
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt ChangeTimeWhileAfterTicksL(
+ TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+ /**
+ * @brief Test that timer window works correctly.
+ *
+ * Create three timers:
+ * T1: expire after 4-8 secs
+ * T2: expire after 7-8 secs
+ * T3: expire after 5 secs
+ *
+ * T1 and T2 are AfterTicks -timers T3 is After timer.
+ *
+ * Check that T1 has expired after 5 secs and T2 after 8 secs of setting.
+ *
+ * @param aResult The result of the test.
+ * @param aCallback Pointer to the STIF test class
+ * @return The status of execution of the test. KErrNone if the test
+ * was executed ok, any system wide errorcode otherwise.
+ */
+ static TInt TestAfterTicksWindowL(
+ TTestResult& aResult,
+ CTestFlexTimer* aCallback );
+
+private:
+
+ /**
+ * Constructor.
+ * Keep it private to prevent instantiation of the class.
+ */
+ CTestRFlexTimer();
+
+ /**
+ * Check is the delay in the window.
+ * @param aDelay Interval to be checked.
+ * @param aInterval Interval of the timer.
+ * @param aWindow Allowed window of the timer.
+ * @return ETrue if the delay is correc, EFalse otherwise.
+ */
+ static TBool IsDelayOk(
+ const TTimeIntervalMicroSeconds aDelay,
+ const TTimeIntervalMicroSeconds32 aInterval,
+ const TTimeIntervalMicroSeconds32 aWindow );
+
+ /**
+ * Check is the delay in the window.
+ * @param aDelay Interval to be checked.
+ * @param aInterval Interval of the timer.
+ * @param aWindow Allowed window of the timer.
+ * @return ETrue if the delay is correc, EFalse otherwise.
+ */
+ static TBool IsDelayOk(
+ const TTimeIntervalMicroSeconds aDelay,
+ const TTimeIntervalMicroSeconds32 aInterval,
+ const TTimeIntervalMicroSeconds aWindow );
+
+ /**
+ * Check is the delay in the window.
+ * @param aDelay Interval to be checked.
+ * @param aInterval Interval of the timer.
+ * @param aWindow Allowed window of the timer.
+ * @return ETrue if the delay is correc, EFalse otherwise.
+ */
+ static TBool IsDelayOk(
+ const TTimeIntervalMicroSeconds aDelay,
+ const TTimeIntervalMicroSeconds aInterval,
+ const TTimeIntervalMicroSeconds32 aWindow );
+
+ /**
+ * Check is the delay in the window.
+ * @param aDelay Interval to be checked.
+ * @param aInterval Interval of the timer.
+ * @param aWindow Allowed window of the timer.
+ * @return ETrue if the delay is correc, EFalse otherwise.
+ */
+ static TBool IsDelayOk(
+ const TTimeIntervalMicroSeconds aDelay,
+ const TTimeIntervalMicroSeconds aInterval,
+ const TTimeIntervalMicroSeconds aWindow );
+
+ /**
+ * A helper function for AfterTicks() testing.
+ * -# Creates RFlexTimer handle,
+ * -# connects it to the server,
+ * -# configures timer's window (default 0 microseconds),
+ * -# set the timer to expire after given ticks,
+ * -# wait timer to be expired
+ * -# return the delay of the timer
+ *
+ * @param aTicks Timer's interval in number of ticks
+ * @param aWindowSize Timer's window (default 0 microseconds)
+ * @return The delay of the timer in microseconds
+ */
+ static TTimeIntervalMicroSeconds ExecuteAfterTicksL(
+ TInt aTicks,
+ TTimeIntervalMicroSeconds aWindowSize = 0 );
+
+private: // data
+
+ };
+
+#endif // TESTRFLEXTIMER_H