First public contribution.
1 // Copyright (c) 2008-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".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
19 @internalComponent - Internal Symbian test code
22 #include <graphics/bitmapuid.h>
23 #include "textendedbitmapcommon.h"
24 #include "textendedbitmapnegative.h"
26 // Values for valid test extended bitmap
27 const TUint8 KTestData[] = "Extended bitmap test data 123456";
28 const TInt KTestDataSize = sizeof(KTestData);
29 const TSize KSizeInPixels = TSize(50,50);
30 const TDisplayMode KDisplayMode = EColor64K;
32 const TInt KMaxPixelSize = KMaxTInt/4; // Maximum pixel size to avoid some overflow problems
33 const TUint KMaxByteSize = TUint(KMaxTInt/2); // Maximum byte size to avoid other overflow problems
35 CTExtendedBitmapNegative::CTExtendedBitmapNegative(CTestStep* aStep):
36 CTFbsBase(aStep, ETrue)
40 CTExtendedBitmapNegative::~CTExtendedBitmapNegative()
42 ((CTExtendedBitmapNegativeStep*)iStep)->CloseTMSGraphicsStep();
45 void CTExtendedBitmapNegative::RunFbsTestL(TInt aCurTestCase)
47 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
50 // CreateExtendedBitmap() tests
52 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0010"));
53 CreateWithoutFbsSessionL();
56 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0011"));
57 CreateBadPixelSizeL();
60 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0012"));
61 CreateBadDisplayModeL();
64 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0013"));
65 CreateRestrictedUidL();
68 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0014"));
72 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0015"));
76 // ExtendedBitmapType() tests
78 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0016"));
79 TypeUninitialisedBitmapL();
82 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0017"));
83 TypeStandardBitmapL();
86 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0018"));
87 TypeHardwareBitmapL();
92 ((CTExtendedBitmapNegativeStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-EXTENDEDBITMAP-0019"));
93 SizeUninitialisedBitmapL();
95 // Fall through as last test case
100 ((CTExtendedBitmapNegativeStep*)iStep)->RecordTestResultL();
104 // CreateExtendedBitmap() tests
108 GRAPHICS-FBSERV-EXTENDEDBITMAP-0010
111 Create an extended bitmap without an FbsSession
127 Test calls RFbsSession::Disconnect() and then attempts to
128 create an extended bitmap using test data and test UID.
130 @SYMTestExpectedResults
131 Extended bitmap creation should fail returning KErrCouldNotConnect.
133 void CTExtendedBitmapNegative::CreateWithoutFbsSessionL()
135 INFO_PRINTF1(_L("Create an extended bitmap with no FbsSession"));
137 const TUint KMinTestThreadHeapSize = 0x00000100;
138 const TUint KMaxTestThreadheapSize = 0x00100000;
140 INFO_PRINTF1(_L("Creating new thread with no FbsSession"));
142 CleanupClosePushL(noFbsThread);
143 _LIT(KNoFbsThreadName, "CTExtendedBitmapNegative_NoFbsThread");
144 User::LeaveIfError(noFbsThread.Create(KNoFbsThreadName, CreateWithoutFbsSessionStart, KDefaultStackSize, KMinTestThreadHeapSize, KMaxTestThreadheapSize, NULL));
146 TRequestStatus threadStatus;
147 noFbsThread.Logon(threadStatus);
148 noFbsThread.SetPriority(EPriorityLess);
150 INFO_PRINTF1(_L("Resuming new thread, which will call CreateExtendedBitmap() with valid parameters"));
151 noFbsThread.Resume();
153 User::WaitForRequest(threadStatus);
155 TESTEXPECTEDERRORL(noFbsThread.ExitReason(), KErrCouldNotConnect);
156 CleanupStack::PopAndDestroy(&noFbsThread);
161 Function for testing with no RFbsSession connected, used by CreateWithoutFbsSessionL().
162 @see CreateWithoutFbsSessionL()
163 @param aInfo Not used
164 @return Error code returned by CreateExtendedBitmap, with KErrCouldNotConnect expected.
166 TInt CTExtendedBitmapNegative::CreateWithoutFbsSessionStart(TAny* /*aInfo*/)
169 CFbsBitmap* bmp = new CFbsBitmap;
177 // Call CFbsBitmap::Rasterizer() for coverage of the case where it is called without a valid FbsSession
178 if (bmp->Rasterizer() != NULL)
186 res = bmp->CreateExtendedBitmap(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize);
196 GRAPHICS-FBSERV-EXTENDEDBITMAP-0011
199 Create an extended bitmap with bad pixel size
216 Creates an extended bitmap using test data and test UID,
217 passing invalid values of width/height in aSizeInPixels:
219 - exceeding the stated limit KMaxPixelSize
221 @SYMTestExpectedResults
222 Extended bitmap creation should fail, with KErrArgument
223 returned for negative values, and KErrTooBig returned for
224 values exceeding the stated limit.
226 void CTExtendedBitmapNegative::CreateBadPixelSizeL()
228 INFO_PRINTF1(_L("Create an extended bitmap with invalid pixel sizes"));
230 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with negative width"));
231 TESTCREATEEXTENDEDBITMAPL(TSize(-1,50), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
232 TESTCREATEEXTENDEDBITMAPINITIALIZERL(TSize(-1,50), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
234 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with negative height"));
235 TESTCREATEEXTENDEDBITMAPL(TSize(40,-10), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
236 TESTCREATEEXTENDEDBITMAPINITIALIZERL(TSize(40,-10), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
238 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with negative width and height"));
239 TESTCREATEEXTENDEDBITMAPL(TSize(-102,-330), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
240 TESTCREATEEXTENDEDBITMAPINITIALIZERL(TSize(-102,-330), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
242 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with width exceeding stated limit KMaxPixelSize"));
243 TESTCREATEEXTENDEDBITMAPL(TSize(KMaxPixelSize + 1, 33), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrTooBig);
244 TESTCREATEEXTENDEDBITMAPINITIALIZERL(TSize(KMaxPixelSize + 1, 33), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrTooBig);
246 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with height exceeding stated limit KMaxPixelSize"));
247 TESTCREATEEXTENDEDBITMAPL(TSize(43, KMaxPixelSize + 1), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrTooBig);
248 TESTCREATEEXTENDEDBITMAPINITIALIZERL(TSize(43, KMaxPixelSize + 1), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrTooBig);
250 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with width and height exceeding stated limit KMaxPixelSize"));
251 TESTCREATEEXTENDEDBITMAPL(TSize(KMaxPixelSize + 50, KMaxPixelSize + 1), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrTooBig);
252 TESTCREATEEXTENDEDBITMAPINITIALIZERL(TSize(KMaxPixelSize + 50, KMaxPixelSize + 1), KDisplayMode, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrTooBig);
258 GRAPHICS-FBSERV-EXTENDEDBITMAP-0012
261 Create an extended bitmap with bad display modes
278 Creates an extended bitmap using test data and test UID,
279 passing invalid display modes.
281 @SYMTestExpectedResults
282 Extended bitmap creation should fail, with KErrArgument
285 void CTExtendedBitmapNegative::CreateBadDisplayModeL()
287 INFO_PRINTF1(_L("Create an extended bitmap with invalid display modes"));
289 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with TDisplayMode::ENone"));
290 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, ENone, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
291 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, ENone, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
293 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with TDisplayMode::ERgb"));
294 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, ERgb, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
295 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, ERgb, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
297 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with TDisplayMode::EColorLast"));
298 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, EColorLast, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
299 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, EColorLast, KUidTestExtendedBitmap, KTestData, KTestDataSize, KErrArgument);
305 GRAPHICS-FBSERV-EXTENDEDBITMAP-0013
308 Create an extended bitmap with a UID reserved for OS-use
325 Creates an extended bitmap using test data and a UID
328 @SYMTestExpectedResults
329 Extended bitmap creation should fail, with KErrArgument
332 void CTExtendedBitmapNegative::CreateRestrictedUidL()
334 INFO_PRINTF1(_L("Create an extended bitmap with reserved UIDs"));
336 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with KCBitwiseBitmapUid"));
337 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, KDisplayMode, KCBitwiseBitmapUid, KTestData, KTestDataSize, KErrArgument);
338 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, KDisplayMode, KCBitwiseBitmapUid, KTestData, KTestDataSize, KErrArgument);
340 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with KCBitwiseBitmapHardwareUid"));
341 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, KDisplayMode, KCBitwiseBitmapHardwareUid, KTestData, KTestDataSize, KErrArgument);
342 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, KDisplayMode, KCBitwiseBitmapHardwareUid, KTestData, KTestDataSize, KErrArgument);
348 GRAPHICS-FBSERV-EXTENDEDBITMAP-0014
351 Create an extended bitmap with NULL data
368 Creates an extended bitmap using a test Uid, with NULL
371 @SYMTestExpectedResults
372 Extended bitmap creation should fail, with KErrArgument
375 void CTExtendedBitmapNegative::CreateNullDataL()
377 INFO_PRINTF1(_L("Create an extended bitmap with null data"));
379 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with NULL data and aDataSize set to 0"));
380 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, NULL, 0, KErrArgument);
381 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, NULL, 0, KErrArgument);
383 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with NULL data and aDataSize set to 100"));
384 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, NULL, 100, KErrArgument);
385 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, NULL, 100, KErrUnderflow);
391 GRAPHICS-FBSERV-EXTENDEDBITMAP-0015
394 Create an extended bitmap with bad data size
411 Creates an extended bitmap using test data and test Uid,
412 passing a negative aDataSize value.
414 @SYMTestExpectedResults
415 Extended bitmap creation should fail, with KErrArgument
416 returned for zero data size and a negative data size.
417 KErrTooBig should be returned for data size KMaxByteSize+1.
419 void CTExtendedBitmapNegative::CreateBadDataSizeL()
421 INFO_PRINTF1(_L("Create an extended bitmap with invalid data sizes"));
423 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with aDataSize set to 0"));
424 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, KTestData, 0, KErrArgument);
425 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, KTestData, 0, KErrArgument);
427 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with aDataSize set to KMaxByteSize+1"));
428 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, KTestData, KMaxByteSize+1, KErrTooBig);
429 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, KTestData, KMaxByteSize+1, KErrTooBig);
431 INFO_PRINTF1(_L("Calling CreateExtendedBitmap() with negative aDataSize"));
432 TESTCREATEEXTENDEDBITMAPL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, KTestData, -75, KErrArgument);
433 TESTCREATEEXTENDEDBITMAPINITIALIZERL(KSizeInPixels, KDisplayMode, KUidTestExtendedBitmap, KTestData, -75, KErrArgument);
437 // ExtendedBitmapType() tests
441 GRAPHICS-FBSERV-EXTENDEDBITMAP-0016
444 Gets Extended Bitmap Type on an uninitialised bitmap
461 Calls ExtendedBitmapType() on an uninitialised CFbsBitmap.
463 @SYMTestExpectedResults
464 ExtendedBitmapType() should return KNullUid as an uninitialised CFbsBitmap is not an extended bitmap.
466 void CTExtendedBitmapNegative::TypeUninitialisedBitmapL()
468 INFO_PRINTF1(_L("Get extended bitmap type on uninitialised bitmap"));
470 CFbsBitmap* bmp = new(ELeave)CFbsBitmap;
471 TUid returnedUid = bmp->ExtendedBitmapType();
474 TESTEQUALL(KNullUid, returnedUid);
480 GRAPHICS-FBSERV-EXTENDEDBITMAP-0017
483 Gets the Extended Bitmap Type on a standard bitmap
500 Calls ExtendedBitmapType() on a standard (regular)
503 @SYMTestExpectedResults
504 ExtendedBitmapType() should return KNullUid as a standard CFbsBitmap is not an extended bitmap.
506 void CTExtendedBitmapNegative::TypeStandardBitmapL()
508 INFO_PRINTF1(_L("Get extended bitmap type on a standard bitmap"));
510 CFbsBitmap* bmp = new(ELeave)CFbsBitmap;
511 CleanupStack::PushL(bmp);
512 TESTNOERRORL(bmp->Create(KSizeInPixels, KDisplayMode));
514 TUid returnedUid = bmp->ExtendedBitmapType();
515 CleanupStack::PopAndDestroy(bmp);
517 TESTEQUALL(KNullUid, returnedUid);
522 GRAPHICS-FBSERV-EXTENDEDBITMAP-0018
525 Gets the Extended Bitmap Type on a hardware bitmap
542 Calls ExtendedBitmapType() on a hardware CFbsBitmap.
544 @SYMTestExpectedResults
545 ExtendedBitmapType() should return KNullUid as a hardware CFbsBitmap is not an extended bitmap.
547 void CTExtendedBitmapNegative::TypeHardwareBitmapL()
549 INFO_PRINTF1(_L("Get extended bitmap type on a hardware bitmap"));
551 CFbsBitmap* bmp = new(ELeave)CFbsBitmap;
552 CleanupStack::PushL(bmp);
554 TInt err = bmp->CreateHardwareBitmap(KSizeInPixels, KDisplayMode, KNullUid);
555 if (err == KErrNotSupported)
557 // Hardware bitmaps not supported with the current test configuration
558 WARN_PRINTF1(_L("... Hardware bitmaps not supported"));
563 TUid returnedUid = bmp->ExtendedBitmapType();
564 TESTEQUALL(KNullUid, returnedUid);
567 CleanupStack::PopAndDestroy(bmp);
574 GRAPHICS-FBSERV-EXTENDEDBITMAP-0019
577 Gets Data Size on an uninitialised bitmap
593 Creates an extended bitmap using test data and test Uid,
594 calls RFbsSession::Disconnect() and then attempts to
597 @SYMTestExpectedResults
598 Call should fail, with zero returned.
600 void CTExtendedBitmapNegative::SizeUninitialisedBitmapL()
602 INFO_PRINTF1(_L("Get data size on uninitialised bitmap"));
604 CFbsBitmap* bmp = new(ELeave)CFbsBitmap;
605 TInt returnedDataSize = bmp->DataSize();
608 TESTEQUALL(0, returnedDataSize);
613 __CONSTRUCT_STEP__(ExtendedBitmapNegative)