diff -r 000000000000 -r 1fb32624e06b localisation/localesupport/TestNrl/TestNrl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localisation/localesupport/TestNrl/TestNrl.cpp Tue Feb 02 02:02:46 2010 +0200 @@ -0,0 +1,864 @@ +/* +* Copyright (c) 2001-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: +* TCUSTOMWRAP.CPP +* +*/ + + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "TestNrl.hrh" +#include +#include +#include + +#include +#include +#include + +// forward declarations +class CNRLTestAppUi; +//class CEikScrollBarFrame; + +const TInt EGranularity=4; + +_LIT(KNewLine,"\n"); +_LIT(KLitResourceFileNameAppendage, "_NAME.RSC"); +#ifdef _DEBUG +_LIT(KPanicText, "NonRom_Test"); +#endif + +class TDummyObserver: public MMsvSessionObserver + { +public: + virtual void HandleSessionEventL(TMsvSessionEvent, TAny*, TAny*, TAny*) {}; + }; + + +// +// class CNRLTestControl +// + +class CNRLTestControl : public CCoeControl + { +public: + + void ConstructL(const TRect& aRect); + void ActivateL(); + ~CNRLTestControl(); + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + void PrintToScreen (TRefByValue aFmt,...); + void PrintLineToScreen (TRefByValue aFmt,...); + +private: // from CCoeControl + void Draw(const TRect&) const; + +private: + CEikConsoleScreen* iConsole; + }; + + +CNRLTestControl::~CNRLTestControl () + { + delete iConsole; + } + + +void CNRLTestControl::ConstructL (const TRect& aRect) + { + CreateWindowL(); + Window().SetShadowDisabled(ETrue); + Window().SetBackgroundColor(KRgbGray); + EnableDragEvents(); + SetRect(aRect); + SetBlank(); + TRect consoleSize = aRect; + consoleSize.Shrink(1,1); + iConsole=new(ELeave) CEikConsoleScreen; + iConsole->ConstructL(_L("TEST"),TPoint(1,1),consoleSize.Size(),CEikConsoleScreen::ENoInitialCursor,EEikConsWinInPixels); + } + +void CNRLTestControl::ActivateL () + { + CCoeControl::ActivateL(); + iConsole->SetKeepCursorInSight(ETrue); + iConsole->SetHistorySizeL(500,5); + iConsole->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EOn); + iConsole->Write(_L("\nStarting tests for Non-Rom Localisation\nThis test requires some user interaction\n")); + iConsole->FlushChars(); + iConsole->DrawCursor(); + iConsole->SetAtt(ATT_NORMAL); + } + +void CNRLTestControl::Draw(const TRect& /* aRect*/) const + { + CWindowGc& gc = SystemGc(); + TRect rect=Rect(); + //rect.Shrink(10,10); + gc.DrawRect(rect); + rect.Shrink(1,1); + } + + +TKeyResponse CNRLTestControl::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) + { + if (aType!=EEventKey) + return(EKeyWasConsumed); + TInt modifiers=aKeyEvent.iModifiers; + TInt code=aKeyEvent.iCode; + + + + TRect range = iConsole->Selection(); // get current selected range + switch (code) + { + case EKeyUpArrow: + iConsole->Up(); + if (modifiers & EModifierShift) + { + range.iTl = iConsole->CursorPos(); + iConsole->SetSelection(range); + } + else + iConsole->SelectCursor(); + break; + case EKeyDownArrow: + iConsole->Down(); + if (modifiers & EModifierShift) + { + range.iTl = iConsole->CursorPos(); + iConsole->SetSelection(range); + } + else + iConsole->SelectCursor(); + break; + case EKeyLeftArrow: + iConsole->Left(); + if (modifiers & EModifierShift) + { + range.iTl = iConsole->CursorPos(); + iConsole->SetSelection(range); + } + else + iConsole->SelectCursor(); + break; + case EKeyRightArrow: + iConsole->Right(); + if (modifiers & EModifierShift) + { + range.iTl = iConsole->CursorPos(); + iConsole->SetSelection(range); + } + else + iConsole->SelectCursor(); + break; + case EKeyEnter: + iConsole->Cr(); + iConsole->Lf(); + break; + default: + { + iConsole->SelectCursor(); // forget previous selection + TBuf<1> chr; + chr.Format(_L("%c"),code); + iConsole->Write(chr); + iConsole->FlushChars(); + } + break; + } + return(EKeyWasConsumed); + } + + +void CNRLTestControl::PrintToScreen(TRefByValue aFmt,...) + { + VA_LIST list; + VA_START(list,aFmt); + TBuf<128> buf; + buf.FormatList(aFmt,list); + iConsole->Write(buf); + } + +void CNRLTestControl::PrintLineToScreen(TRefByValue aFmt,...) + { + VA_LIST list; + VA_START(list,aFmt); + TBuf<128> buf; + buf.FormatList(aFmt,list); + iConsole->Write(buf); + iConsole->Write(KNewLine); + + } + + + +// +// ---------------------- CNRLTestAppView definition ---------------- +// + + +class CNRLTestAppUi : public CEikAppUi ,private CBaNamedPlugins::MFallBackName + { +public: + void ConstructL(); + void CreateControlL(); + ~CNRLTestAppUi(); + + void StartTestsL(); + void TestLocaleL(const TDesC& aTestHeader); + void TestCollation(const TDesC& aTestHeader); + void TestResourcesL(const TDesC& aTestHeader); + void TestCharSetNamesL(const TDesC& aTestHeader); + void TestFEPNamesL(const TDesC& aTestHeader); + void TestDisplayMessagingL(const TDesC& aTestHeader); + void TestBIFL(const TDesC& aTestHeader); + void TestPrinterNameL(const TDesC& aTestHeader); + void TestLocalisableBitmapL(const TDesC& aTestHeader); + + +private: // from CEikAppUi -- framework + void HandleCommandL(TInt aCommand); + + virtual HBufC* FallBackNameL(const TDesC& aFullResourceFileName) const; + + void WriteTestHeader(const TDesC& aTestHeader) const; + void Pass(const TDesC& aTestHeader); + void FailL(const TDesC& aTestHeader); + void ReportEndResult() const; +private: + CNRLTestControl* iNRLTestControl; + CDesCArray* iFailedTests; + }; + +void CNRLTestAppUi::ConstructL() + { + BaseConstructL(); + CreateControlL(); + + } + +// The cleanup operation of the TCleanupItem + +LOCAL_C void DestroyResourceFileArray(TAny* aArrayOfResourceFiles) + { + RArray& arrayOfResourceFiles=*STATIC_CAST(RArray*, aArrayOfResourceFiles); + for (TInt i=arrayOfResourceFiles.Count()-1; i>=0; --i) + { + const CBaNamedPlugins::TResourceFile& resourceFile=arrayOfResourceFiles[i]; + delete resourceFile.iFullFileName; + delete resourceFile.iIdentifier; + } + arrayOfResourceFiles.Close(); + } + + + +void CNRLTestAppUi::CreateControlL() + { + iNRLTestControl=new(ELeave) CNRLTestControl; + iNRLTestControl->ConstructL(ClientRect()); + AddToStackL(iNRLTestControl); + iNRLTestControl->ActivateL(); + iFailedTests=new(ELeave) CDesCArrayFlat(3); + } + +CNRLTestAppUi::~CNRLTestAppUi() + { + RemoveFromStack(iNRLTestControl); + delete iNRLTestControl; + for (TInt i=0; iCount();i++) + iFailedTests->Delete(i); + delete iFailedTests; + } + +void CNRLTestAppUi::HandleCommandL(TInt aCommand) + { + switch(aCommand) + { + case EAppCmdExit: + Exit(); + break; + case EAppCmdTest: + StartTestsL (); + break; + default: + break; + } + } + + +_LIT(KTestAnnouncer,"----------------"); +_LIT(KLocaleTestTitle,"Locale "); +_LIT(KResourceTestTitle,"Application Resource "); +_LIT(KCharSetNamesTest,"Charset Names "); +_LIT(KFEPNameTestTitle,"FEP Names "); +_LIT(KCollationTestTitle, "Collation Table "); +_LIT(KTDisplayMessaging,"Messaging Resources "); +_LIT(KBIFTestTitle,"BIF Files "); +_LIT(KPrinterNameTestTitle,"Printer Names "); +_LIT(KLocalisableBimap,"Bitmap Files "); +_LIT(KOriginalBitmapPath,"z:\\resource\\apps\\testnrl.mbm"); +_LIT(KNonROM,"Non-ROM"); + +void CNRLTestAppUi::WriteTestHeader(const TDesC& aTestHeader) const + { + iNRLTestControl->PrintToScreen(KNewLine); + iNRLTestControl->PrintToScreen(aTestHeader); + iNRLTestControl->PrintLineToScreen (_L("Test")); + iNRLTestControl->PrintToScreen(KNewLine); + + } + + +void CNRLTestAppUi::StartTestsL () + { + TestLocaleL(KLocaleTestTitle); + TestResourcesL (KResourceTestTitle); + TestCharSetNamesL(KCharSetNamesTest); + TestCollation(KCollationTestTitle); + TestFEPNamesL(KFEPNameTestTitle); + TestDisplayMessagingL(KTDisplayMessaging); + TestBIFL(KBIFTestTitle); + TestPrinterNameL (KPrinterNameTestTitle); + TestLocalisableBitmapL (KLocalisableBimap); + ReportEndResult(); + + } + + +void CNRLTestAppUi::TestLocaleL (const TDesC& aTestHeader) + { + + // print on console that we are starting the Locale Testing + // just checking it is not enough, need to display as well that + // the result is as expected. + //Test a few other things besides the + // locale number, some thing like a currency symbol. == $$$ + + WriteTestHeader(aTestHeader); + iNRLTestControl->PrintLineToScreen(_L("Have to ensure that the correct locale is picked up")); + iNRLTestControl->PrintLineToScreen(_L("Expected Locale with language extension")); + + TInt language; + (void)HAL::Get(HAL::ELanguageIndex,language); + iNRLTestControl->PrintLineToScreen(_L("%d"),language); + iNRLTestControl->PrintToScreen(_L("Current Locales language extension: ")); + + TInt currentLangId; + currentLangId = TInt(User::Language()); + iNRLTestControl->PrintLineToScreen(_L("%d"),currentLangId); + + if (currentLangId == 95 ) + { + TCurrencySymbol theCurrencySymbol; + _LIT(KExpectedCurrencySymbol,"$$$"); + if(theCurrencySymbol==KExpectedCurrencySymbol) + { + iNRLTestControl->PrintLineToScreen(_L("The correct locale was loaded")); + Pass(aTestHeader); + } + } + else + { + iNRLTestControl->PrintToScreen(_L("The correct locale was not loaded")); + FailL(aTestHeader); + } + } + +void CNRLTestAppUi::TestResourcesL(const TDesC& aTestHeader) + { + WriteTestHeader(aTestHeader); + iNRLTestControl->PrintLineToScreen (_L("Reading information from resource file...")); + + TResourceReader resourceReader; + CCoeEnv::Static()->CreateResourceReaderLC(resourceReader,R_NRL_COLLATE); + CDesCArray* collation=new(ELeave) CDesCArrayFlat(3); + CleanupStack::PushL(collation); + TInt n=resourceReader.ReadUint16(); + + for (TInt i=0;iAppendL(resourceReader.ReadTPtrC()); + + for (TInt j=0;jPrintLineToScreen((*collation)[j]); + } + + _LIT(KResourceData,"David"); + TInt resourceTest; + collation->Find(KResourceData,resourceTest,ECmpCollated); + if(resourceTest!=collation->MdcaCount()) + { + Pass(aTestHeader); + } + else + { + FailL(aTestHeader); + } + CleanupStack::PopAndDestroy(2);//resourceReader,collation + } + +void CNRLTestAppUi::TestCharSetNamesL(const TDesC& aTestHeader) + { + WriteTestHeader(aTestHeader); + RFs& aSession = iCoeEnv->FsSession(); + CArrayFix* charsetArray=CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC(aSession); + MDesCArray* nameArry=CCnvCharacterSetNames::NewL(aSession,charsetArray->Array()); + TInt index=((CCnvCharacterSetNames*)nameArry)->IndexOfIdentifier(KCharacterSetIdentifierAscii); + TInt testResult; + testResult=0; + TPtrC bigFive=nameArry->MdcaPoint(index); + TInt findNonROM; + findNonROM=bigFive.Find(KNonROM); + if(findNonROM!=KErrNotFound) + { + iNRLTestControl->PrintToScreen(KNewLine); + iNRLTestControl->PrintLineToScreen(bigFive); + testResult=1; + } + if(testResult) + Pass(aTestHeader); + else + FailL(aTestHeader); + delete nameArry; + CleanupStack::PopAndDestroy();//charsetArray + } + + + +void CNRLTestAppUi::TestCollation(const TDesC& aTestHeader) + { + WriteTestHeader(aTestHeader); + iNRLTestControl->PrintToScreen(_L("This test locale has it's own collation table\n")); + iNRLTestControl->PrintToScreen(_L("Set Collation values in the order E-D-C-B-A\n")); + iNRLTestControl->PrintToScreen(_L("Loading a few names which have been sorted using collation\n")); + iNRLTestControl->PrintToScreen(_L("David should appear before BeiBei\n\n")); + TResourceReader resourceReader; + CCoeEnv::Static()->CreateResourceReaderLC(resourceReader,R_NRL_COLLATE); + CDesCArray* collation=new(ELeave) CDesCArrayFlat(3); + CleanupStack::PushL(collation); + TInt n=resourceReader.ReadUint16(); + + for (TInt i=0;iAppendL(resourceReader.ReadTPtrC()); + //David is the first name stored in the array before the array is sorted. + //When the array is sorted, David should still be the first name + // because this locales collation table reverses the ordering between A & E + TPtrC david = (*collation)[0]; + collation->Sort(ECmpCollated); + for (TInt j=0;jPrintLineToScreen((*collation)[j]); + } + + TInt coltest; + + // searching for Davids name in the array, + // according to the new collation rules David's name should be + // the first itm in the array. + + collation->Find(david,coltest,ECmpCollated); + // if coltest=0 then Davids is the first item, + // the new collation table was used. + if (!coltest) + { + Pass(aTestHeader); + } + else + { + FailL(aTestHeader); + } + + CleanupStack::PopAndDestroy(2);//resourceReader,collation + } + + +void CNRLTestAppUi::TestFEPNamesL(const TDesC& aTestHeader) + { + WriteTestHeader(aTestHeader); + iNRLTestControl->PrintLineToScreen (_L("Fep Names are stored in resource files in the fep directory in system")); + iNRLTestControl->PrintLineToScreen (_L("Compiled new resources with the word Non-ROM added into a few test fep names")); + + RArray arrayOfResourceFiles; + CleanupStack::PushL(TCleanupItem(DestroyResourceFileArray, &arrayOfResourceFiles));//arrayOfResourceFiles + RFs& fileServerSession=iCoeEnv->FsSession(); + TInt numberofsession=fileServerSession.ResourceCount(); + TInt i; + TParse* parser=new(ELeave) TParse; + CleanupStack::PushL(parser);//parser + TFileName* fileName=new(ELeave) TFileName; + CleanupStack::PushL(fileName);//fileName + + + RArray uidsOfAvailableFeps; + CleanupClosePushL(uidsOfAvailableFeps); + CDesCArray* fileNamesOfAvailableFeps = new(ELeave) CDesCArrayFlat(EGranularity); + CleanupDeletePushL(fileNamesOfAvailableFeps);//fileNamesOfAvailableFeps + iCoeEnv->AvailableFepsL(uidsOfAvailableFeps,fileNamesOfAvailableFeps);//it is allocated some memory here!!! + + + + for (i=fileNamesOfAvailableFeps->MdcaCount()-1; i>=0; --i) + { + const TPtrC fullFileNameOfDll(fileNamesOfAvailableFeps->MdcaPoint(i)); + *fileName=TParsePtrC(fullFileNameOfDll).Name(); + fileName->Append(KLitResourceFileNameAppendage); + User::LeaveIfError(parser->SetNoWild(*fileName, &fullFileNameOfDll, NULL)); + CBaNamedPlugins::TResourceFile resourceFile; + resourceFile.iFullFileName=parser->FullName().AllocLC(); + resourceFile.iIdentifier=fullFileNameOfDll.AllocLC(); + resourceFile.iUid=uidsOfAvailableFeps[i]; + resourceFile.iFormat=CBaNamedPlugins::TResourceFile::EFormatTbuf; + User::LeaveIfError(arrayOfResourceFiles.Append(resourceFile)); + CleanupStack::Pop(2, resourceFile.iFullFileName);//iFullFileName,iIdentifier + } + CleanupStack::PopAndDestroy(4, parser);//parser,fileName,uidsOfAvailableFeps,fileNamesOfAvailableFeps + + CBaNamedPlugins::CParameters* parameters=CBaNamedPlugins::CParameters::NewLC(fileServerSession, arrayOfResourceFiles.Array()); + parameters->SetFallBackName(*this); + CBaNamedPlugins* namedPlugins=CBaNamedPlugins::NewL(*parameters);//numberofsession increased after this + numberofsession=fileServerSession.ResourceCount(); + const TInt numberOfAvailableFeps=namedPlugins->MdcaCount(); + TInt testResult; + testResult=0; + for (i=0; iMdcaPoint(i); + RDebug::Print(fepNames); + TInt findNonROM; + findNonROM=fepNames.Find(KNonROM); + if (findNonROM!=KErrNotFound) + { + iNRLTestControl->PrintLineToScreen(fepNames); + testResult =1; + } + } + if (testResult) + { + Pass(aTestHeader); + } + else + { + FailL(aTestHeader); + } + delete namedPlugins; + CleanupStack::PopAndDestroy(2, &arrayOfResourceFiles);//arrayOfResourceFiles,parameters + } + +HBufC* CNRLTestAppUi::FallBackNameL(const TDesC& aFullResourceFileName) const + { + const TPtrC nameAndExtension(TParsePtrC(aFullResourceFileName).NameAndExt()); + __ASSERT_DEBUG(nameAndExtension.Right(KLitResourceFileNameAppendage().Length())==KLitResourceFileNameAppendage, User::Panic(KPanicText,-1)); + return nameAndExtension.Left(nameAndExtension.Length()-KLitResourceFileNameAppendage().Length()).AllocL(); + } + +void CNRLTestAppUi::TestDisplayMessagingL(const TDesC& aTestHeader) + { + WriteTestHeader(aTestHeader); + iNRLTestControl->PrintLineToScreen (_L("MTM are stored in resource files in the MTM directory in System")); + iNRLTestControl->PrintLineToScreen (_L("Compiled new resources with the word Non-ROM added into the MTM resources")); + + TDummyObserver obs; + CMsvSession *session=CMsvSession::OpenSyncL(obs); + CleanupStack::PushL(session); + CClientMtmRegistry *reg=CClientMtmRegistry::NewL(*session); + CleanupStack::PushL(reg); + TInt count=reg->NumRegisteredMtmDlls(); + + TInt testResult; + testResult=0; + while(count--) + { + const CMtmDllInfo& info=reg->RegisteredMtmDllInfo(reg->MtmTypeUid(count)); + TPtrC mtmNames = info.HumanReadableName(); + TInt findNonROM; + findNonROM=mtmNames.Find(KNonROM); + if (findNonROM!=KErrNotFound) + { + iNRLTestControl->PrintLineToScreen (mtmNames); + testResult =1; + } + + } + + CleanupStack::PopAndDestroy(reg); + + CMsvEntry *entry=session->GetEntryL(KMsvRootIndexEntryId); + CleanupStack::PushL(entry); + + entry->SetEntryL(KMsvDraftEntryId); + iNRLTestControl->PrintLineToScreen (entry->Entry().iDetails); + + + entry->SetEntryL(KMsvGlobalInBoxIndexEntryId); + iNRLTestControl->PrintLineToScreen (entry->Entry().iDetails); + + entry->SetEntryL(KMsvGlobalOutBoxIndexEntryId); + iNRLTestControl->PrintLineToScreen (entry->Entry().iDetails); + + entry->SetEntryL(KMsvSentEntryId); + iNRLTestControl->PrintLineToScreen (entry->Entry().iDetails); + + CleanupStack::PopAndDestroy(entry); + CleanupStack::PopAndDestroy(session); + + if (testResult) + { + Pass(aTestHeader); + } + else + { + FailL(aTestHeader); + } + } + + + +void CNRLTestAppUi::TestBIFL (const TDesC& aTestHeader) + { + WriteTestHeader(aTestHeader); + iNRLTestControl->PrintLineToScreen(_L("BIF files are now stored as resources in System\\BIf directory")); + iNRLTestControl->PrintLineToScreen(_L("Compiled new BIF resources with the phrase Non-ROM added ... ")); + + RFs& gFs=iCoeEnv->FsSession(); + + iNRLTestControl->PrintLineToScreen(_L("Opening & Searching DB")); + + CBIODatabase* bioDB = CBIODatabase::NewL(gFs); + CleanupStack::PushL( bioDB ); + iNRLTestControl->PrintLineToScreen(_L("Opened DB Successfully!")); + + TInt testResult; + testResult=0; + for (TInt i=0; i < bioDB->BIOCount(); i++) + { + const CBioInfoFileReader& bifReader = bioDB->BifReader(i); + + TPtrC desc; + desc.Set(bifReader.Description()); + TInt findNonROM; + findNonROM=desc.Find((KNonROM)); + if (findNonROM!=KErrNotFound) + { + iNRLTestControl->PrintLineToScreen(desc); + testResult =1; + } + } + + if (testResult) + { + Pass(aTestHeader); + } + else + { + FailL(aTestHeader); + } + CleanupStack::PopAndDestroy(); // bioDB + + } + +void CNRLTestAppUi::TestPrinterNameL (const TDesC& aTestHeader) + { + + WriteTestHeader(aTestHeader); + + CDesCArray* list=new(ELeave) CDesCArrayFlat(EGranularity); + CleanupStack::PushL(list); + + CPrintSetup* aPrintSetup = CPrintSetup::NewL(); + CleanupStack::PushL(aPrintSetup); + aPrintSetup->AddPrinterDriverDirL( KDefaultPrinterDriverPath ); + RFs& filesession = iCoeEnv->FsSession(); + CPrinterModelList* aModelList; + aModelList = aPrintSetup->ModelNameListL(filesession); + CEikonEnv::GetPrinterNamesL(aModelList,*list); + + aPrintSetup->FreeModelList(); + + TInt foundNonRomResource=0; + + for (TInt i=0; i < list->Count(); ++i) + { + TPtrC desc; + desc.Set((*list)[i]); + TInt findNonROM; + findNonROM = desc.Find((KNonROM)); + if (findNonROM!=KErrNotFound) + { + iNRLTestControl->PrintLineToScreen (desc); + foundNonRomResource=1; + } + } + if (foundNonRomResource) + Pass(aTestHeader); + else + FailL(aTestHeader); + + + CleanupStack::PopAndDestroy(2); // list, aPrintSetup, aModelList + + } + +void CNRLTestAppUi::TestLocalisableBitmapL(const TDesC& aTestHeader) + { + WriteTestHeader(aTestHeader); + + TFileName filename(KOriginalBitmapPath); + CWsBitmap* aBitmap; + aBitmap=iEikonEnv->CreateBitmapL(filename,1); + TBool nonROM; + nonROM=aBitmap->IsRomBitmap(); + if(nonROM) + { + FailL(aTestHeader); + } + else + { + iNRLTestControl->PrintLineToScreen(_L("Right, the bitmap loaded should not be in ROM")); + Pass(aTestHeader); + } + + delete aBitmap; + } + + +void CNRLTestAppUi::Pass(const TDesC& aTestHeader) + { + iNRLTestControl->PrintToScreen(KNewLine); + iNRLTestControl->PrintLineToScreen(KTestAnnouncer); + iNRLTestControl->PrintLineToScreen(_L("Expected new %S loaded"),&aTestHeader); + iNRLTestControl->PrintLineToScreen(KTestAnnouncer); + } + +void CNRLTestAppUi::FailL(const TDesC& aTestHeader) + { + iNRLTestControl->PrintToScreen(KNewLine); + iNRLTestControl->PrintLineToScreen(KTestAnnouncer); + iNRLTestControl->PrintLineToScreen(_L("Unexpected old %S loaded"),&aTestHeader); + iNRLTestControl->PrintLineToScreen(KTestAnnouncer); + iFailedTests->AppendL(aTestHeader); + + } + +void CNRLTestAppUi::ReportEndResult() const + { + TInt failedTestsCount = iFailedTests->Count(); + if (failedTestsCount) + { + // Print a list of the Tests Failed + iNRLTestControl->PrintLineToScreen(_L("The following tests failed\n")); + for (TInt i=0; iPrintLineToScreen ((*iFailedTests)[i]); + } + } + else + { + // No Tests Failed, say that new resources were loaded where expected to + } + } + + +// +// --------------------- CNRLTestAppDoc class Definition ------------ +// + +class CNRLTestAppDoc : public CEikDocument + { +public: + CNRLTestAppDoc(CEikApplication& aApp); +private: + CEikAppUi* CreateAppUiL(); + }; + + +CNRLTestAppDoc::CNRLTestAppDoc(CEikApplication& aApp):CEikDocument(aApp) + { + // Nothing else to do, just call the base class constructor + // + } + +CEikAppUi* CNRLTestAppDoc::CreateAppUiL() + { + return new (ELeave) CNRLTestAppUi; + } +// +// ------------------------------ CNRLTestApp ----------------------- +// + + +const TUid KTestNRLid = {0x1000AC5D}; + +class CNRLTestApp : public CEikApplication + { +private: + CApaDocument* CreateDocumentL(); + TUid AppDllUid() const; + + }; + +TUid CNRLTestApp::AppDllUid() const + { + return KTestNRLid; + } + +CApaDocument* CNRLTestApp::CreateDocumentL() + { + return new (ELeave) CNRLTestAppDoc(*this); + } + +//////////////////////////////////////////////////////////////////////////////////////////// +// + + static CApaApplication* NewApplication() + { + return new CNRLTestApp; + } + + TInt E32Main() + { + return EikStart::RunApplication(&NewApplication); + } + +