--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fbs/fontandbitmapserver/tfbs/tipctest.CPP Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,370 @@
+// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "fbsmessage.h"
+#include "../sfbs/UTILS.H"
+#include "tipctest.h"
+#include "fbsdefs.h"
+
+
+CTIPCTest::CTIPCTest(CTestStep* aStep):
+ CTGraphicsBase(aStep),
+ iFbs(NULL),
+ iFs(NULL)
+ {}
+
+CTIPCTest::~CTIPCTest()
+ {
+ if(iShutdownFbs)
+ RFbsSession::GetSession()->SendCommand(EFbsMessShutdown);
+ RFbsSession::Disconnect();
+ delete iFs;
+ iHeap->Close();
+ }
+
+void CTIPCTest::ConstructL()
+ {
+ INFO_PRINTF1(_L("Font/Bitmap Server IPC Messages Testing"));
+
+ if(RFbsSession::Connect()==KErrNone)
+ {
+ RFbsSession::Disconnect();
+ iShutdownFbs = EFalse;
+ }
+ else
+ {
+ FbsStartup();
+ iShutdownFbs = ETrue;
+ }
+ RFbsSession::Connect();
+ iFbs=RFbsSession::GetSession();
+
+ if(!iShutdownFbs)
+ {
+ if(iClient.Connect() == KErrNone)
+ {
+ iShutdownFbs = EFalse;
+ }
+ else
+ {
+ iShutdownFbs = ETrue;
+ }
+ }
+
+ iHeap=UserHeap::ChunkHeap(NULL,0x10000,0x10000);
+ TRAPD(ret,iFs=CFontStore::NewL(iHeap));
+ TEST(ret==KErrNone);
+ TEST(iFs != NULL);
+
+ }
+
+/**
+ @SYMTestCaseID
+ GRAPHICS-FBSERV-0603
+
+ @SYMTestCaseDesc
+ Tests the sending of commands to a FbsSession
+ server thru Inter Process Communication. Sends
+ both valid and invalid commands.
+
+ @SYMTestActions
+ Commands sent to the server:
+ 1. EFbsMessShutdown
+ 2. EFbsMessFontHeightInTwips
+ 3. EFbsMessFontHeightInTwips
+ 4. EFbsMessFontHeightInPixels
+ 5. EFbsMessFontHeightInPixels
+ 6. EFbsMessAddFontStoreFile
+ 7. EFbsMessAddFontStoreFile
+ 8. EFbsMessInstallFontStoreFile
+ 9. EFbsMessInstallFontStoreFile
+ 10. EFbsMessInstallFontStoreFile
+ 11. EFbsMessBitmapCreate
+ 12. EFbsMessRasterize
+ 13. EFbsMessFaceAttrib
+ 14. EFbsMessHasCharacter
+ 15. EFbsMessFontNameAlias
+ 16. EFbsMessGetNearestFontToDesignHeightInTwips
+ 17. EFbsMessGetNearestFontToMaxHeightInTwips
+ 18. EFbsMessGetNearestFontToDesignHeightInPixels
+ 19. EFbsMessGetNearestFontToMaxHeightInPixels
+ 20. EFbsMessShapeText
+ 21. EFbsMessShapeDelete
+ 22. EFbsMessSetTwipsHeight
+ 23. EFbsMessGetTwipsHeight
+
+ @SYMTestExpectedResults
+ Test should pass
+*/
+void CTIPCTest::RunTestCaseL(TInt aCurTestCase)
+ {
+ _LIT(KCaseNumber, "CaseNumber");
+
+ TBool res = iStep->GetIntFromConfig(iStep->ConfigSection(), KCaseNumber, aCurTestCase);
+
+ if(!res)
+ {
+ return;
+ }
+
+ switch(aCurTestCase)
+ {
+ case 1:
+ INFO_PRINTF1(_L("Shutdown\r\n"));
+ iFbs->SendCommand(EFbsMessShutdown);
+ TestComplete();
+ break;
+ case 2:
+ INFO_PRINTF1(_L("Height in twips with negative typeface index\r\n"));
+ iFbs->SendCommand(EFbsMessFontHeightInTwips, -1);
+ TEST(EFalse); // Previous line should have paniced
+ TestComplete();
+ break;
+ case 3:
+ INFO_PRINTF1(_L("Height in twips with invalid size\r\n"));
+ iClient.SendInvalidSize(EFbsMessFontHeightInTwips);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 4:
+ INFO_PRINTF1(_L("Height in pixels with negative typeface index\r\n"));
+ iFbs->SendCommand(EFbsMessFontHeightInPixels, -1);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 5:
+ INFO_PRINTF1(_L("Height in pixels with invalid size\r\n"));
+ iClient.SendInvalidSize(EFbsMessFontHeightInPixels);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 6:
+ INFO_PRINTF1(_L("Add font store file with negative length\r\n"));
+ iFbs->SendCommand(EFbsMessAddFontStoreFile, 0, -1);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 7:
+ INFO_PRINTF1(_L("Add font store file with huge length\r\n"));
+ iFbs->SendCommand(EFbsMessAddFontStoreFile, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 8:
+ INFO_PRINTF1(_L("Install font store file with negative length\r\n"));
+ iFbs->SendCommand(EFbsMessInstallFontStoreFile, 0, -1);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 9:
+ INFO_PRINTF1(_L("Install font store file with huge length\r\n"));
+ iFbs->SendCommand(EFbsMessInstallFontStoreFile, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 10:
+ INFO_PRINTF1(_L("Remove font store file with active references\r\n"));
+ iFbs->SendCommand(EFbsMessRemoveFontStoreFile, 11);
+ // With PDEF121246 (INC120690) fix in place, this test will always pass. Without the fix there will be a KERN 4 panic.
+ TEST(ETrue);
+ TestComplete();
+ break;
+ case 11:
+ INFO_PRINTF1(_L("Bitmap create with invalid display mode\r\n"));
+ iClient.SendInvalidDisplayMode(EFbsMessBitmapCreate);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 12:
+ INFO_PRINTF1(_L("Rasterize with invalid bitmap handle\r\n"));
+ iFbs->SendCommand(EFbsMessRasterize, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 13:
+ INFO_PRINTF1(_L("Face Attribute with invalid bitmap handle\r\n"));
+ iFbs->SendCommand(EFbsMessFaceAttrib, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 14:
+ INFO_PRINTF1(_L("Has Character with invalid bitmap handle\r\n"));
+ iFbs->SendCommand(EFbsMessHasCharacter, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 15:
+ INFO_PRINTF1(_L("Name Alias with huge alias name length\r\n"));
+ iFbs->SendCommand(EFbsMessFontNameAlias, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 16:
+ INFO_PRINTF1(_L("Get nearest font to design height in twips with invalid typeface name length\r\n"));
+ iClient.SendInvalidNameLength(EFbsMessGetNearestFontToDesignHeightInTwips);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 17:
+ INFO_PRINTF1(_L("Get nearest font to max height in twips with invalid typeface name length\r\n"));
+ iClient.SendInvalidNameLength(EFbsMessGetNearestFontToMaxHeightInTwips);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 18:
+ INFO_PRINTF1(_L("Get nearest font to design height in pixels with invalid typeface name length\r\n"));
+ iClient.SendInvalidNameLength(EFbsMessGetNearestFontToDesignHeightInPixels);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 19:
+ INFO_PRINTF1(_L("Get nearest font to max height in pixels with invalid typeface name length\r\n"));
+ iClient.SendInvalidNameLength(EFbsMessGetNearestFontToMaxHeightInPixels);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 20:
+ INFO_PRINTF1(_L("Shape text with invalid bitmap font handle\r\n"));
+ iFbs->SendCommand(EFbsMessShapeText, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 21:
+ INFO_PRINTF1(_L("Shape delete with invalid bitmap font handle\r\n"));
+ iFbs->SendCommand(EFbsMessShapeDelete, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 22:
+ INFO_PRINTF1(_L("Set twips height with invalid font handle\r\n"));
+ iFbs->SendCommand(EFbsMessSetTwipsHeight, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 23:
+ INFO_PRINTF1(_L("Get twips height with invalid font handle\r\n"));
+ ((CTIPCTestStep*)iStep)->SetOverallTestStepID(_L("GRAPHICS-FBSERV-0603"));
+ ((CTIPCTestStep*)iStep)->RecordTestResultL();
+ ((CTIPCTestStep*)iStep)->CloseTMSGraphicsStep();
+ iFbs->SendCommand(EFbsMessGetTwipsHeight, 963955448, 963955368, 963955300, 963955232);
+ TEST(EFalse);
+ TestComplete();
+ break;
+ case 24:
+ TestComplete();
+ break;
+ }
+ }
+
+RIPCTestFbservClient::RIPCTestFbservClient()
+ {
+
+ }
+
+RIPCTestFbservClient::~RIPCTestFbservClient()
+ {
+
+ }
+
+TInt RIPCTestFbservClient::Connect(void)
+ {
+ _LIT(KFbServerName, "!Fontbitmapserver");
+ TVersion version(0, 0, 0);
+ TInt ret = CreateSession(KFbServerName, version);
+ return ret;
+ }
+
+void RIPCTestFbservClient::SendInvalidSize(TInt aFunctionNumber)
+ {
+ TPckgBuf<TSize> size;
+ size().iHeight = 0;
+ size().iWidth = 0;
+ TIpcArgs args;
+ args.Set(0, 1);
+ args.Set(2, &size);
+
+ SendReceive(aFunctionNumber, args);
+ }
+
+void RIPCTestFbservClient::SendInvalidDisplayMode(TInt aFunctionNumber)
+ {
+ TPckgBuf<TBmpSpec> bmpSpec;
+ bmpSpec().iDispMode = EColorLast;
+ TIpcArgs args = TIpcArgs();
+ args.Set(0, &bmpSpec);
+
+ SendReceive(aFunctionNumber, args);
+ }
+
+void RIPCTestFbservClient::SendInvalidNameLength(TInt aFunctionNumber)
+ {
+ TIpcArgs args = TIpcArgs();
+ _LIT(KDefault, "Default");
+ TInt size = 7;
+ HBufC8 *buf1 = HBufC8::NewLC(size);
+ TPtr8 ptr1 = buf1->Des();
+ ptr1.Copy(KDefault);
+ CleanupStack::PopAndDestroy(buf1);
+ args.Set(0, &ptr1);
+ SendReceive(aFunctionNumber, args);
+ }
+
+
+void CTIPCTest::LoadFontsL(const TDesC& aFontsDir)
+ {
+ RFs fileSys;
+ User::LeaveIfError(fileSys.Connect());
+
+ TFindFile fileFinder(fileSys);
+ CDir* foundFileList = NULL;
+
+ _LIT(KFBSERVFontFilePattern, "*");
+ TInt findFileComplete = fileFinder.FindWildByDir(KFBSERVFontFilePattern,aFontsDir,foundFileList);
+
+ TRAPD(addFileError, LoadFontFromFilelistL(findFileComplete, foundFileList, fileFinder));
+ TEST(addFileError == KErrNone);
+
+ fileSys.Close();
+ }
+
+void CTIPCTest::LoadFontFromFilelistL(TInt aFindFileComplete, CDir* aFoundFileList, TFindFile& aFileFinder)
+ {
+ TUid id1 = TUid::Uid(0);
+ while (!aFindFileComplete)
+ {
+ CleanupStack::PushL(aFoundFileList);
+
+ const TInt foundFileCount = aFoundFileList->Count();
+ for (TInt i = 0; i < foundFileCount; i++)
+ {
+ TParse parse;
+ if (parse.Set((*aFoundFileList)[i].iName,&aFileFinder.File(),NULL) == KErrNone)
+ {
+ // Get filename and extension of font proposing to be loaded
+ TPtrC fontFilename = parse.NameAndExt();
+ id1=iFs->AddFileL(parse.FullName());
+
+ iFs->RemoveFile(KNullUid);
+
+ }
+ }
+ CleanupStack::PopAndDestroy(aFoundFileList);
+ aFindFileComplete = aFileFinder.FindWild(aFoundFileList);
+ }
+ }
+
+//--------------
+__CONSTRUCT_STEP__(IPCTest)
+