loc_pub/landmarks_ui_addedit_api/tsrc/src/UTapplmkaddeditblocks.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:27 +0100
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002 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:    LandmarkUi Content File
*
*/








// [INCLUDE FILES] - do not remove
#include <e32svr.h>
#include <StifParser.h>
#include <Stiftestinterface.h>
#include "UTAppLmkAddEdit.h"

#include <CLmkEditorDlg.h>
#include <Epos_CPosLandmarkDatabase.h>
#include <Epos_Landmarks.h>
#include <coecntrl.h>
#include <lbsposition.h>
#include "UTAppLmkEditorEngine.h"

// EXTERNAL DATA STRUCTURES
//extern  ?external_data;

// EXTERNAL FUNCTION PROTOTYPES
//extern ?external_function( ?arg_type,?arg_type );

// CONSTANTS
//const ?type ?constant_var = ?constant;

// MACROS
//#define ?macro ?macro_def

// LOCAL CONSTANTS AND MACROS
//const ?type ?constant_var = ?constant;
//#define ?macro_name ?macro_def

// MODULE DATA STRUCTURES
//enum ?declaration
//typedef ?declaration

// LOCAL FUNCTION PROTOTYPES
//?type ?function_name( ?arg_type, ?arg_type );

// FORWARD DECLARATIONS
//class ?FORWARD_CLASSNAME;

// ============================= LOCAL FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// ?function_name ?description.
// ?description
// Returns: ?value_1: ?description
//          ?value_n: ?description_line1
//                    ?description_line2
// -----------------------------------------------------------------------------
//
/*
?type ?function_name(
    ?arg_type arg,  // ?description
    ?arg_type arg)  // ?description
    {

    ?code  // ?comment

    // ?comment
    ?code
    }
*/

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::Delete
// Delete here all resources allocated and opened from test methods.
// Called from destructor.
// -----------------------------------------------------------------------------
//
void CUTAppLmkAddEdit::Delete()
    {

    }

// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::RunMethodL
// Run specified method. Contains also table of test mothods and their names.
// -----------------------------------------------------------------------------
//
TInt CUTAppLmkAddEdit::RunMethodL(
    CStifItemParser& aItem )
    {

    static TStifFunctionInfo const KFunctions[] =
        {
        // Copy this line for every implemented function.
        // First string is the function name used in TestScripter script file.
        // Second is the actual implementation member function.
		ENTRY( "Example", CUTAppLmkAddEdit::ExampleL ),
		ENTRY( "TestNewL", CUTAppLmkAddEdit::TestNewL ),
		ENTRY( "TestNew2L", CUTAppLmkAddEdit::TestNew2L ),
		ENTRY( "TestExecuteLD", CUTAppLmkAddEdit::TestExecuteLD ),
		ENTRY( "TestSetMopParent", CUTAppLmkAddEdit::TestSetMopParentL ),
		ENTRY( "TestSetHelpContext", CUTAppLmkAddEdit::TestSetHelpContextL ),
		ENTRY( "TestDisableMapAndNaviOptions", CUTAppLmkAddEdit::TestDisableMapAndNaviOptionsL ),
        //ADD NEW ENTRY HERE
        // [test cases entries] - Do not remove

        };

    const TInt count = sizeof( KFunctions ) /
                        sizeof( TStifFunctionInfo );

    return RunInternalL( KFunctions, count, aItem );

    }

// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::ExampleL
// Example test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CUTAppLmkAddEdit::ExampleL( CStifItemParser& aItem )
    {

    // Print to UI
    _LIT( KUTAppLmkAddEdit, "UTAppLmkAddEdit" );
    _LIT( KExample, "In Example" );
    TestModuleIf().Printf( 0, KUTAppLmkAddEdit, KExample );
    // Print to log file
    iLog->Log( KExample );

    TInt i = 0;
    TPtrC string;
    _LIT( KParam, "Param[%i]: %S" );
    while ( aItem.GetNextString ( string ) == KErrNone )
        {
        TestModuleIf().Printf( i, KUTAppLmkAddEdit,
                                KParam, i, &string );
        i++;
        }

    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::TestNewL
// This function tests NewL based on landmark id, which exist in the database
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CUTAppLmkAddEdit::TestNewL( CStifItemParser& aItem )
	{
	TInt result = KErrNone;

	CPosLandmarkDatabase* ilDb = CPosLandmarkDatabase::OpenL();
	CPosLmOperation* operation = NULL;
	
	if( ilDb->IsInitializingNeeded() )
		{
		operation = ilDb->InitializeL();
		operation->ExecuteL();
		}
	
	CLmkEditorDlg::TLmkEditorParams editParams;
	editParams.iAttributes = CLmkEditorDlg::ELmkAll;
	editParams.iEditorMode = CLmkEditorDlg::ELmkEditor;
	
	CPosLandmark* LmkEditor = CPosLandmark::NewL();
	CleanupStack::PushL( LmkEditor );
	TInt aCase = 0;
	CLmkEditorDlg* editDlg= NULL;	
	aItem.GetNextInt(aCase);
	
	switch(aCase)
		{
		default:
		case DEFAULT:
			TRAPD(error, editDlg = CLmkEditorDlg::NewL(*ilDb,*LmkEditor,editParams));
			if(error != KErrNone||!(editDlg))
				{
				result = KErrGeneral;
				iLog->Log(_L("FAILED: NewL returns %d"), error);
				}
			else
				{
				iLog->Log(_L("PASSED: NewL returns expected results"));
				}
			CleanupStack::PushL( editDlg );
			CleanupStack::PopAndDestroy(2);
			break;
			
		case NULL_DB:
			delete ilDb;
			ilDb = NULL;
			TRAPD(error1, editDlg = CLmkEditorDlg::NewL(*ilDb,*LmkEditor,editParams));
			if(error1 != KErrNone||!(editDlg))
				{
				result = KErrGeneral;
				iLog->Log(_L("FAILED: NewL returns %d"), error1);
				}
			else
				{
				iLog->Log(_L("PASSED: NewL returns expected results"));
				}
			CleanupStack::PushL( editDlg );
			CleanupStack::PopAndDestroy(2);
			break;
		
		case NON_EXISTING_LM:
			TRAPD(error2, editDlg = CLmkEditorDlg::NewL(*ilDb,NULL,editParams));
			if(error2 != KErrNotFound)
				{
				result = KErrGeneral;
				iLog->Log(_L("FAILED: NewL returns %d"), error2);
				}
			else
				{
				iLog->Log(_L("PASSED: NewL returns expected results"));
				}					
			CleanupStack::PopAndDestroy();
			break;
		}

	//ReleaseLandmarkResources();
	
	if(ilDb)
		{
		delete ilDb; 
		ilDb=NULL;
		}
	if(operation)
		{
		delete operation;
		operation=NULL;
		}
	return result;
	}
// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::TestNew2L
// This function tests NewL based on the landmark object which does not exist
// the database
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CUTAppLmkAddEdit::TestNew2L( CStifItemParser& /*aItem*/ )
	{
	//Create an empty landmark object
	CPosLandmark* lmk = CPosLandmark::NewL();
	CleanupStack::PushL(lmk);
	//Specify the various fields for landmark
	TLocality locality;
	locality.SetAccuracy(32.2,32.4);
	locality.SetCoordinate(56,25);
	locality.SetHorizontalAccuracy(33.1);
	locality.SetVerticalAccuracy(24.2);
	lmk->SetLandmarkNameL(_L("Forum Mall"));
	lmk->SetLandmarkDescriptionL(_L("Shopping Complex"));
	//Populate the landmark with the specified field information
	lmk->SetPositionL(locality);
	//lmk->SetLandmarkIdL( 1 );
	
	CPosLandmarkDatabase* ilDb = CPosLandmarkDatabase::OpenL();
	//CleanupStack::PushL(ilDb);
	 ilDb->AddLandmarkL(*lmk);
	CPosLmOperation* operation = NULL;
	if ( ilDb->IsInitializingNeeded() )
		{
		operation = ilDb->InitializeL();
		operation->ExecuteL();
		}
	
	CLmkEditorDlg::TLmkEditorParams editParams;
	editParams.iAttributes = CLmkEditorDlg::ELmkOnlyName;
	editParams.iEditorMode = CLmkEditorDlg::ELmkViewer;
	TPosLmItemId lmItem = lmk->LandmarkId();
	CLmkEditorDlg* editDlg = CLmkEditorDlg::NewL(*ilDb,lmItem,editParams);
	CleanupStack::PushL( editDlg );
	
	//ReleaseLandmarkResources();
	CleanupStack::PopAndDestroy(2); //ilDb, lmk
	//delete ilDb; ilDb=NULL;
	delete operation; operation=NULL;
	return KErrNone;
	}

// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::TestExecuteLD
// This function tests the launching of the dialog
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CUTAppLmkAddEdit::TestExecuteLD( CStifItemParser& aItem )
	{
	TInt result = KErrNone;
	TPosLmItemId lmItem = 0;
	TInt aCase = 0;

	CPosLandmarkDatabase* ilDb = CPosLandmarkDatabase::OpenL();
	CPosLmOperation* operation = NULL;

	if ( ilDb->IsInitializingNeeded() )
	{
		operation = ilDb->InitializeL();
		operation->ExecuteL();
	}


	CPosLandmark* landmark = CPosLandmark::NewL();
	CleanupStack::PushL( landmark );
	
	CLmkEditorDlg::TLmkEditorParams editParams;	
	aItem.GetNextInt(aCase);
	switch(aCase)
		{
		default:
		case 0:
			editParams.iAttributes = CLmkEditorDlg::ELmkAll;
			editParams.iEditorMode = CLmkEditorDlg::ELmkEditor;
			break;
			
		case 1:
			editParams.iAttributes = CLmkEditorDlg::ELmkAll;
			editParams.iEditorMode = CLmkEditorDlg::ELmkViewer;
			break;	
		}
	CLmkEditorDlg* editDlg = CLmkEditorDlg::NewL(*ilDb,*landmark,editParams);
	CleanupStack::PushL( editDlg );

	aItem.GetNextInt(aCase);

	switch(aCase)
		{
		default:
		case EDIT_MODE://Edit mode
			TRAPD(error, result=editDlg->ExecuteLD());
			if(error != 0 )
				{
				iLog->Log(_L("FAILED: ExecuteLD returns %d in Edit mode"), error);
				result = KErrGeneral;
				}
			else
				{
				iLog->Log(_L("PASSED: ExecuteLD returns %d in Edit mode"), result);
				result = KErrNone;
				}
			break;
			
		case VIEW_MODE: //ViewMode
			TRAPD(error1, result=editDlg->ExecuteLD());
			if(error1 != 0)
				{
				iLog->Log(_L("FAILED: ExecuteLD returns %d in View mode"), error1);	
				result = KErrGeneral;
				}
			else
				result = KErrNone;				
			break;
			
		case 2:
//			TestModuleIf().SetExitReason(CTestModuleIf::EPanic ,47);
//			DrainMemory();
//			TRAPD(error2, result=editDlg->ExecuteLD());
//			RestoreMemory();
//			if(result != 0)
//				iLog->Log(_L("FAILED: ExecuteLD returns %d in Edit mode under low memory condition"), result);
			break;				
		}
	
	//ReleaseLandmarkResources();
	CleanupStack::Pop(2);
		
	if(ilDb)
		{ 
		delete ilDb; 
		ilDb=NULL;
		}
	if(operation)
		{
		delete operation;
		operation=NULL;
		}
	return result;
	}
// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::TestSetMopParent
// This function tests setting up of the context
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//

 TInt CUTAppLmkAddEdit::TestSetMopParentL( CStifItemParser& /*aItem*/ )
  {
  	CPosLandmarkDatabase* ilDb = CPosLandmarkDatabase::OpenL();
	CPosLmOperation* operation = NULL;
	if ( ilDb->IsInitializingNeeded() )
		{
		operation = ilDb->InitializeL();
		operation->ExecuteL();
		}

	CPosLandmark* landmark = CPosLandmark::NewL();
	CleanupStack::PushL( landmark );

	CLmkEditorDlg::TLmkEditorParams editParams;
	editParams.iAttributes = CLmkEditorDlg::ELmkAll;
	editParams.iEditorMode = CLmkEditorDlg::ELmkEditor;

	engine = new (ELeave) CLmkAddEditEngine;

	CLmkEditorDlg* editDlg = CLmkEditorDlg::NewL(*ilDb,*landmark,editParams);
	CleanupStack::PushL( editDlg );
	
	TRAPD(result,editDlg->SetMopParent(engine));

	//ReleaseLandmarkResources();
	CleanupStack::Pop(2);

	delete ilDb; ilDb=NULL;
	delete operation; 
	operation=NULL;
	
	return KErrNone;
  }
 // -----------------------------------------------------------------------------
 // CUTAppLmkAddEdit::TestSetHelpContext
 // This function tests setting up of the help context
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
 TInt CUTAppLmkAddEdit::TestSetHelpContextL( CStifItemParser& /*aItem*/ )
 {
	CPosLandmarkDatabase* ilDb = CPosLandmarkDatabase::OpenL();
	CPosLmOperation* operation = NULL;
	if ( ilDb->IsInitializingNeeded() )
		{
		operation = ilDb->InitializeL();
		operation->ExecuteL();
		}
	
	CPosLandmark* landmark = CPosLandmark::NewL();
	CleanupStack::PushL( landmark );
	
	CLmkEditorDlg::TLmkEditorParams editParams;
	editParams.iAttributes = CLmkEditorDlg::ELmkAll;
	editParams.iEditorMode = CLmkEditorDlg::ELmkEditor;
	
	TCoeHelpContext aContext;
	CLmkEditorDlg* editDlg = CLmkEditorDlg::NewL(*ilDb,*landmark,editParams);
	CleanupStack::PushL( editDlg );
	
	editDlg->SetHelpContext(aContext);
	
	//ReleaseLandmarkResources();
	CleanupStack::PopAndDestroy(2);
	
	delete ilDb; ilDb=NULL;
	delete operation; operation=NULL;
	return KErrNone;
 }
 // -----------------------------------------------------------------------------
 // CUTAppLmkAddEdit::TestDisableMapAndNaviOptions
 // This function tests disabling the Map and Navigation related Menu Options
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
 TInt CUTAppLmkAddEdit::TestDisableMapAndNaviOptionsL( CStifItemParser& /*aItem*/ )
 {
	// #ifdef __SERIES60_31__
	CPosLandmarkDatabase* ilDb = CPosLandmarkDatabase::OpenL();
	CPosLmOperation* operation = NULL;
	if ( ilDb->IsInitializingNeeded() )
		{
		operation = ilDb->InitializeL();
		operation->ExecuteL();
		}
	
	CPosLandmark* landmark = CPosLandmark::NewL();
	CleanupStack::PushL( landmark );
	
	CLmkEditorDlg::TLmkEditorParams editParams;
	editParams.iAttributes = CLmkEditorDlg::ELmkAll;
	editParams.iEditorMode = CLmkEditorDlg::ELmkEditor;
	
	CLmkEditorDlg* editDlg = CLmkEditorDlg::NewL(*ilDb,*landmark,editParams);
	editDlg->DisableMapAndNavigationMenuOptions();
	TRAP_IGNORE(editDlg->ExecuteLD());
	CleanupStack::PopAndDestroy();
	//ReleaseLandmarkResources();
	delete ilDb;
	delete operation;
	//	#endif
	return KErrNone;
 }


// -----------------------------------------------------------------------------
// CUTAppLmkAddEdit::?member_function
// ?implementation_description
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
/*
TInt CUTAppLmkAddEdit::?member_function(
   CItemParser& aItem )
   {

   ?code

   }
*/
 // -----------------------------------------------------------------------------
 // CCSatelliteUITest::DrainMemory
 // Eats the memory
 // -----------------------------------------------------------------------------
 //
 void CUTAppLmkAddEdit::DrainMemory()
 	{
     for( TInt i = 0; i < MAX_EXPONENT1; i++ )
     {
         cells[i] = NULL;
     }
     // consume all available heap memory
     TInt j=0;
    	for (TInt i = KMaxTInt/2-1; i > 0; )
 	{
 		cells[j] = User::Alloc(i);
 		if( !( cells[j] ) )
 		{
 		    i/=2;
 		}
 		else
 		{
 		    j++;
 		}
 	}
 	}
 // -----------------------------------------------------------------------------
 // CCSatelliteUITest::RestoreMemory
 // Restores the memory
 // -----------------------------------------------------------------------------
 //
 void CUTAppLmkAddEdit::RestoreMemory()
 	{
  	for ( TInt cellIndex = 0; cellIndex < MAX_EXPONENT1; cellIndex++ )
 		{
 			 if ( cells[cellIndex] )
 				{
 				   User::Free( cells[cellIndex] );
 			   }
 		 }
 	}
 // -----------------------------------------------------------------------------

// ========================== OTHER EXPORTED FUNCTIONS =========================
// None

//  [End of File] - Do not remove