diff -r 5d03bc08d59c -r 01a6848ebfd7 graphicsresourceservices/graphicsresourceimplementation/test/src/tsgdriver.cpp --- /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; + }