diff -r 57c618273d5c -r bbf46f59e123 fbs/fontandbitmapserver/tfbs/tipctest.CPP --- a/fbs/fontandbitmapserver/tfbs/tipctest.CPP Thu Aug 19 11:11:18 2010 +0300 +++ b/fbs/fontandbitmapserver/tfbs/tipctest.CPP Tue Aug 31 16:31:06 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1996-2010 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" @@ -13,11 +13,16 @@ // Description: // -#include "fbsmessage.h" #include "../sfbs/UTILS.H" #include "tipctest.h" #include "fbsdefs.h" +#include "fbsmessage.h" +// Invalid parameters to be passed in SendCommand() calls. +const TInt KInvalidParam1 = 963955448; +const TInt KInvalidParam2 = 963955368; +const TInt KInvalidParam3 = 963955300; +const TInt KInvalidParam4 = 963955232; CTIPCTest::CTIPCTest(CTestStep* aStep): CTGraphicsBase(aStep), @@ -70,44 +75,6 @@ } -/** - @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"); @@ -121,148 +88,254 @@ switch(aCurTestCase) { + /** + @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 + */ case 1: - INFO_PRINTF1(_L("Shutdown\r\n")); + INFO_PRINTF1(_L("Shutdown")); iFbs->SendCommand(EFbsMessShutdown); TestComplete(); break; case 2: - INFO_PRINTF1(_L("Height in twips with negative typeface index\r\n")); + INFO_PRINTF1(_L("Height in twips with negative typeface index")); 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")); + INFO_PRINTF1(_L("Height in twips with invalid size")); iClient.SendInvalidSize(EFbsMessFontHeightInTwips); TEST(EFalse); TestComplete(); break; case 4: - INFO_PRINTF1(_L("Height in pixels with negative typeface index\r\n")); + INFO_PRINTF1(_L("Height in pixels with negative typeface index")); iFbs->SendCommand(EFbsMessFontHeightInPixels, -1); TEST(EFalse); TestComplete(); break; case 5: - INFO_PRINTF1(_L("Height in pixels with invalid size\r\n")); + INFO_PRINTF1(_L("Height in pixels with invalid size")); iClient.SendInvalidSize(EFbsMessFontHeightInPixels); TEST(EFalse); TestComplete(); break; case 6: - INFO_PRINTF1(_L("Add font store file with negative length\r\n")); + INFO_PRINTF1(_L("Add font store file with negative length")); 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); + INFO_PRINTF1(_L("Add font store file with huge length")); + iFbs->SendCommand(EFbsMessAddFontStoreFile, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); TEST(EFalse); TestComplete(); break; case 8: - INFO_PRINTF1(_L("Install font store file with negative length\r\n")); + INFO_PRINTF1(_L("Install font store file with negative length")); 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); + INFO_PRINTF1(_L("Install font store file with huge length")); + iFbs->SendCommand(EFbsMessInstallFontStoreFile, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); TEST(EFalse); TestComplete(); break; case 10: - INFO_PRINTF1(_L("Remove font store file with active references\r\n")); + INFO_PRINTF1(_L("Remove font store file with active references")); 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")); + INFO_PRINTF1(_L("Bitmap create with invalid display mode")); 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); + INFO_PRINTF1(_L("Rasterize with invalid bitmap handle")); + iFbs->SendCommand(EFbsMessRasterize, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); TEST(EFalse); TestComplete(); break; case 13: - INFO_PRINTF1(_L("Face Attribute with invalid bitmap handle\r\n")); - iFbs->SendCommand(EFbsMessFaceAttrib, 963955448, 963955368, 963955300, 963955232); + INFO_PRINTF1(_L("Face Attribute with invalid bitmap handle")); + iFbs->SendCommand(EFbsMessFaceAttrib, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); TEST(EFalse); TestComplete(); break; case 14: - INFO_PRINTF1(_L("Has Character with invalid bitmap handle\r\n")); - iFbs->SendCommand(EFbsMessHasCharacter, 963955448, 963955368, 963955300, 963955232); + INFO_PRINTF1(_L("Has Character with invalid bitmap handle")); + iFbs->SendCommand(EFbsMessHasCharacter, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); 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); + INFO_PRINTF1(_L("Name Alias with huge alias name length")); + iFbs->SendCommand(EFbsMessFontNameAlias, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); TEST(EFalse); TestComplete(); break; case 16: - INFO_PRINTF1(_L("Get nearest font to design height in twips with invalid typeface name length\r\n")); + INFO_PRINTF1(_L("Get nearest font to design height in twips with invalid typeface name length")); 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")); + INFO_PRINTF1(_L("Get nearest font to max height in twips with invalid typeface name length")); 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")); + INFO_PRINTF1(_L("Get nearest font to design height in pixels with invalid typeface name length")); 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")); + INFO_PRINTF1(_L("Get nearest font to max height in pixels with invalid typeface name length")); 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); + INFO_PRINTF1(_L("Shape text with invalid bitmap font handle")); + iFbs->SendCommand(EFbsMessShapeText, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); 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); + INFO_PRINTF1(_L("Shape delete with invalid bitmap font handle")); + iFbs->SendCommand(EFbsMessShapeDelete, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); 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); + INFO_PRINTF1(_L("Set twips height with invalid font handle")); + iFbs->SendCommand(EFbsMessSetTwipsHeight, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); 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); + INFO_PRINTF1(_L("Get twips height with invalid font handle")); + iFbs->SendCommand(EFbsMessGetTwipsHeight, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); TEST(EFalse); TestComplete(); break; case 24: + /** + @SYMTestCaseID GRAPHICS-FBSERV-0630 + + @SYMTestCaseDesc + Tests that invalid font handle to EFbsMessGetGlyphs causes panic + + @SYMTestExpectedResults + Client should panic with FBSERV -8 + */ + INFO_PRINTF1(_L("Get glyphs from glyph atlas with invalid font handle")); + iFbs->SendCommand(EFbsMessGetGlyphs, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); + TEST(EFalse); + TestComplete(); + break; + case 25: + /** + @SYMTestCaseID GRAPHICS-FBSERV-0670 + + @SYMTestCaseDesc + Tests that invalid font handle to EFbsMessGetGlyphMetrics causes panic + + @SYMTestExpectedResults + Client should panic with FBSERV -8 + */ + INFO_PRINTF1(_L("Get glyph metrics with invalid font handle")); + iFbs->SendCommand(EFbsMessGetGlyphMetrics, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); + TEST(EFalse); + TestComplete(); + break; + /** + @SYMTestCaseID + TI18N-GDI-CIT-4086 + + @SYMTestCaseDesc + Test if FBS can handle invalid messages correctly + and panic the client as needed. + + @SYMTestActions + 26. EFbsMessGetFontTable + 27. EFbsMessReleaseFontTable + 28. EFbsMessGetGlyphOutline + 29. EFbsMessReleaseGlyphOutline + + @SYMTestExpectedResults + Test should pass + */ + case 26: + INFO_PRINTF1(_L("Get Font Table with wrong msg")); + iFbs->SendCommand(EFbsMessGetFontTable, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); + TEST(EFalse); + TestComplete(); + break; + case 27: + INFO_PRINTF1(_L("Release Font Table with wrong msg")); + iFbs->SendCommand(EFbsMessReleaseFontTable, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); + TEST(EFalse); + TestComplete(); + break; + case 28: + INFO_PRINTF1(_L("Get Glyph outline with wrong msg")); + iFbs->SendCommand(EFbsMessGetGlyphOutline,KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); + TEST(EFalse); + TestComplete(); + break; + case 29: + INFO_PRINTF1(_L("Release Glyph outline with wrong msg")); + iFbs->SendCommand(EFbsMessReleaseGlyphOutline, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4); + TEST(EFalse); + TestComplete(); + break; + case 30: TestComplete(); break; } @@ -320,50 +393,7 @@ 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)