camerasrv_plat/media_recorder_api/tsrc/src/camcTest_4.cpp
changeset 0 9b3e960ffc8a
child 42 605672cc2a86
equal deleted inserted replaced
-1:000000000000 0:9b3e960ffc8a
       
     1 /*
       
     2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Camcorder MMF API Test DLL, State transition tests
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include "camcTest_4.h"
       
    22 #include "camcTest.h"
       
    23 
       
    24 // EXTERNAL DATA STRUCTURES
       
    25 
       
    26 // EXTERNAL FUNCTION PROTOTYPES 
       
    27  
       
    28 // CONSTANTS
       
    29 
       
    30 // MACROS
       
    31 
       
    32 // LOCAL CONSTANTS AND MACROS
       
    33 
       
    34 // MODULE DATA STRUCTURES
       
    35 
       
    36 // LOCAL FUNCTION PROTOTYPES
       
    37 
       
    38 // FORWARD DECLARATIONS
       
    39 
       
    40 
       
    41 ///////////////////////////////////////////////////////////////////
       
    42 // Automated API Tests 
       
    43 //
       
    44 ///////////////////////////////////////////////////////////////////
       
    45 
       
    46 CCamcTest_4::CCamcTest_4 ()
       
    47     {
       
    48     }
       
    49 
       
    50 
       
    51 
       
    52 CCamcTest_4::~CCamcTest_4 ()
       
    53     {
       
    54     delete iCamcTestClient;
       
    55     iCamcTestClient = NULL;
       
    56     }
       
    57 
       
    58 
       
    59 void CCamcTest_4::setUpL ()
       
    60     {
       
    61     iCamcTestClient = CCamcTestClient_4::NewL( );
       
    62 
       
    63     iWaitScheduler = new (ELeave) CActiveSchedulerWait;	
       
    64 
       
    65     // Create a new Camera API implementation object, if supported
       
    66     TRAPD( err, iUiLevelCamera = CCamera::New2L( static_cast<MCameraObserver2&>(*this), 0 /*index*/, 0 /*Priority*/ ) );
       
    67     if ( err )
       
    68         {
       
    69         PRINT( ( _L( "CCamcTest_4::setUpL CCamera::New2L return code=%d" ), err ) ); 
       
    70         // Create old Camera API implementation object.
       
    71         iUiLevelCamera = CCamera::NewL( static_cast<MCameraObserver&>(*this), 0 /*Index*/ );
       
    72         }
       
    73     else 
       
    74        {
       
    75        PRINT( ( _L( "CCamcTest_4::setUp() using new MCameraObserver2" )) ); 
       
    76        }
       
    77 
       
    78 	iUiLevelCameraHandle = iUiLevelCamera->Handle();
       
    79 	iUiLevelCamera->Reserve();
       
    80 	iWaitScheduler->Start();       
       
    81     }
       
    82 
       
    83 
       
    84 void CCamcTest_4::tearDown ()
       
    85     {
       
    86     delete iCamcTestClient;
       
    87     iCamcTestClient = NULL;
       
    88     delete iWaitScheduler;
       
    89     delete iUiLevelCamera;      
       
    90 	REComSession::FinalClose();
       
    91     }
       
    92 
       
    93 
       
    94 //
       
    95 // Own test functions.
       
    96 //
       
    97 
       
    98 // //////////////////////////////////////////////////////////////////
       
    99 //                       RecordTimeAvailableL tests
       
   100 // //////////////////////////////////////////////////////////////////
       
   101 
       
   102 // Allows a 10% margin for the filesize
       
   103 #define TC4_ALLOWED_MARGIN ( TC4_FILE_SIZE_LIMIT * 0.1 )
       
   104 
       
   105 void CCamcTest_4::RecordTimeAvailableL_001_L()
       
   106     {
       
   107     ///////////////////////////////////////
       
   108 	//   ID: CAMC_API.RECORDTIMEAVAILABLEL_001
       
   109     //   Action :
       
   110     //       Ask time available frequently using timer
       
   111     //   Output : 
       
   112     //       Value is decreasing all the time
       
   113     //   Precondition :
       
   114     //       File Size limit set.
       
   115     //       Recording
       
   116     ///////////////////////////////////////
       
   117 
       
   118 
       
   119     iCamcTestClient->Start_Active_ObjectL( 
       
   120         CCamcTestClient_4::K4RecordTimeAvailSizeLimit, iUiLevelCameraHandle );
       
   121 
       
   122     /* Check if size is according to previously set Size limit */
       
   123     RFile file; 
       
   124     TInt filesize;
       
   125     RFs fsSession;
       
   126     fsSession.Connect();
       
   127     TFileName fileName;
       
   128     AddDriveLetterToPath(_L("recordQCIF.3gp"),fileName);
       
   129     TInt err = file.Open(fsSession,fileName,EFileShareAny);
       
   130     assertTIntsEqualL( KErrNone, err );
       
   131 
       
   132     err = file.Size(filesize);
       
   133     
       
   134     file.Close();
       
   135     fsSession.Close();
       
   136 
       
   137     if ( ( filesize > TC4_FILE_SIZE_LIMIT + TC4_ALLOWED_MARGIN ) ||
       
   138         (filesize < TC4_FILE_SIZE_LIMIT - TC4_ALLOWED_MARGIN ) )
       
   139         {
       
   140         assertL(0);
       
   141         }
       
   142     }
       
   143 
       
   144 
       
   145 void CCamcTest_4::RecordTimeAvailableL_002_L()
       
   146     {
       
   147     ///////////////////////////////////////
       
   148 	//   ID: CAMC_API.RECORDTIMEAVAILABLEL_002
       
   149     //   Action :
       
   150     //       Ask time available frequently using timer
       
   151     //   Output : 
       
   152     //       Value is decreasing all the time
       
   153     //   Precondition :
       
   154     //       File Size limit is NOT set.
       
   155     //       Recording
       
   156     ///////////////////////////////////////
       
   157 
       
   158     iCamcTestClient->Start_Active_ObjectL( 
       
   159         CCamcTestClient_4::K4RecordTimeAvailNoSizeLimit, iUiLevelCameraHandle  );
       
   160 
       
   161     }
       
   162 
       
   163 void CCamcTest_4::RecordTimeAvailableL_003_L()
       
   164     {
       
   165     ///////////////////////////////////////
       
   166 	//   ID: CAMC_API.RECORDTIMEAVAILABLEL_003
       
   167     //   Action :
       
   168     //       Not recording, size limit set
       
   169     //       Asking RecordTimeAvailable()
       
   170     //   Output : 
       
   171     //       Value is proportional to size limit set
       
   172     //   Precondition :
       
   173     //       File Size limit is set.
       
   174     ///////////////////////////////////////
       
   175 
       
   176     iCamcTestClient->Start_Active_ObjectL( 
       
   177         CCamcTestClient_4::K4RecordTimeAvailNotRecordingSizeLimit, iUiLevelCameraHandle  );
       
   178 
       
   179     }
       
   180 
       
   181 void CCamcTest_4::RecordTimeAvailableL_004_L()
       
   182     {
       
   183     ///////////////////////////////////////
       
   184 	//   ID: CAMC_API.RECORDTIMEAVAILABLEL_004
       
   185     //   Action :    
       
   186     //       Asking RecordTimeAvailable()
       
   187     //   Output : 
       
   188     //       Value is acceptable
       
   189     //   Precondition :    
       
   190     //       Not recording, size limit NOT set
       
   191     ///////////////////////////////////////
       
   192     
       
   193     iCamcTestClient->Start_Active_ObjectL( 
       
   194         CCamcTestClient_4::K4RecordTimeAvailNotRecordingNoSizeLimit, iUiLevelCameraHandle  );
       
   195 
       
   196     }
       
   197 
       
   198 void CCamcTest_4::RecordTimeAvailableL_006_L()
       
   199     {
       
   200     ///////////////////////////////////////
       
   201 	//   ID: CAMC_API.RECORDTIMEAVAILABLEL_006
       
   202     //   Action :    
       
   203     //       Asking RecordTimeAvailable(), every seconds,
       
   204     //       and keep in memory last value for Time Remaining
       
   205     //   Output : 
       
   206     //       Value is acceptable. Last value of Time Remaining <= 5 sec.
       
   207     //   Precondition :    
       
   208     //       Recording, size limit NOT set
       
   209     ///////////////////////////////////////
       
   210     
       
   211     TRAPD(err, iCamcTestClient->Start_Active_ObjectL( 
       
   212         CCamcTestClient_4::K4RecordTimeAvailUntilDiskFull, iUiLevelCameraHandle  ));
       
   213     assertTIntsEqualL( KErrDiskFull, err );
       
   214 
       
   215     }
       
   216 //
       
   217 // An own static function to collect the test functions into one 
       
   218 // suite of tests. The framework will run the tests and free the
       
   219 // memory allocated for the test suite.
       
   220 // 
       
   221 
       
   222 // //////////////////////////////////////////////////////////////////
       
   223 //   Dummy Camera API callback functions
       
   224 // //////////////////////////////////////////////////////////////////
       
   225 void CCamcTest_4::ReserveComplete(TInt /*aError*/)
       
   226     {
       
   227     RDebug::Print(_L("CCamcTest_4::ReserveComplete"));
       
   228         
       
   229     // UI level camera is being initialized        
       
   230     if (iWaitScheduler->IsStarted())
       
   231 	    {
       
   232     	 iUiLevelCamera->PowerOn();
       
   233     	 return;
       
   234 	    }
       
   235     }
       
   236 
       
   237 void CCamcTest_4::PowerOnComplete(TInt /*aError*/)
       
   238     {   
       
   239     RDebug::Print(_L("CCamcTest_4::PowerOnComplete"));
       
   240         
       
   241     // UI level camera is being initialized
       
   242     if (iWaitScheduler->IsStarted())
       
   243 	    {
       
   244     	 iWaitScheduler->AsyncStop();
       
   245     	 return;
       
   246     	}        
       
   247     }
       
   248 
       
   249 void CCamcTest_4::ViewFinderFrameReady(CFbsBitmap& /*aFrame*/)
       
   250     {
       
   251     }
       
   252 void CCamcTest_4::ImageReady(CFbsBitmap* /*aBitmap */,HBufC8* /*aData*/,TInt /*aError*/)
       
   253     {    
       
   254     }
       
   255 void CCamcTest_4::FrameBufferReady(MFrameBuffer* /*aFrameBuffer*/,TInt /*aError*/ )
       
   256     {
       
   257     }
       
   258 
       
   259 // -----------------------------------------------------------------------------
       
   260 // CCamcTest_4::HandleEvent
       
   261 // MCameraObserver2 call-back handler
       
   262 // -----------------------------------------------------------------------------
       
   263 //
       
   264 void CCamcTest_4::HandleEvent( const TECAMEvent& aEvent)
       
   265     {
       
   266     PRINT(( _L( "CCamcTest_4::HandleEvent() entering, type=%x, err=%d" ), aEvent.iEventType.iUid, aEvent.iErrorCode ));
       
   267 
       
   268     if ( aEvent.iEventType == KUidECamEventCameraNoLongerReserved )
       
   269         {
       
   270         PRINT(( _L( "CCamcTest_4::HandleEvent() KUidECamEventCameraNoLongerReserved" ) ));
       
   271         }
       
   272     else if ( aEvent.iEventType == KUidECamEventPowerOnComplete )
       
   273         {
       
   274         PRINT(( _L( "CCamcTest_4::HandleEvent() KUidECamEventPowerOnComplete" ) ));
       
   275         PowerOnComplete( aEvent.iErrorCode );
       
   276         }
       
   277     else if ( aEvent.iEventType == KUidECamEventReserveComplete )
       
   278        {
       
   279        PRINT(( _L( "CCamcTest_4::HandleEvent() KUidECamEventReserveComplete" ) ));
       
   280        ReserveComplete( aEvent.iErrorCode );
       
   281        }
       
   282 
       
   283     PRINT(( _L( "CCamcTestClient_7::HandleEvent() returning" ) ));
       
   284     }
       
   285 
       
   286 // -----------------------------------------------------------------------------
       
   287 // CCamcTest_4::ViewFinderReady
       
   288 // MCameraObserver2 call-back handler
       
   289 // -----------------------------------------------------------------------------
       
   290 //
       
   291 void CCamcTest_4::ViewFinderReady( MCameraBuffer& aCameraBuffer, TInt aError)
       
   292     {
       
   293     PRINT(( _L( "CCamcTest_4::ViewFinderReady() NOT HANDLED err=%d, NumFrames=%d" ), aError, aCameraBuffer.NumFrames() ));
       
   294     CFbsBitmap *buffer = NULL;
       
   295     if ( !aError )
       
   296         {
       
   297 	    aCameraBuffer.Release();
       
   298         }
       
   299     ViewFinderFrameReady( *buffer );
       
   300     }
       
   301 
       
   302 // -----------------------------------------------------------------------------
       
   303 // CCamcTest_4::ImageBufferReady
       
   304 // MCameraObserver2 call-back handler
       
   305 // -----------------------------------------------------------------------------
       
   306 //
       
   307 void CCamcTest_4::ImageBufferReady( MCameraBuffer& aCameraBuffer, TInt aError)
       
   308     {
       
   309     PRINT(( _L( "CCamcTest_4::ImageBufferReady() BUFFER NOT HANDLED, err=%d, NumFrames=%d" ), aError, aCameraBuffer.NumFrames() ));
       
   310 	
       
   311     if ( !aError )
       
   312         {
       
   313 	    aCameraBuffer.Release();
       
   314         }
       
   315     ImageReady( NULL, NULL, aError );
       
   316     }
       
   317     
       
   318 // -----------------------------------------------------------------------------
       
   319 // CCamcTest_4::VideoBufferReady
       
   320 // MCameraObserver2 call-back handler
       
   321 // -----------------------------------------------------------------------------
       
   322 //
       
   323 void CCamcTest_4::VideoBufferReady( MCameraBuffer& aCameraBuffer, TInt aError)
       
   324     {
       
   325     PRINT(( _L( "CCamcTest_4::VideoBufferReady() entering, err=%d, NumFrames=%d" ), aError, aCameraBuffer.NumFrames() ));
       
   326     MFrameBuffer* buffer = NULL;
       
   327 	
       
   328     if ( !aError )
       
   329         {
       
   330         aCameraBuffer.Release();
       
   331         }
       
   332     // Call old Camera-API observer handler
       
   333     FrameBufferReady( buffer, aError );
       
   334     
       
   335     PRINT(( _L( "CCamcTest_4::VideoBufferReady() returning" )));
       
   336     }
       
   337 
       
   338 
       
   339 
       
   340 MTest* CCamcTest_4::suiteL ()
       
   341     {
       
   342     // Always use NewL (Do not use NewLC) !!!
       
   343     CTestSuite *suite = CTestSuite::NewL(_L8("CCamcTest_4"));
       
   344 
       
   345     suite->addTestL(CTestCaller<CCamcTest_4>::NewL(_L8("CAMC_API.RECORDTIMEAVAILABLE_001"), &RecordTimeAvailableL_001_L));
       
   346 #if ! (defined (__WINS__) || defined (__WINSCW__) )
       
   347     suite->addTestL(CTestCaller<CCamcTest_4>::NewL(_L8("CAMC_API.RECORDTIMEAVAILABLE_002"), &RecordTimeAvailableL_002_L));
       
   348 #endif
       
   349     suite->addTestL(CTestCaller<CCamcTest_4>::NewL(_L8("CAMC_API.RECORDTIMEAVAILABLE_003"), &RecordTimeAvailableL_003_L));
       
   350     suite->addTestL(CTestCaller<CCamcTest_4>::NewL(_L8("CAMC_API.RECORDTIMEAVAILABLE_004"), &RecordTimeAvailableL_004_L));
       
   351 
       
   352     // RecordTimeAvailableL_006, only to be tested on HW
       
   353     // Removed from MuDo tests
       
   354 #if ! (defined (__WINS__) || defined (__WINSCW__) )
       
   355 //    suite->addTestL(CTestCaller<CCamcTest_4>::NewL(_L8("CAMC_API.RECORDTIMEAVAILABLE_006"), &RecordTimeAvailableL_006_L));
       
   356 #endif
       
   357   
       
   358     return suite;
       
   359     }
       
   360 
       
   361