os/graphics/graphicsresourceservices/graphicsresourceimplementation/test/src/tsgdriver.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 /**
    17  @file
    18  @test
    19  @internalComponent - Graphics Resource API Conformance Test Suite
    20 */
    21 
    22 #include "tsgdriver.h"
    23 
    24 CTSgDriver::CTSgDriver(TBool aConformanceTests) :
    25 	CTSgTestStepBase(aConformanceTests)
    26 	{
    27 	INFO_PRINTF1(_L("Graphics resource component test - SgDriver Tests.\r\n"));
    28 	}
    29 
    30 CTSgDriver::~CTSgDriver()
    31 	{
    32 	}
    33 
    34 /** 
    35 Overrides of base class pure virtual
    36 Our implementation only gets called if the base class doTestStepPreambleL() did
    37 not leave. That being the case, the current test result value will be EPass.
    38 @leave Gets system wide error code
    39 @return TVerdict code
    40 */
    41 TVerdict CTSgDriver::doTestStepL()
    42 	{	
    43 	SetTestStepID(_L("GRAPHICS-RESOURCE-0022"));
    44 	INFO_PRINTF1(_L("Shutting down an uninitialised driver.\r\n"));
    45 	TestShutdownUninitialized();
    46 	RecordTestResultL();
    47 
    48 	SetTestStepID(_L("GRAPHICS-RESOURCE-0096"));
    49 	INFO_PRINTF1(_L("Checking the driver is the correct version.\r\n"));
    50 	TestVersion();
    51 	RecordTestResultL();
    52 	
    53 	SetTestStepID(_L("GRAPHICS-RESOURCE-0099"));
    54 	INFO_PRINTF1(_L("Checking the driver returns the correct error on multiple opens.\r\n"));
    55 	TestMultipleOpens();
    56 	RecordTestResultL();
    57 	
    58 	SetTestStepID(_L("GRAPHICS-RESOURCE-0103"));
    59 	INFO_PRINTF1(_L("Checking GetInterface() returns correct error codes.\r\n"));
    60 	TestGetInterface();
    61 	RecordTestResultL();
    62 	
    63 	return TestStepResult();
    64 	}
    65 
    66 /**
    67 @SYMTestCaseID			GRAPHICS-RESOURCE-0022
    68 @SYMTestCaseDesc		Shuts down an uninitialised driver.
    69 @SYMPREQ				PREQ2637
    70 @SYMFssID				RSgDriver::Close()
    71 @SYMTestPriority		Low
    72 @SYMTestType			UT
    73 @SYMTestPurpose			To ensure invalid Close() calls on the driver will cause no errors.
    74 @SYMTestActions			Call RSgDriver::Close() several times without calling RSgDriver::Open().
    75 @SYMTestExpectedResults	No errors should be returned.
    76  */	
    77 void CTSgDriver::TestShutdownUninitialized()
    78 	{
    79 	__UHEAP_MARK;	
    80 	
    81 	RSgDriver sgDriver;
    82 	
    83 	sgDriver.Close();
    84 	sgDriver.Close();
    85 	sgDriver.Close();
    86 	
    87 	__UHEAP_MARKEND;
    88 	}
    89 
    90 /**
    91 @SYMTestCaseID			GRAPHICS-RESOURCE-0096
    92 @SYMTestCaseDesc		Test the version number returned by RSgDriver is correct.
    93 @SYMPREQ				PREQ2637
    94 @SYMFssID				RSgDriver::Version()
    95 @SYMTestPriority		Medium
    96 @SYMTestType			UT
    97 @SYMTestPurpose			To check the correct version of the driver is being used in the
    98 						conformance tests.
    99 @SYMTestActions			Call RSgDriver::Version().
   100 @SYMTestExpectedResults	The correct version should be returned.
   101  */	
   102 void CTSgDriver::TestVersion()
   103 	{
   104 	__UHEAP_MARK;	
   105 	
   106 	RSgDriver sgDriver;
   107 	
   108 	TVersion vers = sgDriver.Version();
   109 	TEST(vers.iMajor == 1);
   110 	TEST(vers.iMinor == 1);
   111 	
   112 	__UHEAP_MARKEND;
   113 	}
   114 
   115 /**
   116 @SYMTestCaseID			GRAPHICS-RESOURCE-0099
   117 @SYMTestCaseDesc		Test SgDriver Handles Multiple Calls to Open Correctly
   118 @SYMPREQ				PREQ2637
   119 @SYMFssID				RSgDriver::Open()
   120 @SYMTestPriority		High
   121 @SYMTestType			UT
   122 @SYMTestPurpose			To ensure the correct error code is returned when an open
   123 						driver is opened
   124 @SYMTestActions			Call RSgDriver::Open().
   125 @SYMTestExpectedResults	KErrInUse should be returned when the driver is opened for
   126 						the second time and all subsequent times.
   127  */	
   128 void CTSgDriver::TestMultipleOpens()
   129 	{
   130 	__UHEAP_MARK;	
   131 	
   132 	TInt err = KErrNone;
   133 	RSgDriver sgDriver;
   134 	
   135 	err = sgDriver.Open();
   136 	TESTE(KErrNone == err, err);
   137 	err = sgDriver.Open();
   138 	TESTE(KErrInUse == err, err);
   139 	err = sgDriver.Open();
   140 	TESTE(KErrInUse == err, err);
   141 	err = sgDriver.Open();
   142 	TESTE(KErrInUse == err, err);	
   143 	sgDriver.Close();	
   144 	
   145 	__UHEAP_MARKEND;
   146 	}
   147 
   148 /**
   149 @SYMTestCaseID			GRAPHICS-RESOURCE-0103
   150 @SYMTestCaseDesc		Test that GetInterface() returns the correct error code	in 
   151 						negative situations.
   152 @SYMPREQ				PREQ2637
   153 @SYMFssID				RSgDriver::GetInterface()
   154 @SYMTestPriority		Low
   155 @SYMTestType			UT
   156 @SYMTestPurpose			To ensure the correct error code is returned when GetInterface() 
   157 						is used, in a variety of sitations.
   158 @SYMTestActions			Call RSgDriver::GetInterface() with an interface that is valid but
   159 						not supported by the driver.			
   160 						Call RSgDriver::GetInterface() with an interface with a Null ID.
   161 						Call RSgDriver::GetInterface() with any interface, on a driver that
   162 						is not yet open.
   163 @SYMTestExpectedResults	When using an unsupported interface, KErrExtensionNotSupported should 
   164 						be returned.
   165 						When using an interface with the null UID, KErrArgument should be returned.
   166 						When using any interface after the driver is closed, KErrBadHandle
   167 						should be returned.
   168  */
   169 
   170 /**
   171 Test classes for testing with RSgImage::GetInterface()
   172  */
   173 class MFakeInterface
   174     {
   175 public:
   176     enum { EInterfaceUid = 0x88888888 };
   177     };
   178 class MNullInterface
   179     {
   180 public:
   181     enum { EInterfaceUid = KNullUidValue };
   182     };
   183 
   184 void CTSgDriver::TestGetInterface()
   185 	{
   186 	__UHEAP_MARK;
   187 	
   188 	RSgDriver sgDriver;
   189 	TInt err = sgDriver.Open();
   190 	TESTE(err == KErrNone, err);
   191 	
   192 	MFakeInterface* fakeInterface = NULL;
   193 	err = sgDriver.GetInterface(fakeInterface);
   194 	TESTE(err == KErrExtensionNotSupported, err);	
   195 	
   196 	MNullInterface* nullInterface = NULL;
   197 	err = sgDriver.GetInterface(nullInterface);
   198 	TESTE(err == KErrArgument, err);
   199 	
   200 	sgDriver.Close();	
   201 	err = sgDriver.GetInterface(fakeInterface);
   202 	TESTE(err == KErrBadHandle, err);
   203 	err = sgDriver.GetInterface(nullInterface);
   204 	TESTE(err == KErrBadHandle, err);
   205 	
   206 	__UHEAP_MARKEND;
   207 	}