graphicsresourceservices/graphicsresourceimplementation/test/src/tsgdriver.cpp
changeset 36 01a6848ebfd7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsresourceservices/graphicsresourceimplementation/test/src/tsgdriver.cpp	Fri Apr 16 16:21:04 2010 +0300
@@ -0,0 +1,207 @@
+// 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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Graphics Resource API Conformance Test Suite
+*/
+
+#include "tsgdriver.h"
+
+CTSgDriver::CTSgDriver(TBool aConformanceTests) :
+	CTSgTestStepBase(aConformanceTests)
+	{
+	INFO_PRINTF1(_L("Graphics resource component test - SgDriver Tests.\r\n"));
+	}
+
+CTSgDriver::~CTSgDriver()
+	{
+	}
+
+/** 
+Overrides of base class pure virtual
+Our implementation only gets called if the base class doTestStepPreambleL() did
+not leave. That being the case, the current test result value will be EPass.
+@leave Gets system wide error code
+@return TVerdict code
+*/
+TVerdict CTSgDriver::doTestStepL()
+	{	
+	SetTestStepID(_L("GRAPHICS-RESOURCE-0022"));
+	INFO_PRINTF1(_L("Shutting down an uninitialised driver.\r\n"));
+	TestShutdownUninitialized();
+	RecordTestResultL();
+
+	SetTestStepID(_L("GRAPHICS-RESOURCE-0096"));
+	INFO_PRINTF1(_L("Checking the driver is the correct version.\r\n"));
+	TestVersion();
+	RecordTestResultL();
+	
+	SetTestStepID(_L("GRAPHICS-RESOURCE-0099"));
+	INFO_PRINTF1(_L("Checking the driver returns the correct error on multiple opens.\r\n"));
+	TestMultipleOpens();
+	RecordTestResultL();
+	
+	SetTestStepID(_L("GRAPHICS-RESOURCE-0103"));
+	INFO_PRINTF1(_L("Checking GetInterface() returns correct error codes.\r\n"));
+	TestGetInterface();
+	RecordTestResultL();
+	
+	return TestStepResult();
+	}
+
+/**
+@SYMTestCaseID			GRAPHICS-RESOURCE-0022
+@SYMTestCaseDesc		Shuts down an uninitialised driver.
+@SYMPREQ				PREQ2637
+@SYMFssID				RSgDriver::Close()
+@SYMTestPriority		Low
+@SYMTestType			UT
+@SYMTestPurpose			To ensure invalid Close() calls on the driver will cause no errors.
+@SYMTestActions			Call RSgDriver::Close() several times without calling RSgDriver::Open().
+@SYMTestExpectedResults	No errors should be returned.
+ */	
+void CTSgDriver::TestShutdownUninitialized()
+	{
+	__UHEAP_MARK;	
+	
+	RSgDriver sgDriver;
+	
+	sgDriver.Close();
+	sgDriver.Close();
+	sgDriver.Close();
+	
+	__UHEAP_MARKEND;
+	}
+
+/**
+@SYMTestCaseID			GRAPHICS-RESOURCE-0096
+@SYMTestCaseDesc		Test the version number returned by RSgDriver is correct.
+@SYMPREQ				PREQ2637
+@SYMFssID				RSgDriver::Version()
+@SYMTestPriority		Medium
+@SYMTestType			UT
+@SYMTestPurpose			To check the correct version of the driver is being used in the
+						conformance tests.
+@SYMTestActions			Call RSgDriver::Version().
+@SYMTestExpectedResults	The correct version should be returned.
+ */	
+void CTSgDriver::TestVersion()
+	{
+	__UHEAP_MARK;	
+	
+	RSgDriver sgDriver;
+	
+	TVersion vers = sgDriver.Version();
+	TEST(vers.iMajor == 1);
+	TEST(vers.iMinor == 1);
+	
+	__UHEAP_MARKEND;
+	}
+
+/**
+@SYMTestCaseID			GRAPHICS-RESOURCE-0099
+@SYMTestCaseDesc		Test SgDriver Handles Multiple Calls to Open Correctly
+@SYMPREQ				PREQ2637
+@SYMFssID				RSgDriver::Open()
+@SYMTestPriority		High
+@SYMTestType			UT
+@SYMTestPurpose			To ensure the correct error code is returned when an open
+						driver is opened
+@SYMTestActions			Call RSgDriver::Open().
+@SYMTestExpectedResults	KErrInUse should be returned when the driver is opened for
+						the second time and all subsequent times.
+ */	
+void CTSgDriver::TestMultipleOpens()
+	{
+	__UHEAP_MARK;	
+	
+	TInt err = KErrNone;
+	RSgDriver sgDriver;
+	
+	err = sgDriver.Open();
+	TESTE(KErrNone == err, err);
+	err = sgDriver.Open();
+	TESTE(KErrInUse == err, err);
+	err = sgDriver.Open();
+	TESTE(KErrInUse == err, err);
+	err = sgDriver.Open();
+	TESTE(KErrInUse == err, err);	
+	sgDriver.Close();	
+	
+	__UHEAP_MARKEND;
+	}
+
+/**
+@SYMTestCaseID			GRAPHICS-RESOURCE-0103
+@SYMTestCaseDesc		Test that GetInterface() returns the correct error code	in 
+						negative situations.
+@SYMPREQ				PREQ2637
+@SYMFssID				RSgDriver::GetInterface()
+@SYMTestPriority		Low
+@SYMTestType			UT
+@SYMTestPurpose			To ensure the correct error code is returned when GetInterface() 
+						is used, in a variety of sitations.
+@SYMTestActions			Call RSgDriver::GetInterface() with an interface that is valid but
+						not supported by the driver.			
+						Call RSgDriver::GetInterface() with an interface with a Null ID.
+						Call RSgDriver::GetInterface() with any interface, on a driver that
+						is not yet open.
+@SYMTestExpectedResults	When using an unsupported interface, KErrExtensionNotSupported should 
+						be returned.
+						When using an interface with the null UID, KErrArgument should be returned.
+						When using any interface after the driver is closed, KErrBadHandle
+						should be returned.
+ */
+
+/**
+Test classes for testing with RSgImage::GetInterface()
+ */
+class MFakeInterface
+    {
+public:
+    enum { EInterfaceUid = 0x88888888 };
+    };
+class MNullInterface
+    {
+public:
+    enum { EInterfaceUid = KNullUidValue };
+    };
+
+void CTSgDriver::TestGetInterface()
+	{
+	__UHEAP_MARK;
+	
+	RSgDriver sgDriver;
+	TInt err = sgDriver.Open();
+	TESTE(err == KErrNone, err);
+	
+	MFakeInterface* fakeInterface = NULL;
+	err = sgDriver.GetInterface(fakeInterface);
+	TESTE(err == KErrExtensionNotSupported, err);	
+	
+	MNullInterface* nullInterface = NULL;
+	err = sgDriver.GetInterface(nullInterface);
+	TESTE(err == KErrArgument, err);
+	
+	sgDriver.Close();	
+	err = sgDriver.GetInterface(fakeInterface);
+	TESTE(err == KErrBadHandle, err);
+	err = sgDriver.GetInterface(nullInterface);
+	TESTE(err == KErrBadHandle, err);
+	
+	__UHEAP_MARKEND;
+	}