1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/graphicsdeviceinterface/bitgdi/tbit/TBASE.CPP Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,272 @@
1.4 +// Copyright (c) 1997-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 +#include <e32hal.h>
1.21 +#include "TGDI.H"
1.22 +#include <bitdev.h>
1.23 +#include <hal.h>
1.24 +#include "TBMP.H"
1.25 +#include "tbase.h"
1.26 +#include <graphics/fbsdefs.h>
1.27 +
1.28 +
1.29 +CTGdi::CTGdi(CTestStep* aStep):
1.30 + CTGraphicsBase(aStep),
1.31 + iTestGdi()
1.32 + {
1.33 + }
1.34 +
1.35 +void CTGdi::RunTestCaseL(TInt aCurTestCase)
1.36 + {
1.37 + ((CTGdiStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
1.38 + switch(aCurTestCase)
1.39 + {
1.40 + case 1:
1.41 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.42 + TestScreenL(EGray2);
1.43 + break;
1.44 + case 2:
1.45 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.46 + TestScreenL(EGray4);
1.47 + break;
1.48 + case 3:
1.49 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.50 + TestScreenL(EGray16);
1.51 + break;
1.52 + case 4:
1.53 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.54 + TestScreenL(EGray256);
1.55 + break;
1.56 + case 5:
1.57 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.58 + TestScreenL(EColor16);
1.59 + break;
1.60 + case 6:
1.61 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.62 + TestScreenL(EColor256);
1.63 + break;
1.64 + case 7:
1.65 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.66 + TestScreenL(EColor4K);
1.67 + break;
1.68 + case 8:
1.69 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.70 + TestScreenL(EColor64K);
1.71 + break;
1.72 + case 9:
1.73 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.74 + TestScreenL(EColor16M);
1.75 + break;
1.76 + case 10:
1.77 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0030"));
1.78 + TestScreenL(EColor16MU);
1.79 + break;
1.80 + case 11:
1.81 + ((CTGdiStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1.82 +// Test still failing, see DEF094106
1.83 +// TestScreenL(EColor16MA);
1.84 + break;
1.85 + case 12:
1.86 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.87 + TestBitmapL(EGray2);
1.88 + break;
1.89 + case 13:
1.90 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.91 + TestBitmapL(EGray4);
1.92 + break;
1.93 + case 14:
1.94 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.95 + TestBitmapL(EGray16);
1.96 + break;
1.97 + case 15:
1.98 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.99 + TestBitmapL(EGray256);
1.100 + break;
1.101 + case 16:
1.102 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.103 + TestBitmapL(EColor16);
1.104 + break;
1.105 + case 17:
1.106 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.107 + TestBitmapL(EColor256);
1.108 + break;
1.109 + case 18:
1.110 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.111 + TestBitmapL(EColor4K);
1.112 + break;
1.113 + case 19:
1.114 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.115 + TestBitmapL(EColor64K);
1.116 + break;
1.117 + case 20:
1.118 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.119 + TestBitmapL(EColor16M);
1.120 + break;
1.121 + case 21:
1.122 + ((CTGdiStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0031"));
1.123 + TestBitmapL(EColor16MU);
1.124 + break;
1.125 + case 22:
1.126 + ((CTGdiStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1.127 +// Test still failing, see DEF094106
1.128 +// TestBitmapL(EColor16MA);
1.129 + break;
1.130 + case 23:
1.131 + ((CTGdiStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1.132 + ((CTGdiStep*)iStep)->CloseTMSGraphicsStep();
1.133 + TestComplete();
1.134 + break;
1.135 + }
1.136 + ((CTGdiStep*)iStep)->RecordTestResultL();
1.137 + //
1.138 + }
1.139 +
1.140 +
1.141 +/**
1.142 + @SYMTestCaseID GRAPHICS-BITGDI-0030
1.143 +
1.144 + @SYMDEF
1.145 +
1.146 + @SYMTestCaseDesc Tests screen creation in various colour modes
1.147 +
1.148 + @SYMTestPriority High
1.149 +
1.150 + @SYMTestStatus Implemented
1.151 +
1.152 + @SYMTestActions Creates a screen in a certain colour mode, draws a bitmap on it then destroys it
1.153 +
1.154 + @SYMTestExpectedResults Test should pass
1.155 +*/
1.156 +void CTGdi::TestScreenL(TDisplayMode aDispMode)
1.157 + {
1.158 + CFbsScreenDevice* device = NULL;
1.159 + TRAPD(err,device = CFbsScreenDevice::NewL(_L("scdv"),aDispMode));
1.160 + if (err == KErrNotSupported)
1.161 + return;
1.162 + else
1.163 + User::LeaveIfError(err);
1.164 + CleanupStack::PushL(device);
1.165 + device->ChangeScreenDevice(NULL);
1.166 + device->SetAutoUpdate(ETrue);
1.167 +
1.168 + DoTestAndDeleteL(device,ETrue);
1.169 + CleanupStack::PopAndDestroy(1,device);
1.170 + }
1.171 +
1.172 +
1.173 +/**
1.174 + @SYMTestCaseID GRAPHICS-BITGDI-0031
1.175 +
1.176 + @SYMDEF
1.177 +
1.178 + @SYMTestCaseDesc Tests bitmap creation in various colour modes
1.179 +
1.180 + @SYMTestPriority High
1.181 +
1.182 + @SYMTestStatus Implemented
1.183 +
1.184 + @SYMTestActions Creates a bitmap in a certain colour mode, draws a bitmap on it then destroys it
1.185 +
1.186 + @SYMTestExpectedResults Test should pass
1.187 +*/
1.188 +void CTGdi::TestBitmapL(TDisplayMode aDispMode)
1.189 + {
1.190 + CFbsBitmap* bitmap = new(ELeave) CFbsBitmap;
1.191 + CleanupStack::PushL(bitmap);
1.192 + //Creating a Reference Bitmap of screensize to compare the results
1.193 + CFbsScreenDevice* qdevice = NULL;
1.194 + TRAPD(error, qdevice = CFbsScreenDevice::NewL(_L("scdv"),aDispMode));
1.195 +
1.196 + if (error == KErrNotSupported)
1.197 + {
1.198 + CleanupStack::PopAndDestroy(bitmap);
1.199 + return;
1.200 + }
1.201 + else
1.202 + {
1.203 + User::LeaveIfError(error);
1.204 + }
1.205 +
1.206 + CleanupStack::PushL(qdevice);
1.207 + qdevice->SetAutoUpdate(ETrue);
1.208 + TSize screensize=qdevice->SizeInPixels();
1.209 + TInt ret = bitmap->Create(screensize,aDispMode);
1.210 + if (ret == KErrNotSupported)
1.211 + {
1.212 + CleanupStack::PopAndDestroy(2,bitmap);
1.213 + return;
1.214 + }
1.215 + else
1.216 + {
1.217 + User::LeaveIfError(ret);
1.218 + }
1.219 +
1.220 + CFbsBitmapDevice* device = CFbsBitmapDevice::NewL(bitmap);
1.221 + CleanupStack::PushL(device);
1.222 + DoTestAndDeleteL(device, EFalse);
1.223 + CleanupStack::PopAndDestroy(3,bitmap);
1.224 + }
1.225 +
1.226 +void CTGdi::DoTestAndDeleteL(CFbsDevice* aDevice,TBool aScreen)
1.227 + {
1.228 + CFbsBitGc* gc = NULL;
1.229 + User::LeaveIfError(aDevice->CreateContext(gc));
1.230 + CleanupStack::PushL(gc);
1.231 +
1.232 + CFbsFont* font = NULL;
1.233 + User::LeaveIfError(aDevice->GetNearestFontToDesignHeightInTwips(font,TFontSpec()));
1.234 + gc->UseFont(font);
1.235 + aDevice->ReleaseFont(font);
1.236 +
1.237 + CFbsBitmap* bmp = new(ELeave) CFbsBitmap;
1.238 + CleanupStack::PushL(bmp);
1.239 + TInt ret = bmp->Load(_L("z:\\system\\data\\tbmp.mbm"),EMbmTbmpTblank);
1.240 + User::LeaveIfError(ret);
1.241 + gc->UseBrushPattern(bmp->Handle());
1.242 +
1.243 + if (aScreen)
1.244 + INFO_PRINTF2(_L("Gdi screen device testing, mode %d\n"),aDevice->DisplayMode());
1.245 + else
1.246 + INFO_PRINTF2(_L("Gdi bitmap device testing, mode %d\n"),aDevice->DisplayMode());
1.247 +
1.248 + TBuf<KFailureSectionNameBufferLength> section;
1.249 + iTestGdi.Construct(aDevice,gc,section);
1.250 +
1.251 + TBool pass = iTestGdi.Test();
1.252 +
1.253 + if (!pass)
1.254 + {
1.255 + INFO_PRINTF2(_L("Gdi device test failed section: %S"),§ion);
1.256 + //Getch();
1.257 + }
1.258 + TEST(pass);
1.259 +
1.260 + CleanupStack::PopAndDestroy(2,gc);
1.261 + }
1.262 +
1.263 +//--------------
1.264 +__CONSTRUCT_STEP__(Gdi)
1.265 +
1.266 +void CTGdiStep::TestSetupL()
1.267 + {
1.268 + FbsStartup();
1.269 + User::LeaveIfError(RFbsSession::Connect());
1.270 + }
1.271 +
1.272 +void CTGdiStep::TestClose()
1.273 + {
1.274 + RFbsSession::Disconnect();
1.275 + }