diff -r 000000000000 -r ff3b6d0fd310 phonesrv_plat/phone_client_emergency_call_api/tsrc/src/it_emergencycalltests.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonesrv_plat/phone_client_emergency_call_api/tsrc/src/it_emergencycalltests.cpp Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,627 @@ +/* +* Copyright (c) 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: +* +*/ + +#include "IT_EmergencyCallTests.h" +#include +#include + +#include + +#include +#include + + +class CEtel : public CActive + { +public: + + static CEtel* NewL() { + CEtel* self = CEtel::NewLC(); + CleanupStack::Pop( self ); + return self; + } + + static CEtel* NewLC() + { + CEtel* self = new( ELeave )CEtel( ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + ~CEtel() { + + delete iNumber; + delete iWait; + iCall.Close(); + iLine.Close(); + iTelServer.Close(); + } + + void WaitForEmergencyCallToConnectL() + { + iLine.NotifyStatusChange(iStatus, iLineStatus ); + SetActive(); + WaitForRequest(); + } + + const TDesC& GetNumberOfEmergencyCall() const + { + return *iNumber; + } + + void Hangup() { + iCall.HangUp(iStatus); + User::WaitForRequest( iStatus ); + } + + void WaitForRequest() { + if ( IsActive() ) + { + iWait->Start(); + } + } + +protected: + + void RunL() { + if( iLineStatus == RCall::EStatusConnected ) + { + iWait->AsyncStop(); + RLine::TCallInfo callInfo; + User::LeaveIfError( iLine.GetCallInfo(0, callInfo ) ); + User::LeaveIfError( iCall.OpenExistingCall( iLine, callInfo.iCallName ) ); + RMobileCall::TMobileCallInfoV1 info; + RMobileCall::TMobileCallInfoV1Pckg pckg( info ); + User::LeaveIfError( iCall.GetMobileCallInfo( pckg ) ); + + iNumber = info.iDialledParty.iTelNumber.AllocL(); + } + else + { + iLine.NotifyStatusChange(iStatus, iLineStatus ); + SetActive(); + } + + } + + void DoCancel() { + } + +private: + + void ConstructL() { + User::LeaveIfError( iTelServer.Connect() ); + User::LeaveIfError( iTelServer.LoadPhoneModule(KMmTsyModuleName) ); + + TBuf<100> name; + name.Append( KMmTsyPhoneName ); + name.Append( _L("::") ); + name.Append( KMmTsyVoice1LineName ); + User::LeaveIfError( iLine.Open( iTelServer, name ) ); + iWait = new( ELeave )CActiveSchedulerWait(); + } + + CEtel() : CActive( EPriorityStandard ) + { CActiveScheduler::Add( this ); } + +private: + RTelServer iTelServer; + RMobileLine iLine; + RMobileCall iCall; + CActiveSchedulerWait* iWait; + RCall::TStatus iLineStatus; + HBufC* iNumber; + }; + +// - Construction ----------------------------------------------------------- + +IT_EmergencyCallTests* IT_EmergencyCallTests::NewL() + { + IT_EmergencyCallTests* self = IT_EmergencyCallTests::NewLC(); + CleanupStack::Pop(); + return self; + } + +IT_EmergencyCallTests* IT_EmergencyCallTests::NewLC() + { + IT_EmergencyCallTests* self = new( ELeave ) IT_EmergencyCallTests(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +IT_EmergencyCallTests::~IT_EmergencyCallTests() + { + } + +IT_EmergencyCallTests::IT_EmergencyCallTests() + { + } + +void IT_EmergencyCallTests::ConstructL() + { + CEUnitTestSuiteClass::ConstructL(); + } + +void IT_EmergencyCallTests::HandleEmergencyDialL( const TInt aStatus ) + { + iReceivedDialStatus = aStatus; + } + +// - Test methods ---------------------------------------------------------- + +void IT_EmergencyCallTests::DoTestValidEmergencyNumberL( const TDesC& aNumber ) + { + TBool isEmergency; + EUNIT_PRINT( aNumber ); + EUNIT_ASSERT_EQUALS( iEmergency->IsEmergencyPhoneNumber( aNumber, isEmergency ), KErrNone ); + EUNIT_ASSERT( isEmergency ); + } + +void IT_EmergencyCallTests::DoTestInvalidEmergencyNumberL( const TDesC& aNumber ) + { + TBool isEmergency; + EUNIT_PRINT( aNumber ); + EUNIT_ASSERT_EQUALS( iEmergency->IsEmergencyPhoneNumber( aNumber, isEmergency ), KErrNone ); + EUNIT_ASSERT( !isEmergency ); + } + +void IT_EmergencyCallTests::DoTestFindValidEmergencyNumberL( const TDesC& aNumber, const TDesC& aExpectedFoundEmergencyNumber ) + { + TBool isEmergency; + HBufC* number = aNumber.AllocLC(); + TPtr numberPtr = number->Des(); + EUNIT_PRINT( aNumber ); + EUNIT_ASSERT_EQUALS( iEmergency->FindEmergencyPhoneNumber( numberPtr, isEmergency ), KErrNone ); + EUNIT_ASSERT( isEmergency ); + + EUNIT_ASSERT( numberPtr.Match( aExpectedFoundEmergencyNumber ) == 0 ); + CleanupStack::PopAndDestroy( number ); + } + +void IT_EmergencyCallTests::DoTestFindInvalidEmergencyNumberL( const TDesC& aNumber ) + { + TBool isEmergency; + HBufC* number = aNumber.AllocLC(); + TPtr numberPtr = number->Des(); + EUNIT_PRINT( aNumber ); + EUNIT_ASSERT_EQUALS( iEmergency->FindEmergencyPhoneNumber( numberPtr, isEmergency ), KErrNone ); + EUNIT_ASSERT( !isEmergency ); + + CleanupStack::PopAndDestroy( number ); + } + +void IT_EmergencyCallTests::SetupL( ) + { + iEmergency = CPhCltEmergencyCall::NewL( this ); + } + +void IT_EmergencyCallTests::SetupWithEtelL() + { + iReceivedDialStatus = -1000; // Non default value + iEtel = CEtel::NewL(); + iEmergency = CPhCltEmergencyCall::NewL( this ); + } + +void IT_EmergencyCallTests::Teardown( ) + { + delete iEmergency; + delete iEtel; iEtel = NULL; + } + +void IT_EmergencyCallTests::TestConstructionL() + { + // SetupL and Teardown does the job. + } + +void IT_EmergencyCallTests::Test112L() + { + DoTestValidEmergencyNumberL( _L("112") ); + } + +void IT_EmergencyCallTests::TestHash31Hash112L() + { + DoTestValidEmergencyNumberL( _L("#31#112") ); + } + +void IT_EmergencyCallTests::TestStar31Hash112L() + { + DoTestValidEmergencyNumberL( _L("*31#112") ); + } + +void IT_EmergencyCallTests::Test112WithDtmfL() + { + DoTestValidEmergencyNumberL( _L("112p234p1234#") ); + } + +void IT_EmergencyCallTests::Test112WithDtmf_2L() + { + DoTestValidEmergencyNumberL( _L("112p454") ); + } + +void IT_EmergencyCallTests::TestPlusSignBefore112L() + { + DoTestValidEmergencyNumberL( _L("+112") ); + } + +void IT_EmergencyCallTests::TestCLIR112DTMFL() + { + DoTestValidEmergencyNumberL( _L("*31#112p123w123") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_1L() + { + DoTestInvalidEmergencyNumberL( _L("*132#112") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_2L() + { + DoTestInvalidEmergencyNumberL( _L("#112") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_3L() + { + DoTestInvalidEmergencyNumberL( _L("112#") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_4L() + { + DoTestInvalidEmergencyNumberL( _L("*34#112p52##5w256") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_5L() + { + DoTestInvalidEmergencyNumberL( _L("p112") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_6L() + { + DoTestInvalidEmergencyNumberL( _L("w112p") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_7L() + { + DoTestInvalidEmergencyNumberL( _L("p112w") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_8L() + { + DoTestInvalidEmergencyNumberL( _L("112+") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_9L() + { + DoTestInvalidEmergencyNumberL( _L("112+p112") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_10L() + { + DoTestInvalidEmergencyNumberL( _L("p") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_11L() + { + DoTestInvalidEmergencyNumberL( _L("w") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_12L() + { + DoTestInvalidEmergencyNumberL( _L("pw") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_13L() + { + DoTestInvalidEmergencyNumberL( _L("*#+112p+") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_14L() + { + DoTestInvalidEmergencyNumberL( _L("*#+112p+#") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_15L() + { + DoTestInvalidEmergencyNumberL( _L("05001234567#112") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_16L() + { + DoTestInvalidEmergencyNumberL( _L("*31#") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_17L() + { + DoTestInvalidEmergencyNumberL( _L("*31#p123w12") ); + } + +void IT_EmergencyCallTests::TestInvalidEmergencyNumber_18L() + { + DoTestInvalidEmergencyNumberL( KNullDesC() ); + } + +void IT_EmergencyCallTests::TestFindingEmergencyNumber_1L() + { + DoTestFindValidEmergencyNumberL(_L("112"), _L("112") ); + } + + +// The feature flag __EN_POLICY_DOS must not be defined when running this test in emulator. +// In emulator we have stub DOS +void IT_EmergencyCallTests::TestFindingEmergencyNumber_2L() + { + DoTestFindValidEmergencyNumberL(_L("555*#112"), _L("112") ); + } + +// The feature flag __EN_POLICY_DOS must not be defined when running this test in emulator. +// In emulator we have stub DOS +void IT_EmergencyCallTests::TestFindingEmergencyNumber_3L() + { + DoTestFindInvalidEmergencyNumberL(_L("1120") ); + } + +void IT_EmergencyCallTests::TestCallingEmergencyCallWithInvalidEmergencyNumberL() + { + EUNIT_ASSERT_SPECIFIC_LEAVE( iEmergency->DialEmergencyCallL( _L("030444") ), KErrArgument ); + } + +// The feature flag __EN_POLICY_DOS must not be defined when running this test in emulator. +// In emulator we have stub DOS +void IT_EmergencyCallTests::TestEmergencyCallL() + { + EUNIT_ASSERT_NO_LEAVE( iEmergency->DialEmergencyCallL( _L("*31#112p123w123") ) ); + + iEtel->WaitForEmergencyCallToConnectL(); + EUNIT_ASSERT( iReceivedDialStatus == KErrNone ); + + // Verify that the Etel has got the emergency number without any extra chars. + EUNIT_ASSERT( iEtel->GetNumberOfEmergencyCall().Match( _L("112") ) == 0 ); + + iEtel->Hangup(); + } + +// - EUnit test table ------------------------------------------------------- + +EUNIT_BEGIN_TEST_TABLE( + IT_EmergencyCallTests, + "API tests for Emergency call api", + "MODULE" ) + +EUNIT_TEST( + "Consruction", + "CPhCltEmergencyCall", + "NewL", + "FUNCTIONALITY", + SetupL, TestConstructionL, Teardown) + +EUNIT_TEST( + "Valid e number 112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, Test112L, Teardown) + +EUNIT_TEST( + "Valid em number #31#112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestHash31Hash112L, Teardown) + +EUNIT_TEST( + "Valid em number *31#112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestStar31Hash112L, Teardown) + +EUNIT_TEST( + "Valid em number 112p234p1234#", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, Test112WithDtmfL, Teardown) + +EUNIT_TEST( + "Valid em number 112p454", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, Test112WithDtmf_2L, Teardown) + +EUNIT_TEST( + "Valid em number +112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestPlusSignBefore112L, Teardown) + +EUNIT_TEST( + "Valid em number *31#112p123w123", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestCLIR112DTMFL, Teardown) + + + +EUNIT_TEST( + "Invalid em number *132#112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_1L, Teardown) + +EUNIT_TEST( + "Invalid em number #112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_2L, Teardown) + +EUNIT_TEST( + "Invalid em number 112#", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_3L, Teardown) + +EUNIT_TEST( + "Invalid em number *34#112p52##5w256", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_4L, Teardown) + +EUNIT_TEST( + "Invalid em number p112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_5L, Teardown) + +EUNIT_TEST( + "Invalid em number w112p", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_6L, Teardown) + + +EUNIT_TEST( + "Invalid em number p112w", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_7L, Teardown) + +EUNIT_TEST( + "Invalid em number 112+", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_8L, Teardown) + +EUNIT_TEST( + "Invalid em number 112+p112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_9L, Teardown) + +EUNIT_TEST( + "Invalid em number p", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_10L, Teardown) + +EUNIT_TEST( + "Invalid em number w", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_11L, Teardown) + +EUNIT_TEST( + "Invalid em number pw", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_12L, Teardown) + +EUNIT_TEST( + "Invalid em number *#+112p+", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_13L, Teardown) + +EUNIT_TEST( + "Invalid em number *#+112p+#", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_14L, Teardown) + +EUNIT_TEST( + "Invalid em number 05001234567#112", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_15L, Teardown) + +EUNIT_TEST( + "Invalid em number *31#", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_16L, Teardown) + +EUNIT_TEST( + "Invalid em number *31#p123w12", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_17L, Teardown) + + +EUNIT_TEST( + "Invalid em number ", + "CPhCltEmergencyCall", + "IsEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestInvalidEmergencyNumber_18L, Teardown) + +EUNIT_TEST( + "Valid em number found from 112", + "CPhCltEmergencyCall", + "FindEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestFindingEmergencyNumber_1L, Teardown) + +EUNIT_TEST( + "Valid em number found from 555*#112", + "CPhCltEmergencyCall", + "FindEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestFindingEmergencyNumber_2L, Teardown) + +EUNIT_TEST( + "Invalid em number not found from 1120", + "CPhCltEmergencyCall", + "FindEmergencyPhoneNumber", + "FUNCTIONALITY", + SetupL, TestFindingEmergencyNumber_3L, Teardown) + +EUNIT_TEST( + "Dial with invalid em number", + "CPhCltEmergencyCall", + "DialEmergency", + "FUNCTIONALITY", + SetupWithEtelL, TestCallingEmergencyCallWithInvalidEmergencyNumberL, Teardown) + +EUNIT_TEST( + "Dial emergency call", + "CPhCltEmergencyCall", + "DialEmergency", + "FUNCTIONALITY", + SetupWithEtelL, TestEmergencyCallL, Teardown) + + + +EUNIT_END_TEST_TABLE