os/graphics/graphicsresourceservices/graphicsresourceimplementation/test/src/tsgdriver.cpp
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/graphicsresourceservices/graphicsresourceimplementation/test/src/tsgdriver.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,207 @@
1.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +/**
1.20 + @file
1.21 + @test
1.22 + @internalComponent - Graphics Resource API Conformance Test Suite
1.23 +*/
1.24 +
1.25 +#include "tsgdriver.h"
1.26 +
1.27 +CTSgDriver::CTSgDriver(TBool aConformanceTests) :
1.28 + CTSgTestStepBase(aConformanceTests)
1.29 + {
1.30 + INFO_PRINTF1(_L("Graphics resource component test - SgDriver Tests.\r\n"));
1.31 + }
1.32 +
1.33 +CTSgDriver::~CTSgDriver()
1.34 + {
1.35 + }
1.36 +
1.37 +/**
1.38 +Overrides of base class pure virtual
1.39 +Our implementation only gets called if the base class doTestStepPreambleL() did
1.40 +not leave. That being the case, the current test result value will be EPass.
1.41 +@leave Gets system wide error code
1.42 +@return TVerdict code
1.43 +*/
1.44 +TVerdict CTSgDriver::doTestStepL()
1.45 + {
1.46 + SetTestStepID(_L("GRAPHICS-RESOURCE-0022"));
1.47 + INFO_PRINTF1(_L("Shutting down an uninitialised driver.\r\n"));
1.48 + TestShutdownUninitialized();
1.49 + RecordTestResultL();
1.50 +
1.51 + SetTestStepID(_L("GRAPHICS-RESOURCE-0096"));
1.52 + INFO_PRINTF1(_L("Checking the driver is the correct version.\r\n"));
1.53 + TestVersion();
1.54 + RecordTestResultL();
1.55 +
1.56 + SetTestStepID(_L("GRAPHICS-RESOURCE-0099"));
1.57 + INFO_PRINTF1(_L("Checking the driver returns the correct error on multiple opens.\r\n"));
1.58 + TestMultipleOpens();
1.59 + RecordTestResultL();
1.60 +
1.61 + SetTestStepID(_L("GRAPHICS-RESOURCE-0103"));
1.62 + INFO_PRINTF1(_L("Checking GetInterface() returns correct error codes.\r\n"));
1.63 + TestGetInterface();
1.64 + RecordTestResultL();
1.65 +
1.66 + return TestStepResult();
1.67 + }
1.68 +
1.69 +/**
1.70 +@SYMTestCaseID GRAPHICS-RESOURCE-0022
1.71 +@SYMTestCaseDesc Shuts down an uninitialised driver.
1.72 +@SYMPREQ PREQ2637
1.73 +@SYMFssID RSgDriver::Close()
1.74 +@SYMTestPriority Low
1.75 +@SYMTestType UT
1.76 +@SYMTestPurpose To ensure invalid Close() calls on the driver will cause no errors.
1.77 +@SYMTestActions Call RSgDriver::Close() several times without calling RSgDriver::Open().
1.78 +@SYMTestExpectedResults No errors should be returned.
1.79 + */
1.80 +void CTSgDriver::TestShutdownUninitialized()
1.81 + {
1.82 + __UHEAP_MARK;
1.83 +
1.84 + RSgDriver sgDriver;
1.85 +
1.86 + sgDriver.Close();
1.87 + sgDriver.Close();
1.88 + sgDriver.Close();
1.89 +
1.90 + __UHEAP_MARKEND;
1.91 + }
1.92 +
1.93 +/**
1.94 +@SYMTestCaseID GRAPHICS-RESOURCE-0096
1.95 +@SYMTestCaseDesc Test the version number returned by RSgDriver is correct.
1.96 +@SYMPREQ PREQ2637
1.97 +@SYMFssID RSgDriver::Version()
1.98 +@SYMTestPriority Medium
1.99 +@SYMTestType UT
1.100 +@SYMTestPurpose To check the correct version of the driver is being used in the
1.101 + conformance tests.
1.102 +@SYMTestActions Call RSgDriver::Version().
1.103 +@SYMTestExpectedResults The correct version should be returned.
1.104 + */
1.105 +void CTSgDriver::TestVersion()
1.106 + {
1.107 + __UHEAP_MARK;
1.108 +
1.109 + RSgDriver sgDriver;
1.110 +
1.111 + TVersion vers = sgDriver.Version();
1.112 + TEST(vers.iMajor == 1);
1.113 + TEST(vers.iMinor == 1);
1.114 +
1.115 + __UHEAP_MARKEND;
1.116 + }
1.117 +
1.118 +/**
1.119 +@SYMTestCaseID GRAPHICS-RESOURCE-0099
1.120 +@SYMTestCaseDesc Test SgDriver Handles Multiple Calls to Open Correctly
1.121 +@SYMPREQ PREQ2637
1.122 +@SYMFssID RSgDriver::Open()
1.123 +@SYMTestPriority High
1.124 +@SYMTestType UT
1.125 +@SYMTestPurpose To ensure the correct error code is returned when an open
1.126 + driver is opened
1.127 +@SYMTestActions Call RSgDriver::Open().
1.128 +@SYMTestExpectedResults KErrInUse should be returned when the driver is opened for
1.129 + the second time and all subsequent times.
1.130 + */
1.131 +void CTSgDriver::TestMultipleOpens()
1.132 + {
1.133 + __UHEAP_MARK;
1.134 +
1.135 + TInt err = KErrNone;
1.136 + RSgDriver sgDriver;
1.137 +
1.138 + err = sgDriver.Open();
1.139 + TESTE(KErrNone == err, err);
1.140 + err = sgDriver.Open();
1.141 + TESTE(KErrInUse == err, err);
1.142 + err = sgDriver.Open();
1.143 + TESTE(KErrInUse == err, err);
1.144 + err = sgDriver.Open();
1.145 + TESTE(KErrInUse == err, err);
1.146 + sgDriver.Close();
1.147 +
1.148 + __UHEAP_MARKEND;
1.149 + }
1.150 +
1.151 +/**
1.152 +@SYMTestCaseID GRAPHICS-RESOURCE-0103
1.153 +@SYMTestCaseDesc Test that GetInterface() returns the correct error code in
1.154 + negative situations.
1.155 +@SYMPREQ PREQ2637
1.156 +@SYMFssID RSgDriver::GetInterface()
1.157 +@SYMTestPriority Low
1.158 +@SYMTestType UT
1.159 +@SYMTestPurpose To ensure the correct error code is returned when GetInterface()
1.160 + is used, in a variety of sitations.
1.161 +@SYMTestActions Call RSgDriver::GetInterface() with an interface that is valid but
1.162 + not supported by the driver.
1.163 + Call RSgDriver::GetInterface() with an interface with a Null ID.
1.164 + Call RSgDriver::GetInterface() with any interface, on a driver that
1.165 + is not yet open.
1.166 +@SYMTestExpectedResults When using an unsupported interface, KErrExtensionNotSupported should
1.167 + be returned.
1.168 + When using an interface with the null UID, KErrArgument should be returned.
1.169 + When using any interface after the driver is closed, KErrBadHandle
1.170 + should be returned.
1.171 + */
1.172 +
1.173 +/**
1.174 +Test classes for testing with RSgImage::GetInterface()
1.175 + */
1.176 +class MFakeInterface
1.177 + {
1.178 +public:
1.179 + enum { EInterfaceUid = 0x88888888 };
1.180 + };
1.181 +class MNullInterface
1.182 + {
1.183 +public:
1.184 + enum { EInterfaceUid = KNullUidValue };
1.185 + };
1.186 +
1.187 +void CTSgDriver::TestGetInterface()
1.188 + {
1.189 + __UHEAP_MARK;
1.190 +
1.191 + RSgDriver sgDriver;
1.192 + TInt err = sgDriver.Open();
1.193 + TESTE(err == KErrNone, err);
1.194 +
1.195 + MFakeInterface* fakeInterface = NULL;
1.196 + err = sgDriver.GetInterface(fakeInterface);
1.197 + TESTE(err == KErrExtensionNotSupported, err);
1.198 +
1.199 + MNullInterface* nullInterface = NULL;
1.200 + err = sgDriver.GetInterface(nullInterface);
1.201 + TESTE(err == KErrArgument, err);
1.202 +
1.203 + sgDriver.Close();
1.204 + err = sgDriver.GetInterface(fakeInterface);
1.205 + TESTE(err == KErrBadHandle, err);
1.206 + err = sgDriver.GetInterface(nullInterface);
1.207 + TESTE(err == KErrBadHandle, err);
1.208 +
1.209 + __UHEAP_MARKEND;
1.210 + }