--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/localisation/localesupport/TestNrl/TestNrl.cpp Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,862 @@
+// 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 the License "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 <e32base.h>
+#include <msvapi.h>
+#include <msvids.h>
+#include <mtclreg.h>
+#include <eikstart.h>
+
+#include <basched.h>
+#include <banamedplugins.h>
+#include <bautils.h>
+#include <coecntrl.h>
+#include <coeccntx.h>
+#include <coemain.h>
+#include <charconv.h>
+#include <convnames.h>
+#include <e32keys.h>
+#include <techview\eikon.hrh>
+#include <eikappui.h>
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <eikenv.h>
+#include <techview\eikrted.h>
+#include <techview\eikedwin.h>
+#include <eikdef.h>
+#include <techview\eikdialg.h>
+#include <techview\eikdlgtb.h>
+#include <techview\eikrted.h>
+#include <techview\eiksbfrm.h>
+#include <techview\eikconso.h>
+#include <txtrich.h>
+#include <hal.h>
+#include <fbs.h>
+#include "TestNrl.hrh"
+#include <testnrl.rsg>
+#include <techview\eikon.rsg>
+#include <prnsetup.h>
+
+#include <biodb.h>
+#include <biouids.h>
+#include <gdi.h>
+
+// 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<const TDesC> aFmt,...);
+ void PrintLineToScreen (TRefByValue<const TDesC> 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<const TDesC> aFmt,...)
+ {
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TBuf<128> buf;
+ buf.FormatList(aFmt,list);
+ iConsole->Write(buf);
+ }
+
+void CNRLTestControl::PrintLineToScreen(TRefByValue<const TDesC> 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<CBaNamedPlugins::TResourceFile>& arrayOfResourceFiles=*STATIC_CAST(RArray<CBaNamedPlugins::TResourceFile>*, 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; i<iFailedTests->Count();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;i<n;i++)
+ collation->AppendL(resourceReader.ReadTPtrC());
+
+ for (TInt j=0;j<n;j++)
+ {
+ iNRLTestControl->PrintLineToScreen((*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<CCnvCharacterSetConverter::SCharacterSet>* 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;i<n;i++)
+ collation->AppendL(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;j<n;j++)
+ {
+ iNRLTestControl->PrintLineToScreen((*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<CBaNamedPlugins::TResourceFile> 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<TUid> 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; i<numberOfAvailableFeps; ++i)
+ {
+ TPtrC fepNames = namedPlugins->MdcaPoint(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; i<failedTestsCount; ++i)
+ {
+ iNRLTestControl->PrintLineToScreen ((*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);
+ }
+
+