--- a/fontservices/fontstore/tfs/T_Cache.CPP Fri Mar 12 15:51:09 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/*
-* Copyright (c) 2006-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 "T_IsolatedFontStore.h"
-#include "openfontsprivate.h"
-#include <f32file.h>
-#include <e32test.h>
-#include <fntstore.h>
-#include <f32file.h>
-#include <s32file.h>
-#include <fbs.h>
-#include <graphics/openfontconstants.h>
-#include <graphics/openfontrasterizer.h>
-#include "T_Cache.H"
-
-LOCAL_C TInt Ptr2Offset(const TAny* aAny, TUint8* aHeapBase)
- {
- if (aAny && aHeapBase)
- {
- return (TInt)aAny - (TInt)aHeapBase;
- }
- return 0;
- }
-
-//LOCAL_C TAny* Offset2Ptr(const TInt aOffset, TUint8* aHeapBase)
-// {
-// if (aOffset && aHeapBase)
-// {
-// return (TAny*)(aOffset + (TInt)aHeapBase);
-// }
-// return NULL;
-// }
-
-CTCache::CTCache(CTestStep* aStep):
- CTGraphicsBase(aStep)
- {
- INFO_PRINTF1(_L("FontStore T_Cache test\n"));
- iHeap=UserHeap::ChunkHeap(NULL,0x1000000,0x1000000);
- }
-
-CTCache::~CTCache()
- {
- iHeap->Close();
- }
-
-//below code is for unit test and coverage only
-
-void CTCache::TFontCache()
- {
-#ifdef _DEBUG
- TFontTableGlyphOutlineCacheMemMonitor mon;
- CFontTableCache* fontCache = new CFontTableCache(iHeap,mon);
-
- //user array
- TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
- TCacheUserInfo* user2 = new TCacheUserInfo(222,1);
- RPointerArray<TCacheUserInfo> userArray;
- userArray.Append(user1);
- userArray.Append(user2);
-
- //item array
- CFontTableCacheItem* item1;
- TInt len = 3;
- TAny* content = (iHeap->Alloc(3));
- TUid iUid = TUid::Uid(123456);
- item1 = new CFontTableCacheItem(iUid, 0x68656164, Ptr2Offset(content, iHeap->Base()), len);
- item1->SetUser(userArray);
- RPointerArray<CFontTableCacheItem> itemArray;
- itemArray.Append(item1);
-
- //font cache
- fontCache->SetFontItem(itemArray);
- TBool has = fontCache->HasOutstandingRefCount();
- TEST(has);
- has = fontCache->HasOutstandingRefCountWithUid(iUid);
- TEST(has);
- TUid uid = TUid::Uid(1234);
- fontCache->HasOutstandingRefCountWithUid(uid); //for coverage
-
- TAny *outline = NULL;
- TInt length = 3;
- TInt id = 0;
- TUint32 tag = 0x1234;
- TInt err = fontCache->Find(uid, tag, outline, length, &id);
- TEST(err != KErrNone);
- err = fontCache->Find(iUid, tag, outline, length, &id);
- TEST(err != KErrNone);
- __UHEAP_FAILNEXT(1);
- fontCache->Append(uid, tag, content, length);
- TEST(err != KErrNone);
- __UHEAP_RESET;
-
- fontCache->CleanupCacheOnFbsSessionTermination(123);
- TEST(err != KErrNone);
-
- userArray.Close();
- delete fontCache;
- itemArray.Close();
-#endif
- }
-
-void CTCache::TFontCacheItem()
- {
-#ifdef _DEBUG
- TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
- TCacheUserInfo* user2 = new TCacheUserInfo(222,1);
- RPointerArray<TCacheUserInfo> userArray;
- userArray.Append(user1);
- userArray.Append(user2);
-
- CFontTableCacheItem* item1;
- TAny* content = User::Alloc(4);
- TUid iUid = TUid::Uid(123456);
- item1 = new CFontTableCacheItem(iUid, 0x68656164, Ptr2Offset(content, User::Heap().Base()), 3);
- User::Free(content);
- __UHEAP_FAILNEXT(1);
- TInt err = item1->IncRefCount(111);
- TEST(err == KErrNoMemory);
- __UHEAP_RESET;
-
- TBool has = item1->HasOutstandingRefCount();
- TEST(!has);
-
-
- item1->SetUser(userArray);
- has = item1->HasOutstandingRefCount();
- TEST(has);
-
- TInt id = 1;
- err = item1->FindUser(333, &id);
- TEST(err != KErrNone);
-
- err = item1->DecRefCount(333);
- TEST(err == KErrNotFound);
-
-
- userArray.Close();
- delete item1;
-
-#endif
- }
-
-void CTCache::TGlyphCacheItem()
- {
-#ifdef _DEBUG
-
- TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
- TCacheUserInfo* user2 = new TCacheUserInfo(222,1);
-
- RPointerArray<TCacheUserInfo> userArray;
- userArray.Append(user1);
- userArray.Append(user2);
-
- COutlineCacheItem* item1;
- TInt len = 3;
- TAny* content = User::Alloc(4);
- item1 = new COutlineCacheItem(Ptr2Offset(content, User::Heap().Base()), len);
- User::Free(content);
- __UHEAP_FAILNEXT(1);
- TInt err = item1->DecRefCount(333);
- err = item1->IncRefCount(111);
- TEST(err == KErrNoMemory);
- __UHEAP_RESET;
-
-
- item1->SetUser(userArray);
- err = item1->IncRefCount(333);
- TEST(err == KErrNone);
-
- userArray.Close();
- delete item1;
-#endif
- }
-
-void CTCache::THintedGlyphCache()
- {
-#ifdef _DEBUG
- TFontTableGlyphOutlineCacheMemMonitor mon;
- CHintedOutlineCache* hintedCache = new CHintedOutlineCache(iHeap,mon);
- TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
- TCacheUserInfo* user2 = new TCacheUserInfo(222,1);
- RPointerArray<TCacheUserInfo> userArray;
- userArray.Append(user1);
- userArray.Append(user2);
- COutlineCacheItem* item1;
- TInt len = 4;
- //TUint content[] = {1,2,3};
- TAny* content = User::Alloc(4);
- item1 = new COutlineCacheItem(Ptr2Offset(content, User::Heap().Base()), len);
- item1->SetUser(userArray);
- COpenFont* openFont = NULL;
- THintedOutlineId hintedId(openFont, 11);
- hintedCache->SetHintedItem(hintedId, item1);
- RHashMap<THintedOutlineId, COutlineCacheItem*> map = hintedCache->GetHintedMap();
- //for coverage
- THintedOutlineId hintedId1(openFont, 12);
- TInt err = hintedCache->IncRefCount(hintedId1, 111);
- TEST(err != KErrNone);
- COpenFont* openFont1 = reinterpret_cast<COpenFont*>(0x123);
- //for coverage
- err = hintedCache->CleanupCacheOnOpenFontRemoval(openFont1);
- TEST(err == KErrNone);
- //following return value alway KErrNone
- hintedCache->CleanupCacheOnFbsSessionTermination(111);
- hintedCache->CleanupCacheOnFbsSessionTermination(333);
-
- TAny* ptr;
- TInt size = 0;
- __UHEAP_FAILNEXT(1);
- hintedCache->CacheHintedOutline(hintedId1, &content, len, ptr, size);
- __UHEAP_RESET;
-
- __RHEAP_FAILNEXT(iHeap, 1);
- hintedCache->CacheHintedOutline(hintedId1, &content, len, ptr, size);
- __RHEAP_RESET(iHeap);
-
-
- mon.Inc(KFontTable_GlyphOutline_CacheMaxMem);
- err = hintedCache->CacheHintedOutline(hintedId1, &content, len, ptr, len);
- TEST(err == KErrNoMemory);
- User::Free(content);
-
- map.Close();
- delete item1;
- userArray.Close();
- delete hintedCache;
-#endif
- }
-
-void CTCache::TUnHintedGlyphCache()
- {
-#ifdef _DEBUG
- TFontTableGlyphOutlineCacheMemMonitor mon;
- CUnhintedOutlineCache* unhintedCache = new CUnhintedOutlineCache(iHeap,mon);
- TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
- TCacheUserInfo* user2 = new TCacheUserInfo(222,1);
- RPointerArray<TCacheUserInfo> userArray;
- userArray.Append(user1);
- userArray.Append(user2);
- COutlineCacheItem* item1;
- TInt len = 3;
- TAny* content = (iHeap->Alloc(3));
- item1 = new COutlineCacheItem(Ptr2Offset(content, iHeap->Base()), len);
- item1->SetUser(userArray);
- TUid uid = TUid::Uid(123);
- TUnhintedOutlineId unhintedId(uid, 11, 1);
- unhintedCache->SetUnHintedItem(unhintedId, item1);
-// RHashMap<TUnhintedOutlineId, COutlineCacheItem*> map = unhintedCache->GetHintedMap();
- TUnhintedOutlineId unhintedId1(uid, 12, 1);
- TInt err = unhintedCache->IncRefCount(unhintedId1, 111);
- TEST(err != KErrNone);
- //for coverage
- unhintedCache->CleanupCacheOnFbsSessionTermination(111);
- unhintedCache->CleanupCacheOnFbsSessionTermination(333);
-
- TAny* ptr;
- TInt size = 0;
- __UHEAP_FAILNEXT(1);
- unhintedCache->CacheUnhintedOutline(unhintedId1, &content, len, ptr, size);
- __UHEAP_RESET;
-
- __RHEAP_FAILNEXT(iHeap, 1);
- unhintedCache->CacheUnhintedOutline(unhintedId1, &content, len, ptr, size);
- __RHEAP_RESET(iHeap);
-
-
- mon.Inc(KFontTable_GlyphOutline_CacheMaxMem);
- err = unhintedCache->CacheUnhintedOutline(unhintedId1, &content, len, ptr, len);
- TEST(err == KErrNoMemory);
-
- userArray.Close();
- delete unhintedCache;
-
-#endif
- }
-
-void CTCache::TFontCacheForCov()
- {
-#ifdef _DEBUG
- TFontTableGlyphOutlineCacheMemMonitor mon;
- CFontTableCache* fontCache = new CFontTableCache(iHeap,mon);
-
- TCacheUserInfo* user1 = new TCacheUserInfo(111,0);
- RPointerArray<TCacheUserInfo> userArray;
- userArray.Append(user1);
- CFontTableCacheItem* item1;
- TInt len = 3;
- TAny* content = (iHeap->Alloc(3));
- TUid iUid = TUid::Uid(123456);
- item1 = new CFontTableCacheItem(iUid, 0x68656164, Ptr2Offset(content, iHeap->Base()), len);
- item1->SetUser(userArray);
- RPointerArray<CFontTableCacheItem> itemArray;
- itemArray.Append(item1);
- fontCache->SetFontItem(itemArray);
-
- TBool has = fontCache->HasOutstandingRefCount();
- TEST(!has);
- has = fontCache->HasOutstandingRefCountWithUid(iUid);
- TEST(!has);
-
- TUint length = 3;
- TUint32 tag = 0x1234;
- TUid uid = TUid::Uid(1234);
- mon.Inc(KFontTable_GlyphOutline_CacheMaxMem);
- TInt err = fontCache->Append(uid, tag, content, length);
- TEST(err == KErrNoMemory);
-
- userArray.Close();
- delete fontCache;
- itemArray.Close();
-#endif
- }
-
-void CTCache::RunTestCaseL(TInt aCurTestCase)
- {
- ((CTCacheStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
- switch(aCurTestCase)
- {
- case 1:
- ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0001"));
- INFO_PRINTF1(_L("FontStore T_Cache test 1: TFontCacheItem\n"));
- TFontCacheItem();
- break;
-
- case 2:
- ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0002"));
- INFO_PRINTF1(_L("FontStore T_Cache test 2: TFontCache\n"));
- TFontCache();
- TFontCacheForCov();
- break;
-
- case 3:
- ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0003"));
- INFO_PRINTF1(_L("FontStore T_Cache test 3: THintedGlyphCacheItem\n"));
- TGlyphCacheItem();
- break;
-
- case 4:
- ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0004"));
- INFO_PRINTF1(_L("FontStore T_Cache test 4: THintedGlyphCache\n"));
- THintedGlyphCache();
- break;
-
- case 5:
- ((CTCacheStep*)iStep)->SetTestStepID(_L("GRAPHICS-FNTSTORE-Cache-0005"));
- INFO_PRINTF1(_L("FontStore T_Cache test 5: TUnHintedGlyphCache\n"));
- TUnHintedGlyphCache();
- break;
-
- case 6:
- ((CTCacheStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
- ((CTCacheStep*)iStep)->CloseTMSGraphicsStep();
- TestComplete();
- break;
- }
- ((CTCacheStep*)iStep)->RecordTestResultL();
- }
-
-//--------------
-__CONSTRUCT_STEP__(Cache)
-
-
-