LbsApi/src/noserverstep.cpp
author Maciej Seroka <maciejs@symbian.org>
Wed, 28 Jul 2010 13:24:28 +0100
branchSymbian3
changeset 54 a4835904093b
permissions -rw-r--r--
Added new LbsApi smoke test

// Copyright (c) 2005-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:
// Example CTestStep derived implementation
// 
//

/**
 @file NoServerStep.cpp
 @internalTechnology
*/
#include "noserverstep.h"
#include "te_lbsapisuitedefs.h"

#include "lcfsbucommondefinitions.h"

#include <lbs.h>
#include <lbssatellite.h>
#include <e32math.h>
#include <s32mem.h>
#include <bautils.h>

CNoServerStep::~CNoServerStep()
/**
 * Destructor
 */
	{
	}

CNoServerStep::CNoServerStep()
/**
 * Constructor
 */
	{
	// **MUST** call SetTestStepName in the constructor as the controlling
	// framework uses the test step name immediately following construction to set
	// up the step's unique logging ID.
	SetTestStepName(KNoServerStep);
	}

TVerdict CNoServerStep::doTestStepPreambleL()
/**
 * @return - TVerdict code
 * Override of base class virtual
 */
	{
	 CTe_LbsApiSuiteStepBase::doTestStepPreambleL();
	 if (TestStepResult()!=EPass)
	    return   TestStepResult();
	// process some pre setting to this test step then set SetTestStepResult to EFail or Epass.
	SetTestStepResult(EPass);
	return TestStepResult();
	}


TVerdict CNoServerStep::doTestStepL()
/**
 * @return - TVerdict code
 * Override of base class pure virtual
 * Our implementation only gets called if the base class doTestStepPreambleL() did
 * not leave. That being the case, the current test result value will be EPass.
 */
	{
	  if (TestStepResult()==EPass)
		{
		TInt test;
		if(!GetIntFromConfig(ConfigSection(),KTe_LbsApiSuiteInt,test)
			)
			{
			// Leave if there's any error.
			User::Leave(KErrNotFound);
			}
		SetTestStepResult(EPass);
		StartL(test);
		}
	  return TestStepResult();
	}



TVerdict CNoServerStep::doTestStepPostambleL()
/**
 * @return - TVerdict code
 * Override of base class virtual
 */
	{
	// process something post setting to the test step
	// uncomment the following line if you have common post setting to all the test steps in there
	// CTe_LbsApiSuiteStepBase::doTestStepPostambleL();
	// uncomment the following line if you have post process or remove the following line if no post process
	// SetTestStepResult(EPass);		// or EFail
	return TestStepResult();
	}


void CNoServerStep::StartL (TInt aIndex)
	{
	switch (aIndex)
		{
	case 0:
		RPositionServer_NoConnectionL ();
		break;
	case 1:
		RPositionServer_NoL ();
		break;
	case 2:
		RPositioner_NoL ();
		break;
	default:
		break;
		}
	}

void CNoServerStep::CheckThereIsNoServerL()
    {
    DECLARE_ERROR_LOGGING;
    
    RPositionServer server;
    CleanupClosePushL(server);
    FAIL(server.Connect() == KErrNone, 
        "Location Server must be deleted to run this test case");
        
    CleanupStack::PopAndDestroy(&server);
    }


// 1.1.2 Connect but server doesn't start
// The test must be started when there is no server
// See LBSAPIACCTESTNOSVR.BAT for details
void CNoServerStep::RPositionServer_NoConnectionL()
	{
    DECLARE_ERROR_LOGGING;
    StandardPrepareL();
    CheckThereIsNoServerL();
    
    RPositionServer server;

    __UHEAP_MARK;
    CHECK( 0 == server.Handle() );
    CHECK( KErrNone != server.Connect() );
    CHECK( server.Handle() == 0 );
    __UHEAP_MARKEND;

    StandardCleanup();
	}

// x.x.x Connect and try to execute RPositionServer methods
// This should fail with panic

TInt No_Server_GetDefaultModuleId(TAny* /*aPtr*/)
    {
    RPositionServer server;
    TPositionModuleId moduleId = KPositionNullModuleId;
    server.GetDefaultModuleId(moduleId);
    return KErrGeneral;
    }


TInt No_Server_GetNumModules(TAny* /*aPtr*/)
    {
    RPositionServer server;
    TUint numModules;
    server.GetNumModules(numModules);
    return KErrGeneral;
    }


TInt No_Server_GetModuleInfoByIndex(TAny* /*aPtr*/)
    {
    RPositionServer server;
    TUint index = 0;
    TPositionModuleInfo info;
    server.GetModuleInfoByIndex(index, info);
    return KErrGeneral;
    }


TInt No_Server_GetModuleInfoById(TAny* /*aPtr*/)
    {
    RPositionServer server;
    TPositionModuleId moduleId = KPositionNullModuleId;
    TPositionModuleInfo info;
    server.GetModuleInfoById(moduleId, info);
    return KErrGeneral;
    }


