os/mm/imagingandcamerafws/cameraunittest/src/TSU_ECM_ADV/ecamdirectviewfindertest.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include <ecamuids.hrh>
sl@0
    17
#include <ecom/ecomresolverparams.h>
sl@0
    18
#include "ecamdirectviewfindertest.h"
sl@0
    19
#include "ECamUnitTestPluginUids.hrh"
sl@0
    20
#include "ECamUnitTestPlugin.h"
sl@0
    21
#include <ecam/ecamcommonuids.hrh>
sl@0
    22
sl@0
    23
/*--------------------------------------------------------
sl@0
    24
 	DirectViewFinder : RECamDirectViewFinderTest
sl@0
    25
 *--------------------------------------------------------*/
sl@0
    26
RECamDirectViewFinderTest* RECamDirectViewFinderTest::NewL(const TDesC& aTestStep)
sl@0
    27
	{
sl@0
    28
	RECamDirectViewFinderTest* self = new (ELeave) RECamDirectViewFinderTest(aTestStep);
sl@0
    29
	return self;	
sl@0
    30
	}
sl@0
    31
	
sl@0
    32
RECamDirectViewFinderTest::RECamDirectViewFinderTest(const TDesC& aTestStep)
sl@0
    33
	{
sl@0
    34
	iTestStepName.Copy(aTestStep);
sl@0
    35
	}
sl@0
    36
	
sl@0
    37
TVerdict RECamDirectViewFinderTest::DoTestStepL()
sl@0
    38
	{
sl@0
    39
	if(!iTestStepName.Compare(_L("MM-ECM-ADV-U-044-HP")))
sl@0
    40
		{
sl@0
    41
		return DoTestStep_44L();
sl@0
    42
		}
sl@0
    43
	else if(!iTestStepName.Compare(_L("MM-ECM-ADV-U-045-HP")))
sl@0
    44
		{
sl@0
    45
		return DoTestStep_45L();
sl@0
    46
		}
sl@0
    47
	return EInconclusive;	
sl@0
    48
	}
sl@0
    49
	
sl@0
    50
TVerdict RECamDirectViewFinderTest::DoTestStep_44L()
sl@0
    51
	{
sl@0
    52
	
sl@0
    53
	TVerdict verdict = EFail;
sl@0
    54
	INFO_PRINTF1(_L("Alloc test"));
sl@0
    55
	TInt i;
sl@0
    56
	TInt err;
sl@0
    57
	for (i = 1 ; ; i++)
sl@0
    58
		{
sl@0
    59
		__MM_HEAP_MARK;
sl@0
    60
		
sl@0
    61
		if (i % 5 == 0)
sl@0
    62
			{
sl@0
    63
			INFO_PRINTF2(_L("Fail count = %d"), i);
sl@0
    64
			}
sl@0
    65
sl@0
    66
		__UHEAP_SETFAIL(RHeap::EFailNext, i);
sl@0
    67
sl@0
    68
		TRAP(err, verdict = DoTestStep_Alloc_44L());
sl@0
    69
sl@0
    70
		TAny* testAlloc = NULL;
sl@0
    71
		testAlloc = User::Alloc(1);
sl@0
    72
		TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone);
sl@0
    73
		User::Free(testAlloc);
sl@0
    74
sl@0
    75
		__UHEAP_RESET;
sl@0
    76
		__MM_HEAP_MARKEND;
sl@0
    77
sl@0
    78
		if ((err != KErrNoMemory && verdict == EPass ) || heapTestingComplete)
sl@0
    79
			{
sl@0
    80
			INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i);
sl@0
    81
			INFO_PRINTF1(_L("Alloc testing completed successfully"));
sl@0
    82
			verdict = EPass;
sl@0
    83
			break;
sl@0
    84
			}
sl@0
    85
		}
sl@0
    86
	return verdict;
sl@0
    87
sl@0
    88
	}
sl@0
    89
	
sl@0
    90
