sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent - Graphics Resource API Conformance Test Suite sl@0: */ sl@0: sl@0: #include "tsgdriver.h" sl@0: sl@0: CTSgDriver::CTSgDriver(TBool aConformanceTests) : sl@0: CTSgTestStepBase(aConformanceTests) sl@0: { sl@0: INFO_PRINTF1(_L("Graphics resource component test - SgDriver Tests.\r\n")); sl@0: } sl@0: sl@0: CTSgDriver::~CTSgDriver() sl@0: { sl@0: } sl@0: sl@0: /** sl@0: Overrides of base class pure virtual sl@0: Our implementation only gets called if the base class doTestStepPreambleL() did sl@0: not leave. That being the case, the current test result value will be EPass. sl@0: @leave Gets system wide error code sl@0: @return TVerdict code sl@0: */ sl@0: TVerdict CTSgDriver::doTestStepL() sl@0: { sl@0: SetTestStepID(_L("GRAPHICS-RESOURCE-0022")); sl@0: INFO_PRINTF1(_L("Shutting down an uninitialised driver.\r\n")); sl@0: TestShutdownUninitialized(); sl@0: RecordTestResultL(); sl@0: sl@0: SetTestStepID(_L("GRAPHICS-RESOURCE-0096")); sl@0: INFO_PRINTF1(_L("Checking the driver is the correct version.\r\n")); sl@0: TestVersion(); sl@0: RecordTestResultL(); sl@0: sl@0: SetTestStepID(_L("GRAPHICS-RESOURCE-0099")); sl@0: INFO_PRINTF1(_L("Checking the driver returns the correct error on multiple opens.\r\n")); sl@0: TestMultipleOpens(); sl@0: RecordTestResultL(); sl@0: sl@0: SetTestStepID(_L("GRAPHICS-RESOURCE-0103")); sl@0: INFO_PRINTF1(_L("Checking GetInterface() returns correct error codes.\r\n")); sl@0: TestGetInterface(); sl@0: RecordTestResultL(); sl@0: sl@0: return TestStepResult(); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-RESOURCE-0022 sl@0: @SYMTestCaseDesc Shuts down an uninitialised driver. sl@0: @SYMPREQ PREQ2637 sl@0: @SYMFssID RSgDriver::Close() sl@0: @SYMTestPriority Low sl@0: @SYMTestType UT sl@0: @SYMTestPurpose To ensure invalid Close() calls on the driver will cause no errors. sl@0: @SYMTestActions Call RSgDriver::Close() several times without calling RSgDriver::Open(). sl@0: @SYMTestExpectedResults No errors should be returned. sl@0: */ sl@0: void CTSgDriver::TestShutdownUninitialized() sl@0: { sl@0: __UHEAP_MARK; sl@0: sl@0: RSgDriver sgDriver; sl@0: sl@0: sgDriver.Close(); sl@0: sgDriver.Close(); sl@0: sgDriver.Close(); sl@0: sl@0: __UHEAP_MARKEND; sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-RESOURCE-0096 sl@0: @SYMTestCaseDesc Test the version number returned by RSgDriver is correct. sl@0: @SYMPREQ PREQ2637 sl@0: @SYMFssID RSgDriver::Version() sl@0: @SYMTestPriority Medium sl@0: @SYMTestType UT sl@0: @SYMTestPurpose To check the correct version of the driver is being used in the sl@0: conformance tests. sl@0: @SYMTestActions Call RSgDriver::Version(). sl@0: @SYMTestExpectedResults The correct version should be returned. sl@0: */ sl@0: void CTSgDriver::TestVersion() sl@0: { sl@0: __UHEAP_MARK; sl@0: sl@0: RSgDriver sgDriver; sl@0: sl@0: TVersion vers = sgDriver.Version(); sl@0: TEST(vers.iMajor == 1); sl@0: TEST(vers.iMinor == 1); sl@0: sl@0: __UHEAP_MARKEND; sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-RESOURCE-0099 sl@0: @SYMTestCaseDesc Test SgDriver Handles Multiple Calls to Open Correctly sl@0: @SYMPREQ PREQ2637 sl@0: @SYMFssID RSgDriver::Open() sl@0: @SYMTestPriority High sl@0: @SYMTestType UT sl@0: @SYMTestPurpose To ensure the correct error code is returned when an open sl@0: driver is opened sl@0: @SYMTestActions Call RSgDriver::Open(). sl@0: @SYMTestExpectedResults KErrInUse should be returned when the driver is opened for sl@0: the second time and all subsequent times. sl@0: */ sl@0: void CTSgDriver::TestMultipleOpens() sl@0: { sl@0: __UHEAP_MARK; sl@0: sl@0: TInt err = KErrNone; sl@0: RSgDriver sgDriver; sl@0: sl@0: err = sgDriver.Open(); sl@0: TESTE(KErrNone == err, err); sl@0: err = sgDriver.Open(); sl@0: TESTE(KErrInUse == err, err); sl@0: err = sgDriver.Open(); sl@0: TESTE(KErrInUse == err, err); sl@0: err = sgDriver.Open(); sl@0: TESTE(KErrInUse == err, err); sl@0: sgDriver.Close(); sl@0: sl@0: __UHEAP_MARKEND; sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-RESOURCE-0103 sl@0: @SYMTestCaseDesc Test that GetInterface() returns the correct error code in sl@0: negative situations. sl@0: @SYMPREQ PREQ2637 sl@0: @SYMFssID RSgDriver::GetInterface() sl@0: @SYMTestPriority Low sl@0: @SYMTestType UT sl@0: @SYMTestPurpose To ensure the correct error code is returned when GetInterface() sl@0: is used, in a variety of sitations. sl@0: @SYMTestActions Call RSgDriver::GetInterface() with an interface that is valid but sl@0: not supported by the driver. sl@0: Call RSgDriver::GetInterface() with an interface with a Null ID. sl@0: Call RSgDriver::GetInterface() with any interface, on a driver that sl@0: is not yet open. sl@0: @SYMTestExpectedResults When using an unsupported interface, KErrExtensionNotSupported should sl@0: be returned. sl@0: When using an interface with the null UID, KErrArgument should be returned. sl@0: When using any interface after the driver is closed, KErrBadHandle sl@0: should be returned. sl@0: */ sl@0: sl@0: /** sl@0: Test classes for testing with RSgImage::GetInterface() sl@0: */ sl@0: class MFakeInterface sl@0: { sl@0: public: sl@0: enum { EInterfaceUid = 0x88888888 }; sl@0: }; sl@0: class MNullInterface sl@0: { sl@0: public: sl@0: enum { EInterfaceUid = KNullUidValue }; sl@0: }; sl@0: sl@0: void CTSgDriver::TestGetInterface() sl@0: { sl@0: __UHEAP_MARK; sl@0: sl@0: RSgDriver sgDriver; sl@0: TInt err = sgDriver.Open(); sl@0: TESTE(err == KErrNone, err); sl@0: sl@0: MFakeInterface* fakeInterface = NULL; sl@0: err = sgDriver.GetInterface(fakeInterface); sl@0: TESTE(err == KErrExtensionNotSupported, err); sl@0: sl@0: MNullInterface* nullInterface = NULL; sl@0: err = sgDriver.GetInterface(nullInterface); sl@0: TESTE(err == KErrArgument, err); sl@0: sl@0: sgDriver.Close(); sl@0: err = sgDriver.GetInterface(fakeInterface); sl@0: TESTE(err == KErrBadHandle, err); sl@0: err = sgDriver.GetInterface(nullInterface); sl@0: TESTE(err == KErrBadHandle, err); sl@0: sl@0: __UHEAP_MARKEND; sl@0: }