TInt No_Server_GetModuleStatus(TAny* /*aPtr*/)
    {
    RPositionServer server;
    TPositionModuleStatus moduleStatus;
    TPositionModuleId moduleId = KPositionNullModuleId;
    server.GetModuleStatus(moduleStatus, moduleId);
    return KErrGeneral;
    }


TInt No_Server_NotifyModuleStatusEvent(TAny* /*aPtr*/)
    {
    RPositionServer server;
    TPositionModuleStatusEvent event;
    TPositionModuleId moduleId = KPositionNullModuleId;
    TRequestStatus request;
    server.NotifyModuleStatusEvent(event, request, moduleId);
    return KErrGeneral;
    }


TInt No_Server_CancelRequest(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.CancelRequest(EPositionServerNotifyModuleStatusEvent);
    return KErrGeneral;
    }


void CNoServerStep::RPositionServer_NoL()
	{
    DECLARE_ERROR_LOGGING;
    StandardPrepareL();
    CheckThereIsNoServerL();
    
    RPositionServer server;

    CHECK( KErrNone != server.Connect() );
    FAIL( server.Handle() != 0 , "Server found, while should not be");
        
    DO_PANIC_TEST_L(
        No_Server_GetDefaultModuleId,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);
       
    DO_PANIC_TEST_L(
        No_Server_GetNumModules,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Server_GetModuleInfoByIndex,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Server_GetModuleInfoById,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Server_GetModuleStatus,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Server_NotifyModuleStatusEvent,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Server_CancelRequest,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    StandardCleanup();
    }


// 9.1.3 Connect and try to execute RPositioner methods
// This should fail with panic

TInt No_Positioner_CancelRequest(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    RPositioner positioner;
    positioner.CancelRequest(EPositionerGetLastKnownPosition);
    return KErrGeneral;
    }


TInt No_Positioner_Open(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    RPositioner positioner;
    positioner.Open(server);
    return KErrGeneral;
    }


TInt No_Positioner_Open_ModuleId(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    TPositionModuleId moduleId = {0x012345678};

    RPositioner positioner;
    positioner.Open(server, moduleId);
    return KErrGeneral;
    }


TInt No_Positioner_Open_Criteria(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    TPositionCriteria crit;
    
    RPositioner positioner;
    positioner.Open(server, crit);
    return KErrGeneral;
    }
    

// Close method should not fail    
TInt No_Positioner_Close(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    RPositioner positioner;
    positioner.Close();
    return KErrNone;
    }


TInt No_Positioner_SetRequestor(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    RPositioner positioner;
    positioner.SetRequestor(0, 0, KNullDesC);
    return KErrGeneral;
    }


TInt No_Positioner_SetRequestor_Stack(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    RRequestorStack stack;
    
    RPositioner positioner;
    positioner.SetRequestor(stack);
    return KErrGeneral;
    }


TInt No_Positioner_SetUpdateOptions(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    TPositionUpdateOptions options;

    RPositioner positioner;
    positioner.SetUpdateOptions(options);
    return KErrGeneral;
    }


TInt No_Positioner_GetUpdateOptions(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    TPositionUpdateOptions options;

    RPositioner positioner;
    positioner.GetUpdateOptions(options);
    return KErrGeneral;
    }


TInt No_Positioner_GetLastKnownPosition(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    TPositionInfo info;
    TRequestStatus status;

    RPositioner positioner;
    positioner.GetLastKnownPosition(info, status);
    return KErrGeneral;
    }


TInt No_Positioner_NotifyPositionUpdate(TAny* /*aPtr*/)
    {
    RPositionServer server;
    server.Connect();
    
    TPositionInfo info;
    TRequestStatus status;

    RPositioner positioner;
    positioner.NotifyPositionUpdate(info, status);
    return KErrGeneral;
    }


void CNoServerStep::RPositioner_NoL()
	{
    DECLARE_ERROR_LOGGING;
    StandardPrepareL();
    CheckThereIsNoServerL();
    
    RPositionServer server;

    CHECK( KErrNone != server.Connect() );
    FAIL( server.Handle() != 0, "Server found, while should not be" );
        
    DO_PANIC_TEST_L(
        No_Positioner_CancelRequest,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);
       
    DO_PANIC_TEST_L(
        No_Positioner_Open,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_Open_ModuleId,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_Open_Criteria,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_Close,
        KNoClientFault,
        KErrNone,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_SetRequestor,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_SetRequestor_Stack,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_SetUpdateOptions,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_GetUpdateOptions,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_GetLastKnownPosition,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    DO_PANIC_TEST_L(
        No_Positioner_NotifyPositionUpdate,
        KPosClientFault,
        EPositionServerBadHandle,
        KDefaultTestTimeout);

    StandardCleanup();
	}