TVerdict RECamDirectViewFinderTest::DoTestStep_Alloc_44L()
sl@0
    91
	{
sl@0
    92
	TVerdict result = EPass;
sl@0
    93
	CCamera* camera = NULL;
sl@0
    94
	
sl@0
    95
	MCameraObserver* observer = NULL; 
sl@0
    96
	TInt error = KErrNone;
sl@0
    97
	CCamera::CCameraDirectViewFinder* directviewfinder = NULL;
sl@0
    98
	
sl@0
    99
	// using observer 	
sl@0
   100
	__MM_HEAP_MARK;
sl@0
   101
	INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver"));
sl@0
   102
sl@0
   103
	TRAP(error, camera = CCamera::NewL(*observer, 0));
sl@0
   104
	
sl@0
   105
	if (error==KErrNone)
sl@0
   106
		{
sl@0
   107
		CleanupStack::PushL(camera);
sl@0
   108
		INFO_PRINTF1(_L("KErrNone return from CCamera::NewL()"));
sl@0
   109
		directviewfinder = static_cast<CCamera::CCameraDirectViewFinder*> (camera->CustomInterface(KECamDirectViewFinderUid));
sl@0
   110
	    if (directviewfinder!= NULL)
sl@0
   111
	    	{
sl@0
   112
	    	CleanupStack::PushL(directviewfinder);
sl@0
   113
	    	INFO_PRINTF1(_L("CCameraDirectViewFinder object was created")); 
sl@0
   114
	    	CleanupStack::PopAndDestroy(directviewfinder);
sl@0
   115
	    	}
sl@0
   116
	    else
sl@0
   117
    		{
sl@0
   118
    		INFO_PRINTF1(_L("CCameraDirectViewFinder object wasn't created"));
sl@0
   119
    		result = EFail;    		
sl@0
   120
    		CleanupStack::PopAndDestroy(camera);
sl@0
   121
    		User::Leave (KErrNoMemory);
sl@0
   122
    		}
sl@0
   123
    	CleanupStack::PopAndDestroy(camera);
sl@0
   124
		}
sl@0
   125
	else 
sl@0
   126
		{
sl@0
   127
		INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error);
sl@0
   128
		result = EFail;
sl@0
   129
		User::Leave (KErrNoMemory);
sl@0
   130
		}
sl@0
   131
	__MM_HEAP_MARKEND;
sl@0
   132
	
sl@0
   133
	// using observer 2 
sl@0
   134
	MCameraObserver2* observer2 = NULL; 
sl@0
   135
	
sl@0
   136
	__MM_HEAP_MARK;
sl@0
   137
	INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2"));
sl@0
   138
	
sl@0
   139
	TRAP(error, camera = CCamera::New2L(*observer2, 0,0));
sl@0
   140
sl@0
   141
	if (error==KErrNone)
sl@0
   142
		{
sl@0
   143
		CleanupStack::PushL(camera);
sl@0
   144
		INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()"));
sl@0
   145
		directviewfinder = 	static_cast<CCamera::CCameraDirectViewFinder*> (camera->CustomInterface(KECamDirectViewFinderUid));
sl@0
   146
	    if (directviewfinder!= NULL)
sl@0
   147
	    	{
sl@0
   148
	    	CleanupStack::PushL(directviewfinder);
sl@0
   149
	  		INFO_PRINTF1(_L("CCameraDirectViewFinder object was created")); 
sl@0
   150
	    	CleanupStack::PopAndDestroy(directviewfinder);
sl@0
   151
	    	}
sl@0
   152
	    else
sl@0
   153
    		{
sl@0
   154
    		INFO_PRINTF1(_L("CCameraDirectViewFinder object wasn't created"));
sl@0
   155
    		result = EFail;
sl@0
   156
    		CleanupStack::PopAndDestroy(camera);
sl@0
   157
    		User::Leave (KErrNoMemory);    		
sl@0
   158
    		}	
sl@0
   159
		CleanupStack::PopAndDestroy(camera);
sl@0
   160
		}
sl@0
   161
	else 
sl@0
   162
		{
sl@0
   163
		INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error);
