diff -r 000000000000 -r 5d03bc08d59c fbs/fontandbitmapserver/tfbs/tipctest.CPP --- /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 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 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) +