diff -r e8c1ea2c6496 -r 8758140453c0 localisation/apparchitecture/tef/tssaac/tssaac_tapp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localisation/apparchitecture/tef/tssaac/tssaac_tapp.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,311 @@ +// Copyright (c) 2007-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 "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This is a Startup State Aware (SSA) test application used to +// test apparc StartApp and StartDocument functionality. +// +// + + + +/** + @file + @test + @internalComponent Internal Symbian test code +*/ + + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include "tssaac.h" +#include +#include "appfwk_test_AppUi.h" +#include "tstapp.h" + + + +//////////////////////////////////////////////////////////////////////// +// +// CExampleAppView +// +//////////////////////////////////////////////////////////////////////// +class CExampleAppView : public CCoeControl + { +public: + static CExampleAppView* NewL(const TRect& aRect); + CExampleAppView(); + ~CExampleAppView(); + void ConstructL(const TRect& aRect); +private: + void Draw(const TRect& /*aRect*/) const; +private: + HBufC* iExampleText; + }; + +CExampleAppView::CExampleAppView() + { + } + +CExampleAppView* CExampleAppView::NewL(const TRect& aRect) + { + CExampleAppView* self = new(ELeave) CExampleAppView(); + CleanupStack::PushL(self); + self->ConstructL(aRect); + CleanupStack::Pop(); + return self; + } + +CExampleAppView::~CExampleAppView() + { + delete iExampleText; + } + +void CExampleAppView::ConstructL(const TRect& aRect) + { + _LIT(KExampleText, "This is a Startup State Aware (SSA) test application"); + TPtrC ptr(KExampleText); + iExampleText = ptr.AllocL(); + CreateWindowL(); + SetRect(aRect); + ActivateL(); + } + +void CExampleAppView::Draw(const TRect& /*aRect*/) const + { + CWindowGc& gc = SystemGc(); + TRect drawRect = Rect(); + const CFont* fontUsed; + + gc.Clear(); + fontUsed = iEikonEnv->TitleFont(); + gc.UseFont(fontUsed); + TInt baselineOffset=(drawRect.Height() - fontUsed->HeightInPixels())/2; + gc.DrawText(*iExampleText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0); + gc.DiscardFont(); + } + + +//////////////////////////////////////////////////////////////////////// +// +// CExampleAppUi +// +//////////////////////////////////////////////////////////////////////// +class CExampleAppUi : public CEikAppUi + { +public: + void ConstructL(); + ~CExampleAppUi(); +private: + void HandleCommandL(TInt aCommand); +private: + CCoeControl* iAppView; + }; + + +void CExampleAppUi::ConstructL() + { + BaseConstructL(); + iAppView = CExampleAppView::NewL(ClientRect()); + } + +CExampleAppUi::~CExampleAppUi() + { + delete iAppView; + } + +void CExampleAppUi::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EEikCmdExit: + Exit(); + break; + } + } + + + +//////////////////////////////////////////////////////////////////////// +// +// CExampleDocument +// +//////////////////////////////////////////////////////////////////////// +class CExampleDocument : public CEikDocument + { +public: + static CExampleDocument* NewL(CEikApplication& aApp); + CExampleDocument(CEikApplication& aApp); + void ConstructL(); +private: + CEikAppUi* CreateAppUiL(); + }; + +CExampleDocument::CExampleDocument(CEikApplication& aApp) + : CEikDocument(aApp) + { + } + +CEikAppUi* CExampleDocument::CreateAppUiL() + { + return new(ELeave) CExampleAppUi; + } + + +//////////////////////////////////////////////////////////////////////// +// +// CSysatartApparc +// +//////////////////////////////////////////////////////////////////////// + +class CSysatartApparc : public CEikApplication + { +private: + // Inherited from class CApaApplication + CApaDocument* CreateDocumentL(); + void WriteResultFileL(); + TUid AppDllUid() const; + //Test functions and variables + CApaDocument* CreateDocumentL(CApaProcess* aApaProcess); +private: + TInt iLocalizedCaptionLRes1; + TInt iLocalizedCaptionLRes2; + }; + +const TUid KUidSSAACTestApp = { 0x10207F7A }; + +TUid CSysatartApparc::AppDllUid() const + { + return KUidSSAACTestApp; + } + +/** + @SYMTestCaseID APPFWK-APPARC-0029 + + @SYMPREQ PREQ967 + + @SYMREQ REQ3889 + + @SYMTestCaseDesc Test the functionality of EnsureCaptionIsLocalisedL() + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions Call CEikApplication::CreateDocumentL() with a local resource file argument + When Application specified exists. + + API Calls:\n + CEikApplication::EnsureCaptionIsLocalisedL(TDesC&) + + @SYMTestExpectedResults (1) AppCaption() returns "tssaac_tapp" + (2) AppCaption() returns "NewCaption" + +*/ +CApaDocument* CSysatartApparc::CreateDocumentL(CApaProcess* aApaProcess) + { + _LIT(KPath, "z:\\resource\\apps\\tssaac_tapp_loc.rsc"); + _LIT(KCurrentCaption, "tssaac_tapp"); + _LIT(KNewCaption, "NewCaption"); + + //(1) Fetch the existing name of the exe (tssaac_tapp) + TApaAppCaption caption = AppCaption(); + + iLocalizedCaptionLRes1 = caption.Compare(KCurrentCaption); + RDebug::Print(_L("Expected existing caption: '%S' Actual caption: '%S'"), &KCurrentCaption, &caption); + + //Assign a new name to the exe from the local resource file + CEikApplication::EnsureCaptionIsLocalisedL(KPath); + + //(2) Fetch the new name of the exe (NewCaption) + caption = AppCaption(); + + //Assign the result to the member variable + iLocalizedCaptionLRes2 = caption.Compare(KNewCaption); + RDebug::Print(_L("Expected new caption: '%S' Actual caption: '%S'"), &KNewCaption, &caption); + + WriteResultFileL(); + + // Completes all Rendezvous' with the current process in order to notify sysstart and continue + // launching the next process in the SSC list (this app is launched with EWaitForStart) + RProcess::Rendezvous(KErrNone); + + return CEikApplication::CreateDocumentL(aApaProcess); + } + + +CApaDocument* CSysatartApparc::CreateDocumentL() + { + return new (ELeave) CExampleDocument(*this); + } + + +LOCAL_C CApaApplication* NewApplication() + { + return new CSysatartApparc; + } + + +GLDEF_C TInt E32Main() + { + return EikStart::RunApplication(NewApplication); + } + +/** + Write the results to the result file, to be later extracted by + testexecute test case. + These contain the results of the test. The order in + which these results are written in MUST match the order in which + they are read and tested in CSysStartApparcTestStep::GetApparcResultsL() + and the expected result tested in CSysStartApparcTestStep::Testxxx must + match that in the test specification\n + + The format is: + LocalisedCaptionRes1 result=value1 Pass = 0 Fail = non-zero + LocalisedCaptionRes2 result=value2 Pass = 0 Fail = non-zero + + '=' is used as the deliminator. +*/ +void CSysatartApparc::WriteResultFileL() + { + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + + RFileWriteStream writer; + User::LeaveIfError(writer.Replace(fs, KSsaacResultFile, EFileWrite)); + CleanupClosePushL(writer); + + // write data to file + writer << _L("LocalizedCaptionRes1 count="); + writer.WriteInt16L(iLocalizedCaptionLRes1); + writer << _L("\n"); + writer << _L("LocalizedCaptionRes2 count="); + writer.WriteInt16L(iLocalizedCaptionLRes2); + writer << _L("\n"); + writer.CommitL(); + + CleanupStack::PopAndDestroy(2, &fs); + }