sl@0
   164
		result = EFail;
sl@0
   165
		User::Leave (KErrNoMemory);
sl@0
   166
		}
sl@0
   167
	__MM_HEAP_MARKEND;
sl@0
   168
	
sl@0
   169
	// create a directviewfinder object using New2L
sl@0
   170
	__MM_HEAP_MARK;
sl@0
   171
	INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2"));
sl@0
   172
	
sl@0
   173
	TRAP(error, camera = CCamera::New2L(*observer2, 0,0));
sl@0
   174
sl@0
   175
	if (error==KErrNone)
sl@0
   176
		{
sl@0
   177
		CleanupStack::PushL(camera);
sl@0
   178
		INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()"));
sl@0
   179
		TRAP(error, directviewfinder  = CCamera::CCameraDirectViewFinder::NewL(*camera));	
sl@0
   180
		
sl@0
   181
		if (error==KErrNone)
sl@0
   182
	    	{
sl@0
   183
	    	CleanupStack::PushL(directviewfinder);
sl@0
   184
	  		INFO_PRINTF1(_L("CCameraDirectViewFinder object was created using NewL")); 
sl@0
   185
	    	CleanupStack::PopAndDestroy(directviewfinder);
sl@0
   186
	    	}
sl@0
   187
	    else
sl@0
   188
    		{
sl@0
   189
    		INFO_PRINTF1(_L("CCameraDirectViewFinder object was not created using NewL")); 
sl@0
   190
    		result = EFail;
sl@0
   191
    		CleanupStack::PopAndDestroy(camera);
sl@0
   192
    		User::Leave (KErrNoMemory);
sl@0
   193
    		}	
sl@0
   194
		CleanupStack::PopAndDestroy(camera);
sl@0
   195
		}
sl@0
   196
	else 
sl@0
   197
		{
sl@0
   198
		INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error);
sl@0
   199
		result = EFail;
sl@0
   200
		User::Leave (KErrNoMemory);
sl@0
   201
		}
sl@0
   202
	__MM_HEAP_MARKEND;
sl@0
   203
   
sl@0
   204
	return result;	
sl@0
   205
	}
sl@0
   206
TVerdict RECamDirectViewFinderTest::DoTestStep_45L()
sl@0
   207
	{
sl@0
   208
	TVerdict result = EPass;
sl@0
   209
	CCamera* camera = NULL;
sl@0
   210
	
sl@0
   211
	TInt error = KErrNone;
sl@0
   212
	CCamera::CCameraDirectViewFinder* directviewfinder = NULL;
sl@0
   213
		
sl@0
   214
	// create a directviewfinder object using New2L
sl@0
   215
	__MM_HEAP_MARK;
sl@0
   216
	MCameraObserver2* observer2 = NULL; 
sl@0
   217
	INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2"));
sl@0
   218
	
sl@0
   219
	TRAP(error, camera = CCamera::New2L(*observer2, 0,0));
sl@0
   220
sl@0
   221
	if (error==KErrNone)
sl@0
   222
		{
sl@0
   223
		CleanupStack::PushL(camera);
sl@0
   224
		INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()"));
sl@0
   225
		TRAP(error, directviewfinder  = CCamera::CCameraDirectViewFinder::NewL(*camera));	
sl@0
   226
		
sl@0
   227
		if (error==KErrNone)
sl@0
   228
	    	{
sl@0
   229
	  		INFO_PRINTF1(_L("CCameraDirectViewFinder object was created using NewL")); 
sl@0
   230
	    	}
sl@0
   231
	    else
sl@0
   232
    		{
sl@0
   233
    		INFO_PRINTF1(_L("CCameraDirectViewFinder object was not created using NewL")); 
sl@0
   234
    		return EFail;
sl@0
   235
    		}	
sl@0
   236
		}
sl@0
   237
	else 
sl@0
   238
		{
sl@0
   239
		INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error);
sl@0
   240
		result = EFail;		
sl@0
   241
		}
sl@0
   242
	
sl@0
   243
	if (directviewfinder!= NULL)
