graphicsresourceservices/graphicsresource/test/tgraphicsresourceteststepbase.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:47:50 +0200
changeset 0 5d03bc08d59c
permissions -rw-r--r--
Revision: 201003 Kit: 201005

// Copyright (c) 2007-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:
//

#ifndef TGRAPHICSRESOURCETESTSTEPBASE_H
#define TGRAPHICSRESOURCETESTSTEPBASE_H

#include "sgimage.h"
#include "sgimagecollection.h"
#include "sgresource.h"
#include "tgraphicsresourcemultiprocessthread.h"
#include <e32base.h>
#include <test/testexecutestepbase.h>
#include <graphics/sgimage_sw.h>
#include <graphics/sgimage_chunk.h>
#include <test/ttmsgraphicsstep.h>


_LIT(KSgTestGenericPanicCategory, "SGRES");
_LIT(KSgTestAdapterPanicCategory, "SGRES-ADAPTER");
const TInt KMaxPixelFormats = 64;

class CTSgTestStepBase : public CTTMSGraphicsStep
	{
public:
	CTSgTestStepBase();
	~CTSgTestStepBase();
	IMPORT_C void testBooleanTrue(TBool aCondition, const TText8* aFile, TInt aLine);
protected:
	// From CTestStep
	virtual TVerdict doTestStepPreambleL(); 
	virtual TVerdict doTestStepPostambleL();	
	
	//common utility functions
	void CreateImageL(RSgImage& aImage);
	void CreateImageCollectionL(RSgImageCollection& aCollection);
	TInt CreateSecondProcessAndDoTestL(const TDesC &aProcessName, TSgresTestInfo& aTestInfo);
	TInt CreateSecondThreadAndDoTestL(TSgresTestInfo aTestInfo);
	void CreateSecondThreadAndCheckPanicL(TSgresTestInfo aTestInfo, TInt aPanicCode, TExitCategoryName aExitCategory, const TDesC &aThreadName);
	void CreateSecondProcessAndCheckPanicL(TSgresTestInfo aTestInfo, TInt aPanicCode, TExitCategoryName aExitCategory, const TDesC &aProcessName);
	void CallGetPixelFormatsL(TSgCpuAccess aCpuAccess, TUint32 aUsage, TBool aShareable, TInt aScreenId);
	void TestGetPixelFormatCompatibilityGuaranteesL();
	void CheckPixelFormatPresent(TUidPixelFormat aPixelFormat);
	void TestOpenDriverL();
	void TestCloseDriver();
	static TBool CompareInfos(TSgImageInfo& info1, TSgImageInfo& info2);
	static TInt SecondThreadStart(TAny* aInfo);
	static void CloseDriverWhenLeave(TAny* aInfo);
	void CheckErrorL(TInt aExpectedErrorCode, TInt aActualErrorCode, const TText8* aFile, TInt aLine);
	
	//OOM test functions
	void TestOOM();
	virtual void DoMemoryTestsL();
	
protected:	
	RThread iSecondThread;
	TBool iRunningOomTests;
private:
	TInt iPixelFormatCount;
	TUidPixelFormat iPixelFormatArray[KMaxPixelFormats];
	};

//common variables and functions
const TUint16 KImageData[] = {
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,
			0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0,0x7E0
			};

const TInt KNumImagesInCollection = 10;

#define TESTWITHFILENAMEANDLINENUMBERL(a, f, l) \
	{\
	testBooleanTrueL((a), f, l); \
	}

#if	defined(__WINS__)
_LIT(KSecondProcess, "tgraphicsresourcesecondprocess.exe");
#elif defined(SYMBIAN_GRAPHICS_USE_GPU_MEMORY)
_LIT(KSecondProcess, "tgraphicsresourcesecondprocess_mbx.exe");
#else
_LIT(KSecondProcess, "tgraphicsresourcesecondprocess_sw.exe");
#endif

_LIT(KSecondThread, "Test_GraphicsResource_SecondThread");
_LIT(KSecondThreadSemaphore, "Second Thread Semaphore");

#endif