diff -r 000000000000 -r bde4ae8d615e os/graphics/graphicsdeviceinterface/gdi/tgdi/TTFSTORE.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/graphics/graphicsdeviceinterface/gdi/tgdi/TTFSTORE.CPP Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,205 @@ +// Copyright (c) 1998-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 "TGraphicsContext.h" +#include "TTYPES.H" + + +CTestTypefaceStore::CTestTypefaceStore(CTTypes* aTest) : + iTest(aTest) + { + } + +void CTestTypefaceStore::ConstructTestL() + { + ConstructL(); + } + +TInt CTestTypefaceStore::AccessCount(TInt aIndex) + { + return(iFontAccess->At(aIndex).iAccessCount); + } + +TInt CTestTypefaceStore::Count() + { + return(iFontAccess->Count()); + } + +void CTestTypefaceStore::AddFont(CFont* aFont) + { + TRAPD(ret,AddFontL(aFont)); + iTest->TEST2(ret, KErrNone); + } + +void CTestTypefaceStore::OpenFont(CFont* aFont) + { + TInt numfonts=Count(); + for(TInt count=0;countAt(count).iFont==aFont) + { + iFontAccess->At(count).iAccessCount++; + return; + } + } + } + +TestTFStore::TestTFStore(CTTypes* aTest) : + iTTFStore(aTest), + iTest(aTest) + { + + } + +/** + TestTFStore::Test + + Method to test the functionality associated with CTypeFaceStore (abstract base) class + The implementation is contained within CTestTypeFaceStore + Called from the TTypes test script +*/ +void TestTFStore::Test() + { + CFont* f1=new CTestFont; + CFont* f2=new CTestFont; + CFont* f3=new CTestFont; + CFont* f4=new CTestFont; + CFont* f5=new CTestFont; + + TRAPD(errCode, iTTFStore.ConstructTestL()); + iTest->TEST2(errCode, KErrNone); + iTTFStore.AddFont(f1); + iTest->TEST(iTTFStore.Count()==1); + iTest->TEST(iTTFStore.AccessCount(0)==1); + iTTFStore.AddFont(f2); + iTest->TEST(iTTFStore.Count()==2); + iTest->TEST(iTTFStore.AccessCount(0)==1); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTTFStore.AddFont(f3); + iTest->TEST(iTTFStore.Count()==3); + iTest->TEST(iTTFStore.AccessCount(0)==1); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTest->TEST(iTTFStore.AccessCount(2)==1); + iTTFStore.AddFont(f4); + iTest->TEST(iTTFStore.Count()==4); + iTest->TEST(iTTFStore.AccessCount(0)==1); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTest->TEST(iTTFStore.AccessCount(2)==1); + iTest->TEST(iTTFStore.AccessCount(3)==1); + iTTFStore.OpenFont(f1); + iTest->TEST(iTTFStore.Count()==4); + iTest->TEST(iTTFStore.AccessCount(0)==2); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTest->TEST(iTTFStore.AccessCount(2)==1); + iTest->TEST(iTTFStore.AccessCount(3)==1); + iTTFStore.OpenFont(f4); + iTest->TEST(iTTFStore.Count()==4); + iTest->TEST(iTTFStore.AccessCount(0)==2); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTest->TEST(iTTFStore.AccessCount(2)==1); + iTest->TEST(iTTFStore.AccessCount(3)==2); + iTTFStore.AddFont(f5); + iTest->TEST(iTTFStore.Count()==5); + iTest->TEST(iTTFStore.AccessCount(0)==2); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTest->TEST(iTTFStore.AccessCount(2)==1); + iTest->TEST(iTTFStore.AccessCount(3)==2); + iTest->TEST(iTTFStore.AccessCount(4)==1); + iTTFStore.OpenFont(f5); + iTest->TEST(iTTFStore.Count()==5); + iTest->TEST(iTTFStore.AccessCount(0)==2); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTest->TEST(iTTFStore.AccessCount(2)==1); + iTest->TEST(iTTFStore.AccessCount(3)==2); + iTest->TEST(iTTFStore.AccessCount(4)==2); + iTTFStore.OpenFont(f4); + iTest->TEST(iTTFStore.Count()==5); + iTest->TEST(iTTFStore.AccessCount(0)==2); + iTest->TEST(iTTFStore.AccessCount(1)==1); + iTest->TEST(iTTFStore.AccessCount(2)==1); + iTest->TEST(iTTFStore.AccessCount(3)==3); + iTest->TEST(iTTFStore.AccessCount(4)==2); +// + iTTFStore.ReleaseFont(f1); + iTTFStore.ReleaseFont(f2); + iTTFStore.ReleaseFont(f4); + iTTFStore.ReleaseFont(f4); + iTTFStore.ReleaseFont(f3); + iTTFStore.ReleaseFont(f5); + iTTFStore.ReleaseFont(f4); + iTTFStore.ReleaseFont(f1); + iTTFStore.ReleaseFont(f5); + } + +TestFontCache::TestFontCache(CTTypes* aTest): + iTest(aTest) + { + + } + +/** + TestFontCache::Test() + + Method to test the functionality within the CFontCache class + Called from the TTypes test script +*/ +void TestFontCache::Test() + { + TRAPD(ret,TestL()); + iTest->TEST2(ret, KErrNone); + } + +/** + TestFontCache::TestL() + + Method to test the functionality within the CFontCache class + Test the creation of CFontCache instance & the adding/removal of CFont fonts to the cache + Confirm no memory leaks occur + +*/ +void TestFontCache::TestL() + { + User::Heap().__DbgMarkStart(); + + iCache = new(ELeave) CFontCache; + CFont* font = NULL; + CFont* discard = NULL; + TFontSpec fs; + + for (TInt count1 = 0; count1 < KMaxFontCacheEntries; count1++) + { + font = (CFont*)(count1 + 1); + discard = iCache->AddEntryL(font,fs); + iTest->TEST(discard==NULL); + } + + font = (CFont*)KMaxFontCacheEntries; + discard = iCache->AddEntryL(font,fs); + iTest->TEST(discard==(CFont*)0x1); + delete iCache; + iCache = NULL; + + iCache = new(ELeave) CFontCache; + + for (TInt count2 = 0; count2 <= KMaxFontCacheEntries; count2++) + { + iCache->AddEntryL(NULL,fs); + iCache->RemoveFirstEntry(); + } + + delete iCache; + + User::Heap().__DbgMarkEnd(0); + }