sl@0
   244
    	{
sl@0
   245
    	CleanupStack::PushL(directviewfinder);
sl@0
   246
    	
sl@0
   247
    	// get the default viewfinder state
sl@0
   248
    	CCamera::CCameraDirectViewFinder::TViewFinderState vfstate;
sl@0
   249
    	vfstate = directviewfinder->ViewFinderState();
sl@0
   250
    	
sl@0
   251
    	// the vfstate should be EViewFinderInActive 
sl@0
   252
        if (vfstate != CCamera::CCameraDirectViewFinder::EViewFinderInActive)
sl@0
   253
        	{
sl@0
   254
        	INFO_PRINTF1(_L("Direct Viewfinder state incorrectly set")); 
sl@0
   255
        	return EFail;
sl@0
   256
        	}
sl@0
   257
        	
sl@0
   258
        // Assumption is that meanwhile direct viewfinder has been started. This would be done by calling CCamera::StartViewFinderDirectL(). 
sl@0
   259
        // This function starts the direct viewfinder and hence changes the state to active. 
sl@0
   260
        // Also performs initial boundary checking that 'viewfinder remains inactive before its called'. So, the vfstate changes to active.
sl@0
   261
        // The next step is to pause the direct viewfinder
sl@0
   262
                
sl@0
   263
    	TRAP(error, directviewfinder->PauseViewFinderDirectL());
sl@0
   264
    	
sl@0
   265
    	if(error==KErrNone)
sl@0
   266
    		{
sl@0
   267
    		INFO_PRINTF1(_L("View finder paused successfully"));
sl@0
   268
    		}
sl@0
   269
    	else
sl@0
   270
    		{
sl@0
   271
    		INFO_PRINTF2(_L("direct viewfinder pause - %d"), error);
sl@0
   272
    		return EFail;
sl@0
   273
    		}
sl@0
   274
    	
sl@0
   275
    	vfstate = directviewfinder->ViewFinderState();
sl@0
   276
    	
sl@0
   277
    	// the vfstate should be changed to EViewFinderPause 
sl@0
   278
    	if (vfstate != CCamera::CCameraDirectViewFinder::EViewFinderPause)
sl@0
   279
        	{
sl@0
   280
        	INFO_PRINTF1(_L("Direct Viewfinder state incorrectly set after pausing")); 
sl@0
   281
        	return EFail;
sl@0
   282
        	}
sl@0
   283
    		
sl@0
   284
    	// The next step is to resume the direct viewfinder
sl@0
   285
    		
sl@0
   286
    	TRAP(error, directviewfinder->ResumeViewFinderDirectL());
sl@0
   287
    	
sl@0
   288
    	if(error==KErrNone)
sl@0
   289
    		{
sl@0
   290
    		INFO_PRINTF1(_L("View finder resumed successfully"));
sl@0
   291
    		}
sl@0
   292
    	else
sl@0
   293
    		{
sl@0
   294
    		INFO_PRINTF2(_L("direct viewfinder resume - %d"), error);
sl@0
   295
    		return EFail;
sl@0
   296
    		}
sl@0
   297
    		
sl@0
   298
    	vfstate = directviewfinder->ViewFinderState();
sl@0
   299
    	
sl@0
   300
    	// the vfstate should be changed to EViewFinderActive 
sl@0
   301
    	if (vfstate != CCamera::CCameraDirectViewFinder::EViewFinderActive)
sl@0
   302
        	{
sl@0
   303
        	INFO_PRINTF1(_L("Direct Viewfinder state incorrectly set after resuming")); 
sl@0
   304
        	return EFail;
sl@0
   305
        	}
sl@0
   306
    		
sl@0
   307
    	CleanupStack::PopAndDestroy(directviewfinder);
sl@0
   308
    	}
sl@0
   309
	CleanupStack::PopAndDestroy(camera);
sl@0
   310
	
sl@0
   311
	__MM_HEAP_MARKEND;
sl@0
   312
   
sl@0
   313
	return result;
sl@0
   314
	}