sl@0: // Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include "TGraphicsContext.h" sl@0: #include "TTYPES.H" sl@0: sl@0: sl@0: CTestTypefaceStore::CTestTypefaceStore(CTTypes* aTest) : sl@0: iTest(aTest) sl@0: { sl@0: } sl@0: sl@0: void CTestTypefaceStore::ConstructTestL() sl@0: { sl@0: ConstructL(); sl@0: } sl@0: sl@0: TInt CTestTypefaceStore::AccessCount(TInt aIndex) sl@0: { sl@0: return(iFontAccess->At(aIndex).iAccessCount); sl@0: } sl@0: sl@0: TInt CTestTypefaceStore::Count() sl@0: { sl@0: return(iFontAccess->Count()); sl@0: } sl@0: sl@0: void CTestTypefaceStore::AddFont(CFont* aFont) sl@0: { sl@0: TRAPD(ret,AddFontL(aFont)); sl@0: iTest->TEST2(ret, KErrNone); sl@0: } sl@0: sl@0: void CTestTypefaceStore::OpenFont(CFont* aFont) sl@0: { sl@0: TInt numfonts=Count(); sl@0: for(TInt count=0;countAt(count).iFont==aFont) sl@0: { sl@0: iFontAccess->At(count).iAccessCount++; sl@0: return; sl@0: } sl@0: } sl@0: } sl@0: sl@0: TestTFStore::TestTFStore(CTTypes* aTest) : sl@0: iTTFStore(aTest), sl@0: iTest(aTest) sl@0: { sl@0: sl@0: } sl@0: sl@0: /** sl@0: TestTFStore::Test sl@0: sl@0: Method to test the functionality associated with CTypeFaceStore (abstract base) class sl@0: The implementation is contained within CTestTypeFaceStore sl@0: Called from the TTypes test script sl@0: */ sl@0: void TestTFStore::Test() sl@0: { sl@0: CFont* f1=new CTestFont; sl@0: CFont* f2=new CTestFont; sl@0: CFont* f3=new CTestFont; sl@0: CFont* f4=new CTestFont; sl@0: CFont* f5=new CTestFont; sl@0: sl@0: TRAPD(errCode, iTTFStore.ConstructTestL()); sl@0: iTest->TEST2(errCode, KErrNone); sl@0: iTTFStore.AddFont(f1); sl@0: iTest->TEST(iTTFStore.Count()==1); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==1); sl@0: iTTFStore.AddFont(f2); sl@0: iTest->TEST(iTTFStore.Count()==2); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTTFStore.AddFont(f3); sl@0: iTest->TEST(iTTFStore.Count()==3); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(2)==1); sl@0: iTTFStore.AddFont(f4); sl@0: iTest->TEST(iTTFStore.Count()==4); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(2)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(3)==1); sl@0: iTTFStore.OpenFont(f1); sl@0: iTest->TEST(iTTFStore.Count()==4); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==2); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(2)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(3)==1); sl@0: iTTFStore.OpenFont(f4); sl@0: iTest->TEST(iTTFStore.Count()==4); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==2); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(2)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(3)==2); sl@0: iTTFStore.AddFont(f5); sl@0: iTest->TEST(iTTFStore.Count()==5); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==2); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(2)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(3)==2); sl@0: iTest->TEST(iTTFStore.AccessCount(4)==1); sl@0: iTTFStore.OpenFont(f5); sl@0: iTest->TEST(iTTFStore.Count()==5); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==2); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(2)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(3)==2); sl@0: iTest->TEST(iTTFStore.AccessCount(4)==2); sl@0: iTTFStore.OpenFont(f4); sl@0: iTest->TEST(iTTFStore.Count()==5); sl@0: iTest->TEST(iTTFStore.AccessCount(0)==2); sl@0: iTest->TEST(iTTFStore.AccessCount(1)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(2)==1); sl@0: iTest->TEST(iTTFStore.AccessCount(3)==3); sl@0: iTest->TEST(iTTFStore.AccessCount(4)==2); sl@0: // sl@0: iTTFStore.ReleaseFont(f1); sl@0: iTTFStore.ReleaseFont(f2); sl@0: iTTFStore.ReleaseFont(f4); sl@0: iTTFStore.ReleaseFont(f4); sl@0: iTTFStore.ReleaseFont(f3); sl@0: iTTFStore.ReleaseFont(f5); sl@0: iTTFStore.ReleaseFont(f4); sl@0: iTTFStore.ReleaseFont(f1); sl@0: iTTFStore.ReleaseFont(f5); sl@0: } sl@0: sl@0: TestFontCache::TestFontCache(CTTypes* aTest): sl@0: iTest(aTest) sl@0: { sl@0: sl@0: } sl@0: sl@0: /** sl@0: TestFontCache::Test() sl@0: sl@0: Method to test the functionality within the CFontCache class sl@0: Called from the TTypes test script sl@0: */ sl@0: void TestFontCache::Test() sl@0: { sl@0: TRAPD(ret,TestL()); sl@0: iTest->TEST2(ret, KErrNone); sl@0: } sl@0: sl@0: /** sl@0: TestFontCache::TestL() sl@0: sl@0: Method to test the functionality within the CFontCache class sl@0: Test the creation of CFontCache instance & the adding/removal of CFont fonts to the cache sl@0: Confirm no memory leaks occur sl@0: sl@0: */ sl@0: void TestFontCache::TestL() sl@0: { sl@0: User::Heap().__DbgMarkStart(); sl@0: sl@0: iCache = new(ELeave) CFontCache; sl@0: CFont* font = NULL; sl@0: CFont* discard = NULL; sl@0: TFontSpec fs; sl@0: sl@0: for (TInt count1 = 0; count1 < KMaxFontCacheEntries; count1++) sl@0: { sl@0: font = (CFont*)(count1 + 1); sl@0: discard = iCache->AddEntryL(font,fs); sl@0: iTest->TEST(discard==NULL); sl@0: } sl@0: sl@0: font = (CFont*)KMaxFontCacheEntries; sl@0: discard = iCache->AddEntryL(font,fs); sl@0: iTest->TEST(discard==(CFont*)0x1); sl@0: delete iCache; sl@0: iCache = NULL; sl@0: sl@0: iCache = new(ELeave) CFontCache; sl@0: sl@0: for (TInt count2 = 0; count2 <= KMaxFontCacheEntries; count2++) sl@0: { sl@0: iCache->AddEntryL(NULL,fs); sl@0: iCache->RemoveFirstEntry(); sl@0: } sl@0: sl@0: delete iCache; sl@0: sl@0: User::Heap().__DbgMarkEnd(0); sl@0: }