graphicsresourceservices/graphicsresourceimplementation/test/src/tsgdriver.cpp
changeset 36 01a6848ebfd7
equal deleted inserted replaced
0:5d03bc08d59c 36:01a6848ebfd7
       
     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 	}