diff -r 000000000000 -r dfb7c4ff071f commsfwtools/preparedefaultcommsdatabase/te_commsdat/src/commsdatSnapTests.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsfwtools/preparedefaultcommsdatabase/te_commsdat/src/commsdatSnapTests.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,3917 @@ +// 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 commsdatSnapTests.cpp +*/ +#include "commsdatSnapTests.h" +#include "Te_commsdatSuiteDefs.h" +#include +#include +#include + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY +namespace + { + +TInt GetAPNumberL(const TInt aTierValaue, CommsDat::CMDBSession* aCDSession_vLatest) + { + CMDBRecordSet* ipprotoAPs = new(ELeave)CMDBRecordSet(KCDTIdAccessPointRecord); + CleanupStack::PushL(ipprotoAPs); + + CCDAccessPointRecord* primedIPProtoAP = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(primedIPProtoAP); + + primedIPProtoAP->iTier = aTierValaue; + + ipprotoAPs->iRecords.AppendL(primedIPProtoAP); + //the ownership of the primed record is now at the recordset + CleanupStack::Pop(primedIPProtoAP); + + ipprotoAPs->FindL(*aCDSession_vLatest); + + TInt apNum = ipprotoAPs->iRecords.Count(); + + CleanupStack::PopAndDestroy(ipprotoAPs); + + return apNum; + } + + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +//Below workaround to load the linked record which should be resolved with DEF58321 +CCDRecordBase* GetConnectedRecordL(CMDBSession& aSession, TMDBElementId aElementId) + { + CCDRecordBase *record = static_cast(CCDRecordBase::RecordFactoryL(aElementId)); + CleanupStack::PushL(record); + record->LoadL(aSession); + CleanupStack::Pop(record); + return record; + } + +CCommsdat190Step::~CCommsdat190Step() +/** + * Destructor + */ + { + delete iCDSession; + } + +CCommsdat190Step::CCommsdat190Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat190Step); + } + +TVerdict CCommsdat190Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession = CMDBSession::NewL(KCDVersion1_1); + + iCDSession->OpenTransactionL(); + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat190Step::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. + */ + { + SetTestStepResult(EFail); + + //Store several IAPs and Selection Policies for later testing + _LIT(KIAPName1, "SelectionTestIAP1"); + _LIT(KIAPName2, "SelectionTestIAP2"); + _LIT(KIAPName3, "SelectionTestIAP3"); + _LIT(KSelName1, "SelectionPolicy1"); + + _LIT(KModemBearerType, "ModemBearer"); + _LIT(KLANServiceType, "LANService"); + + CCDIAPRecord* newIapRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(newIapRecord); + CCDIAPPrioritySelectionPolicyRecord *selPolRecord = (CCDIAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord); + CleanupStack::PushL(selPolRecord); + + selPolRecord->SetRecordId(KCDNewRecordRequest); + selPolRecord->iRecordName.SetMaxLengthL(KSelName1().Length()); + selPolRecord->iRecordName = KSelName1; + + + // create a new request + newIapRecord->SetRecordId(KCDNewRecordRequest); + newIapRecord->iRecordName.SetMaxLengthL(KIAPName1().Length()); + newIapRecord->iRecordName = KIAPName1; + newIapRecord->iNetworkWeighting = 14; // dummy value + newIapRecord->iBearer = 1; + newIapRecord->iBearerType.SetMaxLengthL(KModemBearerType().Length()); + newIapRecord->iBearerType = KModemBearerType; + newIapRecord->iService = 1; + newIapRecord->iServiceType.SetMaxLengthL(KLANServiceType().Length()); + newIapRecord->iServiceType = KLANServiceType; + newIapRecord->StoreL(*iCDSession); + INFO_PRINTF2(_L("newIapRecord stored. Element id is %08x"), newIapRecord->ElementId()); + selPolRecord->iIap1 = newIapRecord->ElementId(); + + newIapRecord->SetRecordId(KCDNewRecordRequest); + newIapRecord->iRecordName.SetMaxLengthL(KIAPName2().Length()); + newIapRecord->iRecordName = KIAPName2; + newIapRecord->iNetworkWeighting = 14; // dummy value + newIapRecord->iBearer = 1; + newIapRecord->iBearerType.SetMaxLengthL(KModemBearerType().Length()); + newIapRecord->iBearerType = KModemBearerType; + newIapRecord->iService = 1; + newIapRecord->iServiceType.SetMaxLengthL(KLANServiceType().Length()); + newIapRecord->iServiceType = KLANServiceType; + newIapRecord->StoreL(*iCDSession); + INFO_PRINTF2(_L("newIapRecord stored. Element id is %08x"), newIapRecord->ElementId()); + selPolRecord->iIap2 = newIapRecord->ElementId(); + + newIapRecord->SetRecordId(KCDNewRecordRequest); + newIapRecord->iRecordName.SetMaxLengthL(KIAPName3().Length()); + newIapRecord->iRecordName = KIAPName3; + newIapRecord->iNetworkWeighting = 14; // dummy value + newIapRecord->iBearer = 1; + newIapRecord->iBearerType.SetMaxLengthL(KModemBearerType().Length()); + newIapRecord->iBearerType = KModemBearerType; + newIapRecord->iService = 1; + newIapRecord->iServiceType.SetMaxLengthL(KLANServiceType().Length()); + newIapRecord->iServiceType = KLANServiceType; + newIapRecord->StoreL(*iCDSession); + INFO_PRINTF2(_L("newIapRecord stored. Element id is %08x"), newIapRecord->ElementId()); + selPolRecord->iIap3 = newIapRecord->ElementId(); + + selPolRecord->StoreL(*iCDSession); + INFO_PRINTF2(_L("selPolRecord stored. Element id is %08x"), selPolRecord->ElementId()); + + CleanupStack::PopAndDestroy(selPolRecord); + CleanupStack::PopAndDestroy(newIapRecord); + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat190Step::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + iCDSession->CommitTransactionL(); + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat191Step::~CCommsdat191Step() +/** + * Destructor + */ + { + delete iCDSession; + } + +CCommsdat191Step::CCommsdat191Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat191Step); + } + +TVerdict CCommsdat191Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + iCDSession = CMDBSession::NewL(KCDVersion1_1); + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat191Step::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. + */ + { + SetTestStepResult(EFail); + + _LIT(KIAPName1, "SelectionTestIAP1"); //Same as used by CCommsdat100Step + _LIT(KSelName1, "SelectionPolicy1"); + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(selPolRecord); + + //Find a particular IAP Priority Selection Policy record + selPolRecord->iRecordName.SetMaxLengthL(KSelName1().Length()); + selPolRecord->iRecordName = KSelName1; + + TInt found = selPolRecord->FindL(*iCDSession); //This record has been stored by CCommsdat100Step + if(found) + { + //Load corresponding IAP record + + + //This record has been stored by CCommsdat100Step + + // Link records work now + CCDIAPRecord* iapRecord = static_cast(GetConnectedRecordL(*iCDSession, selPolRecord->iIap1)); + CleanupStack::PushL(iapRecord); + + + /*selPolRecord->iIap1.LoadL(*iCDSession); + CCDIAPRecord* iapRecord = static_cast(selPolRecord->iIap1); +*/ + TPtrC iapRecordName(iapRecord->iRecordName); + if (iapRecordName == KIAPName1) + { + INFO_PRINTF2(_L("Iap record (%S) successfuly loaded"), &iapRecordName); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF3(_L("Iap record (%S) does not match the expected one (%S)"), &iapRecordName, &KIAPName1()); + } + + CleanupStack::PopAndDestroy(iapRecord); // not necessary - link records work now. + } + + CleanupStack::PopAndDestroy(selPolRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat192Step::~CCommsdat192Step() +/** + * Destructor + */ + { + delete iCDSession; + } + +CCommsdat192Step::CCommsdat192Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat192Step); + } + +TVerdict CCommsdat192Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + iCDSession = CMDBSession::NewL(KCDVersion1_1); + + iCDSession->OpenTransactionL(); + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat192Step::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. + */ + { + SetTestStepResult(EFail); + + //Store an IAP priority based AP record for later testing + _LIT(KApName1, "CorporateLAN"); //Same as used by CCommsdat101Step + _LIT(KSelName1, "SelectionPolicy1"); + const TInt GIDValue = 1; + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(selPolRecord); + + //Find a particular IAP Priority Selection Policy record + selPolRecord->iRecordName.SetMaxLengthL(KSelName1().Length()); + selPolRecord->iRecordName = KSelName1; + + TInt found = selPolRecord->FindL(*iCDSession); //This record has been stored by CCommsdat100Step + if (found) + { + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->SetRecordId(KCDNewRecordRequest); + apRecord->iRecordName.SetMaxLengthL(KApName1().Length()); + apRecord->iRecordName = KApName1; + apRecord->iSelectionPolicy = selPolRecord->ElementId(); + apRecord->iAccessPointGID = GIDValue; + apRecord->StoreL(*iCDSession); + INFO_PRINTF2(_L("apRecord stored. Element id is %08x"), apRecord->ElementId()); + + CleanupStack::PopAndDestroy(apRecord); + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(selPolRecord); + return TestStepResult(); + } + +TVerdict CCommsdat192Step::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + iCDSession->CommitTransactionL(); + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat193Step::~CCommsdat193Step() +/** + * Destructor + */ + { + delete iCDSession; + } + +CCommsdat193Step::CCommsdat193Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat193Step); + } + +TVerdict CCommsdat193Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + iCDSession = CMDBSession::NewL(KCDVersion1_1); + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat193Step::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. + */ + { + SetTestStepResult(EFail); + + //Load a previously stored IAP priority based AP record + _LIT(KApName1, "CorporateLAN"); //Same as used by CCommsdat101Step + _LIT(KSelName1, "SelectionPolicy1"); + _LIT(KIAPName3, "SelectionTestIAP3"); //Same as used by CCommsdat100Step + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->iRecordName.SetL(KApName1); + TInt found = apRecord->FindL(*iCDSession); //This record has been stored by CCommsdat102Step + if (found) + { + INFO_PRINTF2(_L("apRecord loaded. Element id is %08x"), apRecord->ElementId()); + + //Load the Selection Policy record + //This record has been stored by CCommsdat100Step + CCDSelectionPolicyRecordBase* selPolRecord = static_cast(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy)); + CleanupStack::PushL(selPolRecord); + + + /*apRecord->iSelectionPolicy.LoadL(*iCDSession); + CCDSelectionPolicyRecordBase* selPolRecord = static_cast(apRecord->iSelectionPolicy); + */ + + TESTL(TPtrC(selPolRecord->iRecordName) == KSelName1); + + //Cast to the already known type + CCDIAPPrioritySelectionPolicyRecord* iapSelPolRec = static_cast(selPolRecord); + + //This record has been stored by CCommsdat100Step + CCDIAPRecord* iapRecord = static_cast(GetConnectedRecordL(*iCDSession, iapSelPolRec->iIap3)); + CleanupStack::PushL(iapRecord); + + + /*iapSelPolRec->iIap3.LoadL(*iCDSession); + CCDIAPRecord* iapRecord = static_cast(iapSelPolRec->iIap3);*/ + + TPtrC iapRecordName(iapRecord->iRecordName); + if(iapRecordName == KIAPName3) + { + INFO_PRINTF2(_L("Iap record (%S) successfuly loaded"), &iapRecordName); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF3(_L("Iap record (%S) does not match the expected one (%S)"), &iapRecordName, &KIAPName3()); + } + + CleanupStack::PopAndDestroy(iapRecord); + CleanupStack::PopAndDestroy(selPolRecord); + + } + CleanupStack::PopAndDestroy(apRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat194Step::~CCommsdat194Step() +/** + * Destructor + */ + { + delete iCDSession; + } + +CCommsdat194Step::CCommsdat194Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat194Step); + } + +TVerdict CCommsdat194Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + iCDSession = CMDBSession::NewL(KCDVersion1_1); + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat194Step::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. + */ + { + SetTestStepResult(EFail); + + //Load a previously stored IAP priority based AP record + _LIT(KApName1, "CorporateLAN"); //Same as used by CCommsdat101Step + _LIT(KSelName1, "SelectionPolicy1"); + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->iRecordName.SetL(KApName1); + TInt found = apRecord->FindL(*iCDSession); //This record has been stored by CCommsdat102Step + if (found) + { + INFO_PRINTF2(_L("apRecord loaded. Element id is %08x"), apRecord->ElementId()); + + //Load the Selection Policy record + //This record has been stored by CCommsdat100Step + CCDSelectionPolicyRecordBase* selPolRecord = static_cast(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy)); + CleanupStack::PushL(selPolRecord); + + /*apRecord->iSelectionPolicy.LoadL(*iCDSession); + CCDSelectionPolicyRecordBase* selPolRecord = static_cast(apRecord->iSelectionPolicy); + */ + TESTL(TPtrC(selPolRecord->iRecordName) == KSelName1); + + //Build the list of IDs + RArray iapIDs; + CleanupClosePushL(iapIDs); + + const SRecordTypeInfo* recordInfo = selPolRecord->GetRecordInfo(); + CMDBRecordLink* iapRecordLink = NULL; + // Get only 3 fields from the record because the previous test only set 3 fields + TInt index(0); + + while ( (recordInfo + index) != NULL && (recordInfo + index)->iTypeId != KCDTIdIap1 ) + { + // The first field you want to read might not be at the beginning of the table + ++index; + } + /* + changed the code because this was too fragile, depending on non-public info (i.e. the order of the fields in the recordinfo table) + for( TInt index = 2; + index < 5 && (iapRecordLink = static_cast*>(selPolRecord->GetFieldByIdL((recordInfo + index)->iTypeId))) != NULL; + index++ ) + { + */ + TInt typeId = (recordInfo + index)->iTypeId ; + while ( typeId != NULL && typeId <= KCDTIdIap3 ) + { + iapRecordLink = static_cast*>(selPolRecord->GetFieldByIdL(typeId)); + + CCDIAPRecord* iapRecord = static_cast(GetConnectedRecordL(*iCDSession, *iapRecordLink)); + //iapRecordLink->LoadL(*iCDSession); + //CCDIAPRecord* iapRecord = static_cast(*iapRecordLink); + + TPtrC iapRecName(iapRecord->iRecordName); + TUint32 iapId = iapRecord->RecordId(); + if (iapRecName.Length() > 0 && iapId > 0) + { + iapIDs.Append(iapId); + } + //delete iapRecord; + typeId = (++recordInfo + index)->iTypeId; + } + + if(iapIDs.Count() == 3) + { + INFO_PRINTF1(_L("Iap records successfuly loaded")); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("Iap records not found!")); + } + CleanupStack::PopAndDestroy(); //Call Close() on iapIDs; + CleanupStack::PopAndDestroy(selPolRecord); + } + CleanupStack::PopAndDestroy(apRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat195Step::~CCommsdat195Step() +/** + * Destructor + */ + { + delete iCDSession; + } + +CCommsdat195Step::CCommsdat195Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat195Step); + } + +TVerdict CCommsdat195Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + iCDSession = CMDBSession::NewL(KCDVersion1_1); + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat195Step::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. + */ + { + SetTestStepResult(EFail); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + _LIT(KApName1, "dummynifMappedFromIAP1"); + //_LIT(KSelName1, "SelectionPolicy1"); + //const TUint KAp1 = 22; + const TUint KRecordId = 1; + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->iRecordName.SetL(KApName1); + + TInt found = apRecord->FindL(*iCDSession); + if (found) + { + INFO_PRINTF2(_L("apRecord loaded. Element id is %08x"), apRecord->ElementId()); + + //Load the related IAP record + CCDIAPRecord* iapRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(iapRecord); + iapRecord->SetRecordId(KRecordId); + iapRecord->LoadL(*iCDSession); + + if(static_cast(apRecord->iRecordTag) == iapRecord->RecordId()) + { + INFO_PRINTF1(_L("AP and the 'linked' IAP record found")); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("AP and the 'linked' IAP record found")); + } + + CleanupStack::PopAndDestroy(iapRecord); + + } + else + { + INFO_PRINTF1(_L("AccessPoint record not found")); + } + + CleanupStack::PopAndDestroy(apRecord); +#else + _LIT(KApName1, "SNAP1"); + _LIT(KSelName1, "SelectionPolicy1"); + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->iRecordName.SetL(KApName1); + TInt found = apRecord->FindL(*iCDSession); + if (found) + { + INFO_PRINTF2(_L("apRecord loaded. Element id is %08x"), apRecord->ElementId()); + + //Load the Selection Policy record + + //CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy)); + //CleanupStack::PushL(selPolRecord); + + apRecord->iSelectionPolicy.LoadL(*iCDSession); + //CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(apRecord->iSelectionPolicy); + + CCDSelectionPolicyRecordBase* selPolRecord1 = static_cast(apRecord->iSelectionPolicy); + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(selPolRecord1); + + TESTL(TPtrC(selPolRecord->iRecordName) == KSelName1); + + if(selPolRecord->iIap1.RecordId() == 1) + { + INFO_PRINTF1(_L("Selection Policy record found")); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("Selection Policy record not found")); + } + } + CleanupStack::PopAndDestroy(apRecord); +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat196Step::~CCommsdat196Step() +/** + * Destructor + */ + { + delete iCDSession; + } + +CCommsdat196Step::CCommsdat196Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat196Step); + } + +TVerdict CCommsdat196Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + iCDSession = CMDBSession::NewL(KCDVersion1_1); + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat196Step::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. + */ + { + SetTestStepResult(EFail); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + _LIT(KSelName2, "SelectionPolicy2"); + const TUint KRecordId = 2; + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->SetRecordId(KRecordId); //load record 2 which links to a policy with 3 IAPs. + apRecord->LoadL(*iCDSession); + + INFO_PRINTF2(_L("Access Point Record loaded. Element id is %08x"), apRecord->ElementId()); + + //Load the Selection Policy record + //CCDAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDConnectionPrefsRecord::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CCDAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(selPolRecord); + selPolRecord->SetRecordId(KRecordId); + selPolRecord->LoadL(*iCDSession); + + TESTL(TPtrC(selPolRecord->iRecordName) == KSelName2); + + //Build the list of IDs + RArray iapIDs; + CleanupClosePushL(iapIDs); + +// CMDBField* theAp = &selPolRecord->iAp1; + CMDBRecordLink* theAp = &selPolRecord->iAp1; + TUint32 theCount = selPolRecord->iApCount; + if (theCount != 3) + { + INFO_PRINTF2(_L("IAP count in the policy (%) is invalid"), theCount); + TESTL(EFalse); + } + + for (TInt i = 0; i < theCount; i++, theAp++) + { + TInt theIapID = static_cast(*theAp); + TESTL(theIapID>0); + iapIDs.Append(theIapID); + } + + if (iapIDs.Count() == 3) + { + INFO_PRINTF1(_L("Iap records successfuly loaded")); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("Iap records not found!")); + } + + CleanupStack::PopAndDestroy(&iapIDs); + CleanupStack::PopAndDestroy(selPolRecord); + CleanupStack::PopAndDestroy(apRecord); + +#else + _LIT(KSelName2, "SelectionPolicy2"); + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->SetRecordId(2); //load record 2 which links to a policy with 3 IAPs. + apRecord->LoadL(*iCDSession); + + INFO_PRINTF2(_L("Access Point Record loaded. Element id is %08x"), apRecord->ElementId()); + + //Load the Selection Policy record + + //CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy)); + //CleanupStack::PushL(selPolRecord); + + + apRecord->iSelectionPolicy.LoadL(*iCDSession); + //CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(apRecord->iSelectionPolicy); + CCDSelectionPolicyRecordBase* selPolRecord1 = static_cast(apRecord->iSelectionPolicy); + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(selPolRecord1); + + TESTL(TPtrC(selPolRecord->iRecordName) == KSelName2); + + //Build the list of IDs + RArray iapIDs; + CleanupClosePushL(iapIDs); + + CMDBRecordLink* theIap = &selPolRecord->iIap1; + CMDBField* theCount = &selPolRecord->iIapCount; + TUint count = *theCount; + if (count != 3) + { + INFO_PRINTF2(_L("IAP count in the policy (%) is invalid"), count); + TESTL(EFalse); + } + + for (TInt i = 0; i < count; i++,theIap++) + { + TInt theIapID = static_cast(*theIap); + TESTL(theIapID>0); + iapIDs.Append(theIapID); + } + + if (iapIDs.Count() == 3) + { + INFO_PRINTF1(_L("Iap records successfuly loaded")); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("Iap records not found!")); + } + + CleanupStack::PopAndDestroy(&iapIDs); + CleanupStack::PopAndDestroy(apRecord); +#endif + + return TestStepResult(); + } +//--------------------------------------- +// FIELD TESTS +//--------------------------------------- +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat307Step::~CCommsdat307Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat307Step::CCommsdat307Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat307Step); + } + +TVerdict CCommsdat307Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat307Step::doTestStepL() +/** + * @return - TVerdict code + * Change the PromptForSnap field in the GlobalSettings record to TRUE + */ + { + SetTestStepResult(EFail); + + //create the container for the prompt field in the GS + CMDBField* promptForSnapField = new(ELeave) CMDBField(KCDTIdPromptForSnap); + CleanupStack::PushL(promptForSnapField); + promptForSnapField->SetRecordId(1); + + //create the container for the prompt field in the tier rec. + + CMDBField* promptTierField = new(ELeave) CMDBField(KCDTIdPromptUser); + CleanupStack::PushL(promptTierField); + promptTierField->SetRecordId(1); + + //This loads the 'PromptUser' field from the default Network tier record. + promptForSnapField->LoadL(*iCDSession_v11); + promptTierField->LoadL(*iCDSession_vLatest); + + if (*promptTierField == *promptForSnapField) + { + *promptForSnapField = ETrue; + promptForSnapField->ModifyL(*iCDSession_v11); + + CMDBField* promptForSnapField2 = new(ELeave) CMDBField(KCDTIdPromptForSnap); + CleanupStack::PushL(promptForSnapField2); + promptForSnapField2->SetRecordId(1); + + promptForSnapField2->LoadL(*iCDSession_v11); + promptTierField->LoadL(*iCDSession_vLatest); + + if (1 == *promptTierField && + 1 == *promptForSnapField2) + { + SetTestStepResult(EPass); + } + CleanupStack::PopAndDestroy(promptForSnapField2); + } + + CleanupStack::PopAndDestroy(promptTierField); + CleanupStack::PopAndDestroy(promptForSnapField); + + return TestStepResult(); + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat308Step::~CCommsdat308Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat308Step::CCommsdat308Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat308Step); + } + +TVerdict CCommsdat308Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat308Step::doTestStepL() +/** + * @return - TVerdict code + * Load the GlobalSettings record from the DB. + * This test step is dependent form the CCommsdat307Step!! + */ + { + SetTestStepResult(EFail); + + CCDGlobalSettingsRecord* gsRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdGlobalSettingsRecord)); + CleanupStack::PushL(gsRecord); + + gsRecord->SetRecordId(1); + gsRecord->LoadL(*iCDSession_v11); + + CMDBField* promptForSnap = &(gsRecord->iPromptForSnap); + + if ( 1 == *promptForSnap ) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(gsRecord); + + return TestStepResult(); + } + +#endif +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat309Step::~CCommsdat309Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat309Step::CCommsdat309Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat309Step); + } + +TVerdict CCommsdat309Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat309Step::doTestStepL() +/** + * @return - TVerdict code + * Load the defaultSnap field formthe GS record as a link field. + * This test step is dependent form the CCommsdat307Step!! + */ + { + SetTestStepResult(EFail); + + CMDBRecordLink* gsDefaultSnap = new (ELeave) CMDBRecordLink(KCDTIdDefaultSnap); + CMDBRecordLink* tierDefaultAP = new (ELeave) CMDBRecordLink(KCDTIdDefaultAccessPoint); + CleanupStack::PushL(gsDefaultSnap); + CleanupStack::PushL(tierDefaultAP); + + gsDefaultSnap->SetRecordId(1); + gsDefaultSnap->LoadL(*iCDSession_v11); + + tierDefaultAP->SetRecordId(1); + tierDefaultAP->LoadL(*iCDSession_vLatest); + + if ( 1 == *gsDefaultSnap && + 1 == ((*tierDefaultAP & KCDMaskShowRecordId) >> 8) ) + { + //ok, the 2 fields are the same + *gsDefaultSnap = 2; + gsDefaultSnap->ModifyL(*iCDSession_v11); + + CMDBRecordLink* gsDefaultSnap1 = new (ELeave) CMDBRecordLink(KCDTIdDefaultSnap); + CMDBRecordLink* tierDefaultAP1 = new (ELeave) CMDBRecordLink(KCDTIdDefaultAccessPoint); + CleanupStack::PushL(gsDefaultSnap1); + CleanupStack::PushL(tierDefaultAP1); + + //let's check them once again... + gsDefaultSnap1->SetRecordId(1); + gsDefaultSnap1->LoadL(*iCDSession_v11); + + tierDefaultAP1->SetRecordId(1); + tierDefaultAP1->LoadL(*iCDSession_vLatest); + + if ( 2 == *gsDefaultSnap1 && + 2 == ((*tierDefaultAP1 & KCDMaskShowRecordId) >> 8) ) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(tierDefaultAP1); + CleanupStack::PopAndDestroy(gsDefaultSnap1); + } + + CleanupStack::PopAndDestroy(tierDefaultAP); + CleanupStack::PopAndDestroy(gsDefaultSnap); + + return TestStepResult(); + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat310Step::~CCommsdat310Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat310Step::CCommsdat310Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat310Step); + } + +TVerdict CCommsdat310Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat310Step::doTestStepL() +/** + * @return - TVerdict code + * Load the GlobalSettings record. + * This test step is dependent form the CCommsdat309Step!! + */ + { + SetTestStepResult(EFail); + + CCDGlobalSettingsRecord* gsRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdGlobalSettingsRecord)); + CCDTierRecord* tierRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + + CleanupStack::PushL(gsRecord); + CleanupStack::PushL(tierRecord); + + gsRecord->SetRecordId(1); + gsRecord->LoadL(*iCDSession_v11); + + tierRecord->SetRecordId(1); + tierRecord->LoadL(*iCDSession_vLatest); + + CMDBRecordLink* gsDefaultSnap = &(gsRecord->iDefaultSnap); + CMDBRecordLink* tierDefaultAP = &(tierRecord->iDefaultAccessPoint); + + if ( 2 == *gsDefaultSnap && + 2 == ((*tierDefaultAP & KCDMaskShowRecordId) >> 8) ) + { + *gsDefaultSnap = 1; + + gsRecord->ModifyL(*iCDSession_v11); + + gsRecord->SetRecordId(1); + gsRecord->LoadL(*iCDSession_v11); + + tierRecord->SetRecordId(1); + tierRecord->LoadL(*iCDSession_vLatest); + + gsDefaultSnap = &(gsRecord->iDefaultSnap); + tierDefaultAP = &(tierRecord->iDefaultAccessPoint); + + if ( 1 == *gsDefaultSnap && + 1 == ((*tierDefaultAP & KCDMaskShowRecordId) >> 8) ) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(tierRecord); + CleanupStack::PopAndDestroy(gsRecord); + + return TestStepResult(); + } + +//IAPPrioritySelectionPolicy mapping + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat311Step::~CCommsdat311Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat311Step::CCommsdat311Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat311Step); + } + +TVerdict CCommsdat311Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat311Step::doTestStepL() +/** + * @return - TVerdict code + * Insert 1 more IAP link in to the default IAPPrioritySelectionPolicy record. + */ + { + SetTestStepResult(EFail); + + //first insert the new IAP record. This will trigger the generation of the + //linked link level AP. + _LIT(KIAPName1, "The new IAP"); + _LIT(KModemBearerType, "ModemBearer"); + _LIT(KLANServiceType, "LANService"); + + CCDIAPRecord* newIapRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(newIapRecord); + + newIapRecord->SetRecordId(KCDNewRecordRequest); + newIapRecord->iRecordName.SetMaxLengthL(KIAPName1().Length()); + newIapRecord->iRecordName = KIAPName1; + newIapRecord->iBearer = 2; + newIapRecord->iBearerType.SetMaxLengthL(KModemBearerType().Length()); + newIapRecord->iBearerType = KModemBearerType; + newIapRecord->iService = 1; + newIapRecord->iServiceType.SetMaxLengthL(KLANServiceType().Length()); + newIapRecord->iServiceType = KLANServiceType; + newIapRecord->iLocation = 2; + newIapRecord->iNetworkWeighting = 14; // dummy value + newIapRecord->iNetwork = 1; + + newIapRecord->StoreL(*iCDSession_v11); + INFO_PRINTF2(_L("newIapRecord stored. Element id is %08x"), newIapRecord->ElementId()); + + //Now read the default IAPPrioritySelectionPolicy record. + CCDIAPPrioritySelectionPolicyRecord *selPolRecord = (CCDIAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord); + CleanupStack::PushL(selPolRecord); + //We just know that this is the default IAPPrioritySelPol record. + selPolRecord->SetRecordId(1); + + selPolRecord->LoadL(*iCDSession_v11); + + //insert the new IAP link. + selPolRecord->iIap2 = newIapRecord->ElementId(); + selPolRecord->ModifyL(*iCDSession_v11); + + /* + * Now with the 1_1 session let's read the IAPPrioritySelPol record and with the latest session the mapped + * APPrioritySelPol record. The rule is that the recordIDs of the linked IAP records from the IAPPrioritySelPol + * record should be the same as the CustomSelectionPolicy fields of the linked APs from the mapped APPrioritySelPol + * record. + */ + + //Finding out the elementIds because here we create new containers for the loading of those... + TMDBElementId iapSelPolElemId = selPolRecord->ElementId(); + TMDBElementId apSelPolElemId = 0; + + CleanupStack::PopAndDestroy(selPolRecord); + CleanupStack::PopAndDestroy(newIapRecord); + + //search for the mapped APPrioritySelPol record based on the name + CMDBField* appriorityNameField = new (ELeave) CMDBField(KCDTIdApPrioritySelectionPolicyRecord | KCDTIdRecordName); + CleanupStack::PushL(appriorityNameField); + + _LIT(KSelName1, "SelectionPolicy1"); + + appriorityNameField->SetMaxLengthL(KSelName1().Length()); + appriorityNameField->SetL(KSelName1); + + if ( appriorityNameField->FindL(*iCDSession_vLatest) ) + { + apSelPolElemId = appriorityNameField->ElementId(); + + CCDIAPPrioritySelectionPolicyRecord *iapSelPolRecord = (CCDIAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord); + CleanupStack::PushL(iapSelPolRecord); + + CCDAPPrioritySelectionPolicyRecord *apSelPolRecord = (CCDAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord); + CleanupStack::PushL(apSelPolRecord); + + iapSelPolRecord->SetElementId(iapSelPolElemId); + apSelPolRecord->SetElementId(apSelPolElemId & ~KCDMaskShowFieldType); + + iapSelPolRecord->LoadL(*iCDSession_v11); + apSelPolRecord->LoadL(*iCDSession_vLatest); + + CMDBField* iapSelPolFieldName = &(iapSelPolRecord->iRecordName); + CMDBField* apSelPolFieldName = &(apSelPolRecord->iRecordName); + + TPtrC iapSelPolname(*iapSelPolFieldName); + TPtrC apSelPolname(*apSelPolFieldName); + + if (iapSelPolname == apSelPolname && + iapSelPolRecord->iIapCount == apSelPolRecord->iApCount) + { + //let's check the customSelectionPolicy values of the pointed AP records + //from the APPrioritySelPol record + CMDBField* custSelPol = new (ELeave) CMDBField(KCDTIdCustomSelectionPolicy); + CleanupStack::PushL(custSelPol); + + CMDBRecordLink* apXField = &(apSelPolRecord->iAp1); + CMDBRecordLink* iapXField = &(iapSelPolRecord->iIap1); + TBool recordIDsAreTheSame = ETrue; + for (TInt i = 1; i <= apSelPolRecord->iApCount && recordIDsAreTheSame; ++i) + { + custSelPol->SetRecordId((*apXField & KCDMaskShowRecordId) >> 8); + custSelPol->LoadL(*iCDSession_vLatest); + if ( *custSelPol != ((*iapXField & KCDMaskShowRecordId) >> 8) ) + { + recordIDsAreTheSame = EFalse; + } + ++apXField; + ++iapXField; + } + + CleanupStack::PopAndDestroy(custSelPol); + + if (recordIDsAreTheSame) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(apSelPolRecord); + CleanupStack::PopAndDestroy(iapSelPolRecord); + } + + CleanupStack::PopAndDestroy(appriorityNameField); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat312Step::~CCommsdat312Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat312Step::CCommsdat312Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat312Step); + } + +TVerdict CCommsdat312Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat312Step::doTestStepL() +/** + * @return - TVerdict code + * Insert 1 IAP link is deleted form the IAPPrioritySelectionPolicy record, inserted + * in the previous test step. + * This test ste is dependent from CCommsdat312Step + */ + { + SetTestStepResult(EFail); + + CCDIAPPrioritySelectionPolicyRecord *selPolRecord = (CCDIAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord); + CleanupStack::PushL(selPolRecord); + //We just know that this is the 2nd record. + selPolRecord->SetRecordId(2); + + selPolRecord->LoadL(*iCDSession_v11); + + //and now let's remove the 2nd IAP link so this will cause a 'hole' in the IAP links in the record. + selPolRecord->iIap2 = 0; + + selPolRecord->ModifyL(*iCDSession_v11); + + //Finding out the elementIds because here we create new containers for the loading of those... + TMDBElementId iapSelPolElemId = selPolRecord->ElementId(); + TMDBElementId apSelPolElemId = 0; + + CleanupStack::PopAndDestroy(selPolRecord); + + //search for the mapped APPrioritySelPol record based on the name + CMDBField* appriorityNameField = new (ELeave) CMDBField(KCDTIdApPrioritySelectionPolicyRecord | KCDTIdRecordName); + CleanupStack::PushL(appriorityNameField); + + _LIT(KSelName1, "SelectionPolicy2"); + + appriorityNameField->SetMaxLengthL(KSelName1().Length()); + appriorityNameField->SetL(KSelName1); + + if ( appriorityNameField->FindL(*iCDSession_vLatest) ) + { + apSelPolElemId = appriorityNameField->ElementId(); + + CCDIAPPrioritySelectionPolicyRecord *iapSelPolRecord = (CCDIAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord); + CleanupStack::PushL(iapSelPolRecord); + + CCDAPPrioritySelectionPolicyRecord *apSelPolRecord = (CCDAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord); + CleanupStack::PushL(apSelPolRecord); + + iapSelPolRecord->SetElementId(iapSelPolElemId); + apSelPolRecord->SetElementId(apSelPolElemId & ~KCDMaskShowFieldType); + + iapSelPolRecord->LoadL(*iCDSession_v11); + apSelPolRecord->LoadL(*iCDSession_vLatest); + + CMDBField* iapSelPolFieldName = &(iapSelPolRecord->iRecordName); + CMDBField* apSelPolFieldName = &(apSelPolRecord->iRecordName); + + TPtrC iapSelPolname(*iapSelPolFieldName); + TPtrC apSelPolname(*apSelPolFieldName); + + if (iapSelPolname == apSelPolname && + iapSelPolRecord->iIapCount == apSelPolRecord->iApCount) + { + //let's check the customSelectionPolicy values of the pointed AP records + //from the APPrioritySelPol record + CMDBField* custSelPol = new (ELeave) CMDBField(KCDTIdCustomSelectionPolicy); + CleanupStack::PushL(custSelPol); + + CMDBRecordLink* apXField = &(apSelPolRecord->iAp1); + CMDBRecordLink* iapXField = &(iapSelPolRecord->iIap1); + TBool recordIDsAreTheSame = ETrue; + TInt err = 0; + for (TInt i = 1; i <= apSelPolRecord->iApCount && recordIDsAreTheSame; ++i) + { + custSelPol->SetRecordId((*apXField & KCDMaskShowRecordId) >> 8); + TRAP(err, custSelPol->LoadL(*iCDSession_vLatest)); + if (KErrNotFound == err && *iapXField == 0 && *apXField == 0) + { + //it's ok + recordIDsAreTheSame = ETrue; + } + else if ( *custSelPol != ((*iapXField & KCDMaskShowRecordId) >> 8) ) + { + recordIDsAreTheSame = EFalse; + } + ++apXField; + ++iapXField; + } + + CleanupStack::PopAndDestroy(custSelPol); + + if (recordIDsAreTheSame) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(apSelPolRecord); + CleanupStack::PopAndDestroy(iapSelPolRecord); + } + + CleanupStack::PopAndDestroy(appriorityNameField); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat313Step::~CCommsdat313Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat313Step::CCommsdat313Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat313Step); + } + +TVerdict CCommsdat313Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat313Step::doTestStepL() +/** + * @return - TVerdict code + * Delete 1 IAPPriorirytSelPol record form the DB - not the default one... + */ + { + SetTestStepResult(EFail); + + CCDIAPPrioritySelectionPolicyRecord *iapSelPolRecord = (CCDIAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord); + CleanupStack::PushL(iapSelPolRecord); + //We just know that this is the 2nd record. + iapSelPolRecord->SetRecordId(2); + + iapSelPolRecord->LoadL(*iCDSession_v11); + + CCDAPPrioritySelectionPolicyRecord *apSelPolRecord = (CCDAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord); + CleanupStack::PushL(apSelPolRecord); + + apSelPolRecord->SetRecordId(iapSelPolRecord->RecordId()); + apSelPolRecord->LoadL(*iCDSession_vLatest); + + RArray linkedIAPIds; + CleanupClosePushL(linkedIAPIds); + + CMDBRecordLink* apXLink = &(apSelPolRecord->iAp1); + + for (TInt i = 1; i <= apSelPolRecord->iApCount; ++i) + { + linkedIAPIds.Append(*apXLink); + ++apXLink; + } + + iapSelPolRecord->DeleteL(*iCDSession_v11); + + //from this point none the original IAPPrioritySelPol record, nor the mapped APPrioritySelPol record + //should be available. However all of the linked AP records from the APPrioritySelPol + //should be available because as originally there were more thna 1 links to each. + TInt err = 0; + + TRAP(err, iapSelPolRecord->LoadL(*iCDSession_v11)); + if (KErrNotFound == err) + { + TRAP(err, apSelPolRecord->LoadL(*iCDSession_vLatest)); + if (KErrNotFound == err) + { + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + TInt i = 0; + + err = KErrNone; + + for (i = 0; (i < linkedIAPIds.Count()) && (KErrNone == err); ++i) + { + apRec->SetElementId(linkedIAPIds[i]); + TRAP(err, apRec->LoadL(*iCDSession_vLatest)); + } + + CleanupStack::PopAndDestroy(apRec); + + if (KErrNone == err && + i == linkedIAPIds.Count() ) + { + SetTestStepResult(EPass); + } + } + } + + CleanupStack::PopAndDestroy(&linkedIAPIds); + CleanupStack::PopAndDestroy(apSelPolRecord); + CleanupStack::PopAndDestroy(iapSelPolRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat314Step::~CCommsdat314Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat314Step::CCommsdat314Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat314Step); + } + +TVerdict CCommsdat314Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat314Step::doTestStepL() +/** + * @return - TVerdict code + * Delete 1 IAPPriorirytSelPol record form the DB - now the default one... + */ + { + SetTestStepResult(EFail); + + CCDIAPPrioritySelectionPolicyRecord *iapSelPolRecord = (CCDIAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord); + CleanupStack::PushL(iapSelPolRecord); + //We just know that this is the 1st record. + iapSelPolRecord->SetRecordId(1); + + iapSelPolRecord->LoadL(*iCDSession_v11); + + CCDAPPrioritySelectionPolicyRecord *apSelPolRecord = (CCDAPPrioritySelectionPolicyRecord *)CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord); + CleanupStack::PushL(apSelPolRecord); + + apSelPolRecord->SetRecordId(iapSelPolRecord->RecordId()); + apSelPolRecord->LoadL(*iCDSession_vLatest); + + RArray linkedIAPIds; + CleanupClosePushL(linkedIAPIds); + + CMDBRecordLink* apXLink = &(apSelPolRecord->iAp1); + + for (TInt i = 1; i <= apSelPolRecord->iApCount; ++i) + { + linkedIAPIds.Append(*apXLink); + ++apXLink; + } + + iapSelPolRecord->DeleteL(*iCDSession_v11); + + //from this point none the original IAPPrioritySelPol record, nor the mapped APPrioritySelPol record + //can be read. The IPProto TierRecord should point to the default IPProto AP (form the meshpreface file) + TInt err = 0; + + TRAP(err, iapSelPolRecord->LoadL(*iCDSession_v11)); + if (KErrNotFound == err) + { + TRAP(err, apSelPolRecord->LoadL(*iCDSession_vLatest)); + if (KErrNotFound == err) + { + //default IPProto Tier has to point to the default IPProto AP + CCDAccessPointRecord* defIPProtoAPRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(defIPProtoAPRec); + + defIPProtoAPRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy; + if (defIPProtoAPRec->FindL(*iCDSession_vLatest)) + { + TPtrC recName(defIPProtoAPRec->iRecordName); + _LIT(KIPProtoDefRecName, "IPProtoDefault"); + + if (0 == recName.Compare(KIPProtoDefRecName)) + { + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + //we just know that the given record is the 2nd one (it's possible to do a FindL based + //on the IPProto tagId) + ipprotoTierRec->SetRecordId(2); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + if (ipprotoTierRec->iDefaultAccessPoint == (defIPProtoAPRec->ElementId() & ~KCDMaskShowFieldType)) + { + //based on the base configuration no IPProto AP should be deleted... + + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + TInt i = 0; + + TInt err = KErrNone; + + for (i = 0; (i < linkedIAPIds.Count()) && (KErrNone == err); ++i) + { + apRec->SetElementId(linkedIAPIds[i]); + TRAP(err, apRec->LoadL(*iCDSession_vLatest)); + } + + CleanupStack::PopAndDestroy(apRec); + + if (KErrNone == err && + i == linkedIAPIds.Count() ) + { + SetTestStepResult(EPass); + } + } + CleanupStack::PopAndDestroy(ipprotoTierRec); + } + } + + CleanupStack::PopAndDestroy(defIPProtoAPRec); + } + } + + CleanupStack::PopAndDestroy(&linkedIAPIds); + CleanupStack::PopAndDestroy(apSelPolRecord); + CleanupStack::PopAndDestroy(iapSelPolRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat315Step::~CCommsdat315Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat315Step::CCommsdat315Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat315Step); + } + +TVerdict CCommsdat315Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat315Step::doTestStepL() +/** + * @return - TVerdict code + * Modify 1 IAP link through a field container in the 2nd IAPPriorirytSelPol record. + */ + { + SetTestStepResult(EFail); + + CCDIAPRecord* linkedIAP = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(linkedIAP); + + linkedIAP->SetRecordId(3); + linkedIAP->LoadL(*iCDSession_v11); + + CMDBRecordLink* iap5Link = new(ELeave) CMDBRecordLink(KCDTIdIap5); + CleanupStack::PushL(iap5Link); + + iap5Link->SetRecordId(2); + *iap5Link = linkedIAP->ElementId(); + + //now modify the 2nd IAPPrioritySelPol record through a link container + iap5Link->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(iap5Link); + CleanupStack::PopAndDestroy(linkedIAP); + + //check the results... + CCDIAPPrioritySelectionPolicyRecord* iapSelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(iapSelPolRec); + + CCDAPPrioritySelectionPolicyRecord* apSelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(apSelPolRec); + + iapSelPolRec->SetRecordId(2); + apSelPolRec->SetRecordId(2); + + iapSelPolRec->LoadL(*iCDSession_v11); + apSelPolRec->LoadL(*iCDSession_vLatest); + + CMDBField* iapSelPolFieldName = &(iapSelPolRec->iRecordName); + CMDBField* apSelPolFieldName = &(apSelPolRec->iRecordName); + + TPtrC iapSelPolname(*iapSelPolFieldName); + TPtrC apSelPolname(*apSelPolFieldName); + + if (iapSelPolname == apSelPolname && + iapSelPolRec->iIapCount == apSelPolRec->iApCount) + { + //let's check the customSelectionPolicy values of the pointed AP records + //from the APPrioritySelPol record + CMDBField* custSelPol = new (ELeave) CMDBField(KCDTIdCustomSelectionPolicy); + CleanupStack::PushL(custSelPol); + + CMDBRecordLink* apXField = &(apSelPolRec->iAp1); + CMDBRecordLink* iapXField = &(iapSelPolRec->iIap1); + TBool recordIDsAreTheSame = ETrue; + + for (TInt i = 1; i <= apSelPolRec->iApCount && recordIDsAreTheSame; ++i) + { + if (4 == i) + { + //if we read the 4th link to LoadL should be called + if ((0 != *iapXField) || (0 != *apXField)) + { + //the AP4/IAP4 links have to 0! + recordIDsAreTheSame = EFalse; + break; + } + } + else + { + custSelPol->SetRecordId((*apXField & KCDMaskShowRecordId) >> 8); + custSelPol->LoadL(*iCDSession_vLatest); + + if ( *custSelPol != ((*iapXField & KCDMaskShowRecordId) >> 8) ) + { + recordIDsAreTheSame = EFalse; + } + } + ++apXField; + ++iapXField; + } + + CleanupStack::PopAndDestroy(custSelPol); + + if (recordIDsAreTheSame) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(apSelPolRec); + CleanupStack::PopAndDestroy(iapSelPolRec); + return TestStepResult(); + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat316Step::~CCommsdat316Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat316Step::CCommsdat316Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat316Step); + } + +TVerdict CCommsdat316Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat316Step::doTestStepL() +/** + * @return - TVerdict code + * Find an IAPPrioritySelPol record based on an IAP link value... + * find that link in the IAP/APSelPol table. + */ + { + SetTestStepResult(EFail); + + + CMDBRecordLink* iap5Link = new(ELeave) CMDBRecordLink(KCDTIdIap5); + CleanupStack::PushL(iap5Link); + + iap5Link->SetRecordId(2); + *iap5Link = 1; + + iap5Link->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(iap5Link); + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(selPolRecord); + + selPolRecord->iIap5 = 1; + + if (selPolRecord->FindL(*iCDSession_v11)) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(selPolRecord); + + + return TestStepResult(); + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat317Step::~CCommsdat317Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat317Step::CCommsdat317Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat317Step); + } + +TVerdict CCommsdat317Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat317Step::doTestStepL() +/** + * @return - TVerdict code + * Find an IAPPrioritySelPol field based on an IAP link value... + */ + { + SetTestStepResult(EFail); + + CMDBRecordLink* iapLinkField = new(ELeave) CMDBRecordLink(KCDTIdIap3); + CleanupStack::PushL(iapLinkField); + + //this means - give me back the first IAPPrioritySelPol field which has the value of 3 + *iapLinkField = 3; + + if (iapLinkField->FindL(*iCDSession_v11)) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(iapLinkField); + + + return TestStepResult(); + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat318Step::~CCommsdat318Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat318Step::CCommsdat318Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat318Step); + } + +TVerdict CCommsdat318Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat318Step::doTestStepL() +/** + * @return - TVerdict code + * Load an IAPPrioritySelPol field... + */ + { + SetTestStepResult(EFail); + + CMDBRecordLink* iapLinkField = new(ELeave) CMDBRecordLink(KCDTIdIap3); + CleanupStack::PushL(iapLinkField); + + iapLinkField->SetRecordId(2); + + iapLinkField->LoadL(*iCDSession_v11); + + //there is no leave so it's ok + + SetTestStepResult(EPass); + + CleanupStack::PopAndDestroy(iapLinkField); + + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat319Step::~CCommsdat319Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat319Step::CCommsdat319Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat319Step); + } + +TVerdict CCommsdat319Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat319Step::doTestStepL() +/** + * @return - TVerdict code + * Delete an IAPPrioritySelPol field... + */ + { + SetTestStepResult(EFail); + + CMDBRecordLink* iapLinkField = new(ELeave) CMDBRecordLink(KCDTIdIap3); + CleanupStack::PushL(iapLinkField); + + iapLinkField->SetRecordId(2); + + iapLinkField->DeleteL(*iCDSession_v11); + + //there is no leave so it's ok + + SetTestStepResult(EPass); + + CleanupStack::PopAndDestroy(iapLinkField); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat320Step::~CCommsdat320Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat320Step::CCommsdat320Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat320Step); + } + +TVerdict CCommsdat320Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat320Step::doTestStepL() +/** + * @return - TVerdict code + * Changing the IAPCount in the IAPPrioritySelPol table and then read it back + */ + { + SetTestStepResult(EFail); + + CMDBField* iapCount = new(ELeave) CMDBField(KCDTIdIapCount); + CleanupStack::PushL(iapCount); + + iapCount->SetRecordId(2); + *iapCount = 2; + + iapCount->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(iapCount); + + CMDBField* iapCount1 = new(ELeave) CMDBField(KCDTIdIapCount); + CleanupStack::PushL(iapCount1); + + iapCount1->SetRecordId(2); + iapCount1->LoadL(*iCDSession_v11); + if (2 == *iapCount1) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(iapCount1); + + return TestStepResult(); + } + +// AccessPoint mapping + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat321Step::~CCommsdat321Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat321Step::CCommsdat321Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat321Step); + } + +TVerdict CCommsdat321Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat321Step::doTestStepL() +/** + * @return - TVerdict code + * Modify the accesspointSelectionPolicy field in the 2nd AccessPoint record + * to point to the 3rd IAPPrioritySelPol record. Modification is made through + * a record container. + */ + { + SetTestStepResult(EFail); + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(selPolRecord); + + selPolRecord->SetRecordId(3); + selPolRecord->LoadL(*iCDSession_v11); + + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + apRec->SetRecordId(2); + apRec->LoadL(*iCDSession_v11); + + apRec->iSelectionPolicy = selPolRecord->ElementId(); + + apRec->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(apRec); + CleanupStack::PopAndDestroy(selPolRecord); + + CCDAccessPointRecord* apRec1 = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec1); + + apRec1->SetRecordId(2); + apRec1->LoadL(*iCDSession_v11); + + CMDBRecordLink* selPolField = &(apRec1->iSelectionPolicy); + + if ( 3 == ((*selPolField & KCDMaskShowRecordId) >> 8) ) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apRec1); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat322Step::~CCommsdat322Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat322Step::CCommsdat322Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat322Step); + } + +TVerdict CCommsdat322Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat322Step::doTestStepL() +/** + * @return - TVerdict code + * Modify the accesspointSelectionPolicy field in the 3rd AccessPoint record + * to point to the 4th IAPPrioritySelPol record. Modification is made through + * a record container but this time without filling the GID field. + */ + { + SetTestStepResult(EFail); + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(selPolRecord); + + selPolRecord->SetRecordId(4); + selPolRecord->LoadL(*iCDSession_v11); + + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + apRec->SetRecordId(3); + apRec->iSelectionPolicy = selPolRecord->ElementId(); + + apRec->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(apRec); + CleanupStack::PopAndDestroy(selPolRecord); + + + CCDAccessPointRecord* apRec1 = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec1); + + apRec1->SetRecordId(3); + apRec1->LoadL(*iCDSession_v11); + + CMDBRecordLink* selPolField = &(apRec1->iSelectionPolicy); + + if (4 == ((KCDMaskShowRecordId & (*selPolField)) >> 8) && + KCDTIdIapPrioritySelectionPolicyRecord == (KCDMaskShowRecordType & (*selPolField)) ) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apRec1); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat323Step::~CCommsdat323Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat323Step::CCommsdat323Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat323Step); + } + +TVerdict CCommsdat323Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat323Step::doTestStepL() +/** + * @return - TVerdict code + * Modify the accesspointSelectionPolicy field in the 3rd AccessPoint record + * to point to the 4th IAPPrioritySelPol record. Modification is made through + * a field container. + */ + { + SetTestStepResult(EFail); + + CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(selPolRecord); + + selPolRecord->SetRecordId(4); + selPolRecord->LoadL(*iCDSession_v11); + + CMDBRecordLink* apSelPolField = new(ELeave)CMDBRecordLink(KCDTIdSelectionPolicy); + CleanupStack::PushL(apSelPolField); + + apSelPolField->SetRecordId(3); + *apSelPolField = selPolRecord->ElementId(); + + apSelPolField->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(apSelPolField); + CleanupStack::PopAndDestroy(selPolRecord); + + + CMDBRecordLink* apSelPolField1 = new(ELeave)CMDBRecordLink(KCDTIdSelectionPolicy); + CleanupStack::PushL(apSelPolField1); + + apSelPolField1->SetRecordId(3); + apSelPolField1->LoadL(*iCDSession_v11); + + if (4 == ((KCDMaskShowRecordId & (*apSelPolField1)) >> 8) && + KCDTIdIapPrioritySelectionPolicyRecord == (KCDMaskShowRecordType & (*apSelPolField1)) ) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apSelPolField1); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat324Step::~CCommsdat324Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat324Step::CCommsdat324Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat324Step); + } + +TVerdict CCommsdat324Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat324Step::doTestStepL() +/** + * @return - TVerdict code + * Modify the GID field to the value of 2. Modification is made through + * a field container. + */ + { + SetTestStepResult(EFail); + CMDBField* gidField = new(ELeave)CMDBField(KCDTIdAccessPointGID); + CleanupStack::PushL(gidField); + + gidField->SetRecordId(1); + *gidField = 2; + + TRAPD(err, gidField->ModifyL(*iCDSession_v11)); + if (KErrArgument == err) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(gidField); + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat325Step::~CCommsdat325Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat325Step::CCommsdat325Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat325Step); + } + +TVerdict CCommsdat325Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat325Step::doTestStepL() +/** + * @return - TVerdict code + * Modify the name field of the 1st accesspointRec. Modification is made through + * a field container. (this is field is not mapped) + */ + { + SetTestStepResult(EFail); + _LIT(KName, "Changed AP name field"); + + CMDBField* name = new(ELeave)CMDBField(KCDTIdAccessPointRecord | KCDTIdRecordName); + CleanupStack::PushL(name); + + name->SetRecordId(1); + name->SetMaxLengthL(KName().Length()); + name->SetL(KName); + + name->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(name); + + CMDBField* name1 = new(ELeave)CMDBField(KCDTIdAccessPointRecord | KCDTIdRecordName); + CleanupStack::PushL(name1); + + name1->SetMaxLengthL(KName().Length()); + name1->SetL(KName); + + if ( name1->FindL(*iCDSession_v11) ) + { + TPtrC name(*name1); + if (0 == name.Compare(KName)) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(name1); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat326Step::~CCommsdat326Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat326Step::CCommsdat326Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat326Step); + } + +TVerdict CCommsdat326Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat326Step::doTestStepL() +/** + * @return - TVerdict code + * Modify the GID field to the value of 2. Modification is made through + * a record container. + */ + { + SetTestStepResult(EFail); + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->SetRecordId(1); + apRecord->iAccessPointGID = 2; + + TRAPD(err, apRecord->ModifyL(*iCDSession_v11)); + + if (KErrArgument == err) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat327Step::~CCommsdat327Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat327Step::CCommsdat327Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat327Step); + } + +TVerdict CCommsdat327Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat327Step::doTestStepL() +/** + * @return - TVerdict code + * Modify the name field of the 1st accesspointRec. Modification is made through + * a record container. (this is field is not mapped) + */ + { + SetTestStepResult(EFail); + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->SetRecordId(1); + + _LIT(KName, "Changed AP name field"); + apRecord->iRecordName.SetMaxLengthL(KName().Length()); + apRecord->iRecordName.SetL(KName); + + apRecord->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(apRecord); + + + CCDAccessPointRecord* apRecord1 = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord1); + + apRecord1->iRecordName.SetMaxLengthL(KName().Length()); + apRecord1->iRecordName.SetL(KName); + + if (apRecord1->FindL(*iCDSession_v11)) + { + TPtrC name(apRecord1->iRecordName); + if (0 == name.Compare(KName)) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(apRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat328Step::~CCommsdat328Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat328Step::CCommsdat328Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat328Step); + } + +TVerdict CCommsdat328Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat328Step::doTestStepL() +/** + * @return - TVerdict code + * Find the 1st AP record based on the linked IAPPrioritySelPol elementId. The find is made + * through a record container. + */ + { + SetTestStepResult(EFail); + + CCDAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRecord); + + apRecord->iSelectionPolicy = (KCDTIdIapPrioritySelectionPolicyRecord | (1 << 8)); + + if (apRecord->FindL(*iCDSession_v11)) + { + TPtrC recName(apRecord->iRecordName); + _LIT(KRecName, "SNAP1"); + + if (1 == apRecord->RecordId() && + 0 == recName.Compare(KRecName)) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(apRecord); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat329Step::~CCommsdat329Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat329Step::CCommsdat329Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat329Step); + } + +TVerdict CCommsdat329Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat329Step::doTestStepL() +/** + * @return - TVerdict code + * Find the 1st AP record based on the linked IAPPrioritySelPol elementId. The find is made + * through a field container. + */ + { + SetTestStepResult(EFail); + CMDBRecordLink* selPolField = new(ELeave)CMDBRecordLink(KCDTIdSelectionPolicy); + CleanupStack::PushL(selPolField); + + *selPolField = (KCDTIdIapPrioritySelectionPolicyRecord | (1 << 8)); + if (selPolField->FindL(*iCDSession_v11)) + { + if (1 == selPolField->RecordId()) + { + SetTestStepResult(EPass); + } + } + + CleanupStack::PopAndDestroy(selPolField); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat330Step::~CCommsdat330Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat330Step::CCommsdat330Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat330Step); + } + +TVerdict CCommsdat330Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat330Step::doTestStepL() +/** + * @return - TVerdict code + * Delete the selPol link in the 1st AP record. The delete is made through a field container. + */ + { + SetTestStepResult(EFail); + CMDBRecordLink* selPolField = new(ELeave)CMDBRecordLink(KCDTIdSelectionPolicy); + CleanupStack::PushL(selPolField); + + selPolField->SetRecordId(1); + + selPolField->DeleteL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(selPolField); + + + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + apRec->SetRecordId(1); + apRec->LoadL(*iCDSession_v11); + + if (NULL == apRec->iSelectionPolicy) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apRec); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat331Step::~CCommsdat331Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat331Step::CCommsdat331Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat331Step); + } + +TVerdict CCommsdat331Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); + iCDSession_vLatest = NULL; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat331Step::doTestStepL() +/** + * @return - TVerdict code + * Delete the 2nd AP record. The delete is made through a record container. + */ + { + SetTestStepResult(EFail); + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + apRec->SetRecordId(2); + apRec->DeleteL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(apRec); + + CCDAccessPointRecord* apRec1 = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec1); + + apRec1->SetRecordId(2); + apRec1->LoadL(*iCDSession_v11); + + if ( NULL == apRec1->iAccessPointGID && + NULL == apRec1->iSelectionPolicy ) + { + //although LoadL didn't leave no data is read from the database. + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apRec1); + + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3311Step::~CCommsdat3311Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3311Step::CCommsdat3311Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3311Step); + } + +TVerdict CCommsdat3311Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3311Step::doTestStepL() +/** + * @return - TVerdict code + * Insert a new IAP link into the record one - the same as IAP1. + * Insert is called on a field container. + * + * No new IPProto AP should be generated and the new link should be inserted into + * the record. + */ + { + SetTestStepResult(EFail); + + const TInt KIPProtoTierLink = 0x11800200; + + CMDBField* iap2Link = new(ELeave)CMDBField(KCDTIdIap2); + CleanupStack::PushL(iap2Link); + + iap2Link->SetRecordId(1); + *iap2Link = 1; + iap2Link->ModifyL(*iCDSession_v11); + + //The IPProto AP number is 4 because we have 3 generated APs and + //we have the default one as well in the DB... + if ( 4 == GetAPNumberL(KIPProtoTierLink, iCDSession_vLatest) ) + { + CCDIAPPrioritySelectionPolicyRecord* iapSelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(iapSelPolRec); + + iapSelPolRec->SetRecordId(1); + iapSelPolRec->LoadL(*iCDSession_v11); + + TInt iap1 = iapSelPolRec->iIap1; + TInt iap2 = iapSelPolRec->iIap2; + + if (iap1 == iap2 && + 2 == iapSelPolRec->iIapCount) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(iapSelPolRec); + } + + CleanupStack::PopAndDestroy(iap2Link); + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3312Step::~CCommsdat3312Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3312Step::CCommsdat3312Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3312Step); + } + +TVerdict CCommsdat3312Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3312Step::doTestStepL() +/** + * @return - TVerdict code + * Now deleted the previously inserted IAP link form the record one. + * + * No IPProto AP should be deleted only the link + */ + { + SetTestStepResult(EFail); + + const TInt KIPProtoTierLink = 0x11800200; + + CMDBField* iap2Link = new(ELeave)CMDBField(KCDTIdIap2); + CleanupStack::PushL(iap2Link); + + iap2Link->SetRecordId(1); + //*iap2Link = 1; + iap2Link->DeleteL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(iap2Link); + + //The IPProto AP number is 4 because we have 3 generated APs and + //we have the default one as well in the DB... + if ( 4 == GetAPNumberL(KIPProtoTierLink, iCDSession_vLatest) ) + { + CCDIAPPrioritySelectionPolicyRecord* iapSelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(iapSelPolRec); + + iapSelPolRec->SetRecordId(1); + iapSelPolRec->LoadL(*iCDSession_v11); + + TInt iap1 = iapSelPolRec->iIap1; + TInt iap2 = iapSelPolRec->iIap2; + + if (iap1 && + NULL == iap2 && + 1 == iapSelPolRec->iIapCount) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(iapSelPolRec); + } + + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3313Step::~CCommsdat3313Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3313Step::CCommsdat3313Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3313Step); + } + +TVerdict CCommsdat3313Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3313Step::doTestStepL() +/** + * @return - TVerdict code + * Delete the default IAPPrioritySelPol record. As a result the default IPProto + * AP should be linked from the IPProto Tier record and from the defualt APPriotySelPol record. + * The default APPrioritySelPol record should be linked form the Network default AP. + */ + { + SetTestStepResult(EFail); + + const TInt KIPProtoTierLink = 0x11800200; + + CCDIAPPrioritySelectionPolicyRecord* defIAPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(defIAPPrioritySelPolRec); + //we just know form the config file that the default IAPPrioritySelPol rec is the 1st one + + defIAPPrioritySelPolRec->SetRecordId(1); + defIAPPrioritySelPolRec->DeleteL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(defIAPPrioritySelPolRec); + + CCDAccessPointRecord* ipprotoDefAPRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(ipprotoDefAPRec); + + ipprotoDefAPRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy; + ipprotoDefAPRec->FindL(*iCDSession_vLatest); + + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + ipprotoTierRec->SetElementId(KIPProtoTierLink); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + if (ipprotoTierRec->iDefaultAccessPoint == (ipprotoDefAPRec->ElementId() & ~KCDMaskShowFieldType)) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(ipprotoTierRec); + CleanupStack::PopAndDestroy(ipprotoDefAPRec); + + return TestStepResult(); + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3314Step::~CCommsdat3314Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3314Step::CCommsdat3314Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3314Step); + } + +TVerdict CCommsdat3314Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3314Step::doTestStepL() +/** + * @return - TVerdict code + * Delete the 1st link from the default IAPPrioritySelPol record. As a result the default IPProto + * AP should be linked from the IPProto Tier record and from the defualt APPriotySelPol record. + * The default APPrioritySelPol record should be linked form the Network default AP. + */ + { + SetTestStepResult(EFail); + + const TInt KIPProtoTierLink = 0x11800200; + + CMDBField* defIAPPrioritySelPolLink = new(ELeave)CMDBField(KCDTIdIap1); + CleanupStack::PushL(defIAPPrioritySelPolLink); + //we just know form the config file that the default IAPPrioritySelPol rec is the 1st one + + defIAPPrioritySelPolLink->SetRecordId(1); + defIAPPrioritySelPolLink->DeleteL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(defIAPPrioritySelPolLink); + + CCDAccessPointRecord* ipprotoDefAPRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(ipprotoDefAPRec); + + ipprotoDefAPRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy; + ipprotoDefAPRec->FindL(*iCDSession_vLatest); + + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + ipprotoTierRec->SetElementId(KIPProtoTierLink); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + if (ipprotoTierRec->iDefaultAccessPoint == (ipprotoDefAPRec->ElementId() & ~KCDMaskShowFieldType)) + { + CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(defAPPrioritySelPolRec); + //we just know form the config file that the default IAPPrioritySelPol rec is the 1st one + + defAPPrioritySelPolRec->SetRecordId(1); + defAPPrioritySelPolRec->LoadL(*iCDSession_vLatest); + + if (0 == defAPPrioritySelPolRec->iApCount) + { + SetTestStepResult(EPass); + } + CleanupStack::PopAndDestroy(defAPPrioritySelPolRec); + } + + CleanupStack::PopAndDestroy(ipprotoTierRec); + CleanupStack::PopAndDestroy(ipprotoDefAPRec); + + return TestStepResult(); + } +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY +//---------------------------------------------------------------------------------------------------------------- + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3315Step::~CCommsdat3315Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3315Step::CCommsdat3315Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3315Step); + } + +TVerdict CCommsdat3315Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3315Step::doTestStepL() +/** + * @return - TVerdict code + * This test step modifies the 1st IAPLink in the default IAPPrioritySelPol record + * to 0. + * + * Modify is called on field container. + */ + { + SetTestStepResult(EFail); + + const TInt KIPProtoTierLink = 0x11800200; + + CMDBField* defIAPPrioritySelPolLink = new(ELeave)CMDBField(KCDTIdIap1); + CleanupStack::PushL(defIAPPrioritySelPolLink); + //we just know form the config file that the default IAPPrioritySelPol rec is the 1st one + + defIAPPrioritySelPolLink->SetRecordId(1); + *defIAPPrioritySelPolLink = 0; + defIAPPrioritySelPolLink->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(defIAPPrioritySelPolLink); + + CCDAccessPointRecord* ipprotoDefAPRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(ipprotoDefAPRec); + + ipprotoDefAPRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy; + ipprotoDefAPRec->FindL(*iCDSession_vLatest); + + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + ipprotoTierRec->SetElementId(KIPProtoTierLink); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + if (ipprotoTierRec->iDefaultAccessPoint == (ipprotoDefAPRec->ElementId() & ~KCDMaskShowFieldType)) + { + CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(defAPPrioritySelPolRec); + //we just know form the config file that the default IAPPrioritySelPol rec is the 1st one + + defAPPrioritySelPolRec->SetRecordId(1); + defAPPrioritySelPolRec->LoadL(*iCDSession_vLatest); + + if (0 == defAPPrioritySelPolRec->iApCount) + { + SetTestStepResult(EPass); + } + CleanupStack::PopAndDestroy(defAPPrioritySelPolRec); + } + + CleanupStack::PopAndDestroy(ipprotoTierRec); + CleanupStack::PopAndDestroy(ipprotoDefAPRec); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- + +CCommsdat3316Step::~CCommsdat3316Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3316Step::CCommsdat3316Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3316Step); + } + +TVerdict CCommsdat3316Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3316Step::doTestStepL() +/** + * @return - TVerdict code + * This test step modifies the 2nd IAPLink in the 2nd IAPPrioritySelPol record + * (not the default one) to 0. + * + * Modify is called on field container. + * This teststep is depending on CCommsdat3315Step + */ + { + SetTestStepResult(EFail); + + const TInt KIPProtoTierLink = 0x11800200; + + CMDBField* defIAPPrioritySelPolLink = new(ELeave)CMDBField(KCDTIdIap2); + CleanupStack::PushL(defIAPPrioritySelPolLink); + + defIAPPrioritySelPolLink->SetRecordId(2); + *defIAPPrioritySelPolLink = 0; + defIAPPrioritySelPolLink->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(defIAPPrioritySelPolLink); + + if (4 == GetAPNumberL(KIPProtoTierLink, iCDSession_vLatest)) + { + CCDAPPrioritySelectionPolicyRecord* aPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(aPPrioritySelPolRec); + + aPPrioritySelPolRec->SetRecordId(2); + aPPrioritySelPolRec->LoadL(*iCDSession_vLatest); + + if ( NULL != aPPrioritySelPolRec->iAp1 && + NULL == aPPrioritySelPolRec->iAp2 && + NULL != aPPrioritySelPolRec->iAp3 && + 3 == aPPrioritySelPolRec->iApCount ) + { + SetTestStepResult(EPass); + } + CleanupStack::PopAndDestroy(aPPrioritySelPolRec); + } + + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3317Step::~CCommsdat3317Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3317Step::CCommsdat3317Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3317Step); + } + +TVerdict CCommsdat3317Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3317Step::doTestStepL() +/** + * @return - TVerdict code + * This test step modifies the 3rd IAPLink in the 3rd IAPPrioritySelPol record + * (not the default one) to 0. Note that this is the last reference to the given + * IPProto AP -> so as a result of the modification the given IPProto AP will be + * deleted. + * + * Modify is called on record container. + * This teststep is depending on CCommsdat3316Step + */ + { + SetTestStepResult(EFail); + + const TInt KIPProtoTierLink = 0x11800200; + + CCDIAPPrioritySelectionPolicyRecord* iAPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(iAPPrioritySelPolRec); + + iAPPrioritySelPolRec->SetRecordId(3); + iAPPrioritySelPolRec->LoadL(*iCDSession_v11); + + iAPPrioritySelPolRec->iIap3 = 0; + + iAPPrioritySelPolRec->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(iAPPrioritySelPolRec); + + if (3 == GetAPNumberL(KIPProtoTierLink, iCDSession_vLatest)) + { + CCDAPPrioritySelectionPolicyRecord* aPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(aPPrioritySelPolRec); + + aPPrioritySelPolRec->SetRecordId(3); + aPPrioritySelPolRec->LoadL(*iCDSession_vLatest); + + if ( NULL != aPPrioritySelPolRec->iAp1 && + NULL != aPPrioritySelPolRec->iAp2 && + NULL == aPPrioritySelPolRec->iAp3 && + 2 == aPPrioritySelPolRec->iApCount ) + { + SetTestStepResult(EPass); + } + CleanupStack::PopAndDestroy(aPPrioritySelPolRec); + } + + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3318Step::~CCommsdat3318Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3318Step::CCommsdat3318Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3318Step); + } + +TVerdict CCommsdat3318Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3318Step::doTestStepL() +/** + * @return - TVerdict code + * This test step delets the 1st IAP link form the 1st IAPPriotySelPol record + * (the default one). At this point the AP link in the IPProto tier record points + * to the default IPProto AP. + * After this the 1st IAP link in the 1st IAPPrioritySelPol record is modified + * again to point to a valid IAP. + * + * The AP link in the IPProto tier has to be modified as well to point to the + * right IPProto AP. + * + * Modify is called on field container. + */ + { + SetTestStepResult(EFail); + + const TInt KIAPNumber = 3; + TBool keepGoing = EFalse; + + CMDBField* defIAPPrioritySelPolLink = new(ELeave)CMDBField(KCDTIdIap1); + CleanupStack::PushL(defIAPPrioritySelPolLink); + + defIAPPrioritySelPolLink->SetRecordId(1); + defIAPPrioritySelPolLink->DeleteL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(defIAPPrioritySelPolLink); + + CCDAccessPointRecord* defApRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(defApRec); + + defApRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy; + + if (defApRec->FindL(*iCDSession_vLatest)) + { + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + ipprotoTierRec->SetRecordId(2); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + if (ipprotoTierRec->iDefaultAccessPoint == (defApRec->ElementId() & ~KCDMaskShowFieldType)) + { + keepGoing = ETrue; + } + + CleanupStack::PopAndDestroy(ipprotoTierRec); + } + CleanupStack::PopAndDestroy(defApRec); + + + if (keepGoing) + { + //do the modification + CMDBField* defIAPPrioritySelPolLink1 = new(ELeave)CMDBField(KCDTIdIap1); + CleanupStack::PushL(defIAPPrioritySelPolLink1); + + defIAPPrioritySelPolLink1->SetRecordId(1); + *defIAPPrioritySelPolLink1 = KIAPNumber; + + defIAPPrioritySelPolLink1->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(defIAPPrioritySelPolLink1); + + CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(defAPPrioritySelPolRec); + + //we just know that it's the 1st record... + defAPPrioritySelPolRec->SetRecordId(1); + defAPPrioritySelPolRec->LoadL(*iCDSession_vLatest); + + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + ipprotoTierRec->SetRecordId(2); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + TInt aPFromTheIPProtoTier = ipprotoTierRec->iDefaultAccessPoint; + TInt defAPPriorioritySelPolLink = defAPPrioritySelPolRec->iAp1; + + if (aPFromTheIPProtoTier == defAPPriorioritySelPolLink) + { + //ok the 2 links are the same. Now let's load the IPProto AP and check + //its' CustomSelectionPolicy. It has to be the same as the IAP number we + //modified the IAPPriorioritySelPol field with + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + apRec->SetElementId(aPFromTheIPProtoTier); + apRec->LoadL(*iCDSession_vLatest); + + if (KIAPNumber == apRec->iCustomSelectionPolicy) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apRec); + } + + CleanupStack::PopAndDestroy(ipprotoTierRec); + CleanupStack::PopAndDestroy(defAPPrioritySelPolRec); + } + + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +//---------------------------------------------------------------------------------------------------------------- + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + +CCommsdat3319Step::~CCommsdat3319Step() +/** + * Destructor + */ + { + delete iCDSession_v11; + delete iCDSession_vLatest; + } + +CCommsdat3319Step::CCommsdat3319Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat3319Step); + } + +TVerdict CCommsdat3319Step::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EFail); + + iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2); +#else + iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1); +#endif + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CCommsdat3319Step::doTestStepL() +/** + * @return - TVerdict code + * This test step delets the 1st IAP link form the 1st IAPPriotySelPol record + * (the default one). At this point the AP link in the IPProto tier record points + * to the default IPProto AP. + * After this the 1st IAP link in the 1st IAPPrioritySelPol record is modified + * again to point to a valid IAP. + * + * The AP link in the IPProto tier has to be modified as well to point to the + * right IPProto AP. + * + * Modify is called on record container. + */ + { + SetTestStepResult(EFail); + + const TInt KIAPNumber = 3; + TBool keepGoing = EFalse; + + CCDIAPPrioritySelectionPolicyRecord* iAPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(iAPPrioritySelPolRec); + + iAPPrioritySelPolRec->SetRecordId(1); + iAPPrioritySelPolRec->DeleteL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(iAPPrioritySelPolRec); + + CCDAccessPointRecord* defApRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(defApRec); + + defApRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy; + + if (defApRec->FindL(*iCDSession_vLatest)) + { + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + ipprotoTierRec->SetRecordId(2); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + if (ipprotoTierRec->iDefaultAccessPoint == (defApRec->ElementId() & ~KCDMaskShowFieldType)) + { + keepGoing = ETrue; + } + + CleanupStack::PopAndDestroy(ipprotoTierRec); + } + CleanupStack::PopAndDestroy(defApRec); + + + if (keepGoing) + { + //do the modification + CCDIAPPrioritySelectionPolicyRecord* iAPPrioritySelPolRec1 = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord)); + CleanupStack::PushL(iAPPrioritySelPolRec1); + + iAPPrioritySelPolRec1->SetRecordId(1); + iAPPrioritySelPolRec1->iIap1 = KIAPNumber; + + iAPPrioritySelPolRec1->ModifyL(*iCDSession_v11); + + CleanupStack::PopAndDestroy(iAPPrioritySelPolRec1); + + CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord)); + CleanupStack::PushL(defAPPrioritySelPolRec); + + //we just know that it's the 1st record... + defAPPrioritySelPolRec->SetRecordId(1); + defAPPrioritySelPolRec->LoadL(*iCDSession_vLatest); + + CCDTierRecord* ipprotoTierRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord)); + CleanupStack::PushL(ipprotoTierRec); + + ipprotoTierRec->SetRecordId(2); + ipprotoTierRec->LoadL(*iCDSession_vLatest); + + TInt aPFromTheIPProtoTier = ipprotoTierRec->iDefaultAccessPoint; + TInt defAPPriorioritySelPolLink = defAPPrioritySelPolRec->iAp1; + + if (aPFromTheIPProtoTier == defAPPriorioritySelPolLink) + { + //ok the 2 links are the same. Now let's load the IPProto AP and check + //its' CustomSelectionPolicy. It has to be the same as the IAP number we + //modified the IAPPriorioritySelPol field with + CCDAccessPointRecord* apRec = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord)); + CleanupStack::PushL(apRec); + + apRec->SetElementId(aPFromTheIPProtoTier); + apRec->LoadL(*iCDSession_vLatest); + + if (KIAPNumber == apRec->iCustomSelectionPolicy) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(apRec); + } + + CleanupStack::PopAndDestroy(ipprotoTierRec); + CleanupStack::PopAndDestroy(defAPPrioritySelPolRec); + } + + return TestStepResult(); + } + +#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY