--- /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 <e32test.h>
+#include <commsdattypesv1_1_partner.h>
+#include <commsdattypeinfov1_1_internal.h>
+
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+namespace
+ {
+
+TInt GetAPNumberL(const TInt aTierValaue, CommsDat::CMDBSession* aCDSession_vLatest)
+ {
+ CMDBRecordSet<CCDAccessPointRecord>* ipprotoAPs = new(ELeave)CMDBRecordSet<CCDAccessPointRecord>(KCDTIdAccessPointRecord);
+ CleanupStack::PushL(ipprotoAPs);
+
+ CCDAccessPointRecord* primedIPProtoAP = static_cast<CCDAccessPointRecord*>(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*>(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<CCDIAPRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(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<CCDIAPRecord*>(GetConnectedRecordL(*iCDSession, selPolRecord->iIap1));
+ CleanupStack::PushL(iapRecord);
+
+
+ /*selPolRecord->iIap1.LoadL(*iCDSession);
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(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<CCDAccessPointRecord*>(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<CCDAccessPointRecord*>(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<CCDSelectionPolicyRecordBase*>(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy));
+ CleanupStack::PushL(selPolRecord);
+
+
+ /*apRecord->iSelectionPolicy.LoadL(*iCDSession);
+ CCDSelectionPolicyRecordBase* selPolRecord = static_cast<CCDSelectionPolicyRecordBase*>(apRecord->iSelectionPolicy);
+ */
+
+ TESTL(TPtrC(selPolRecord->iRecordName) == KSelName1);
+
+ //Cast to the already known type
+ CCDIAPPrioritySelectionPolicyRecord* iapSelPolRec = static_cast<CCDIAPPrioritySelectionPolicyRecord*>(selPolRecord);
+
+ //This record has been stored by CCommsdat100Step
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(GetConnectedRecordL(*iCDSession, iapSelPolRec->iIap3));
+ CleanupStack::PushL(iapRecord);
+
+
+ /*iapSelPolRec->iIap3.LoadL(*iCDSession);
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(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<CCDAccessPointRecord*>(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<CCDSelectionPolicyRecordBase*>(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy));
+ CleanupStack::PushL(selPolRecord);
+
+ /*apRecord->iSelectionPolicy.LoadL(*iCDSession);
+ CCDSelectionPolicyRecordBase* selPolRecord = static_cast<CCDSelectionPolicyRecordBase*>(apRecord->iSelectionPolicy);
+ */
+ TESTL(TPtrC(selPolRecord->iRecordName) == KSelName1);
+
+ //Build the list of IDs
+ RArray<TInt> iapIDs;
+ CleanupClosePushL(iapIDs);
+
+ const SRecordTypeInfo* recordInfo = selPolRecord->GetRecordInfo();
+ CMDBRecordLink<CCDIAPRecord>* 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<CMDBRecordLink<CCDIAPRecord>*>(selPolRecord->GetFieldByIdL((recordInfo + index)->iTypeId))) != NULL;
+ index++ )
+ {
+ */
+ TInt typeId = (recordInfo + index)->iTypeId ;
+ while ( typeId != NULL && typeId <= KCDTIdIap3 )
+ {
+ iapRecordLink = static_cast<CMDBRecordLink<CCDIAPRecord>*>(selPolRecord->GetFieldByIdL(typeId));
+
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(GetConnectedRecordL(*iCDSession, *iapRecordLink));
+ //iapRecordLink->LoadL(*iCDSession);
+ //CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(*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<CCDAccessPointRecord*>(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<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+ CleanupStack::PushL(iapRecord);
+ iapRecord->SetRecordId(KRecordId);
+ iapRecord->LoadL(*iCDSession);
+
+ if(static_cast<TInt>(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<CCDAccessPointRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy));
+ //CleanupStack::PushL(selPolRecord);
+
+ apRecord->iSelectionPolicy.LoadL(*iCDSession);
+ //CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast<CCDIAPPrioritySelectionPolicyRecord*>(apRecord->iSelectionPolicy);
+
+ CCDSelectionPolicyRecordBase* selPolRecord1 = static_cast<CCDSelectionPolicyRecordBase*>(apRecord->iSelectionPolicy);
+
+ CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast<CCDIAPPrioritySelectionPolicyRecord*>(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<CCDAccessPointRecord*>(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<CCDAPPrioritySelectionPolicyRecord*>(CCDConnectionPrefsRecord::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+ CCDAPPrioritySelectionPolicyRecord* selPolRecord = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(selPolRecord);
+ selPolRecord->SetRecordId(KRecordId);
+ selPolRecord->LoadL(*iCDSession);
+
+ TESTL(TPtrC(selPolRecord->iRecordName) == KSelName2);
+
+ //Build the list of IDs
+ RArray<TInt> iapIDs;
+ CleanupClosePushL(iapIDs);
+
+// CMDBField<TUint32>* theAp = &selPolRecord->iAp1;
+ CMDBRecordLink<CCDAccessPointRecord>* 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<TInt>(*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<CCDAccessPointRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(GetConnectedRecordL(*iCDSession, apRecord->iSelectionPolicy));
+ //CleanupStack::PushL(selPolRecord);
+
+
+ apRecord->iSelectionPolicy.LoadL(*iCDSession);
+ //CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast<CCDIAPPrioritySelectionPolicyRecord*>(apRecord->iSelectionPolicy);
+ CCDSelectionPolicyRecordBase* selPolRecord1 = static_cast<CCDSelectionPolicyRecordBase*>(apRecord->iSelectionPolicy);
+
+ CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast<CCDIAPPrioritySelectionPolicyRecord*>(selPolRecord1);
+
+ TESTL(TPtrC(selPolRecord->iRecordName) == KSelName2);
+
+ //Build the list of IDs
+ RArray<TInt> iapIDs;
+ CleanupClosePushL(iapIDs);
+
+ CMDBRecordLink<CCDIAPRecord>* theIap = &selPolRecord->iIap1;
+ CMDBField<TUint32>* 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<TInt>(*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<TBool>* promptForSnapField = new(ELeave) CMDBField<TBool>(KCDTIdPromptForSnap);
+ CleanupStack::PushL(promptForSnapField);
+ promptForSnapField->SetRecordId(1);
+
+ //create the container for the prompt field in the tier rec.
+
+ CMDBField<TBool>* promptTierField = new(ELeave) CMDBField<TBool>(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<TBool>* promptForSnapField2 = new(ELeave) CMDBField<TBool>(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<CCDGlobalSettingsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdGlobalSettingsRecord));
+ CleanupStack::PushL(gsRecord);
+
+ gsRecord->SetRecordId(1);
+ gsRecord->LoadL(*iCDSession_v11);
+
+ CMDBField<TBool>* 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<CCDAccessPointRecord>* gsDefaultSnap = new (ELeave) CMDBRecordLink<CCDAccessPointRecord>(KCDTIdDefaultSnap);
+ CMDBRecordLink<CCDAccessPointRecord>* tierDefaultAP = new (ELeave) CMDBRecordLink<CCDAccessPointRecord>(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<CCDAccessPointRecord>* gsDefaultSnap1 = new (ELeave) CMDBRecordLink<CCDAccessPointRecord>(KCDTIdDefaultSnap);
+ CMDBRecordLink<CCDAccessPointRecord>* tierDefaultAP1 = new (ELeave) CMDBRecordLink<CCDAccessPointRecord>(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<CCDGlobalSettingsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdGlobalSettingsRecord));
+ CCDTierRecord* tierRecord = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+
+ CleanupStack::PushL(gsRecord);
+ CleanupStack::PushL(tierRecord);
+
+ gsRecord->SetRecordId(1);
+ gsRecord->LoadL(*iCDSession_v11);
+
+ tierRecord->SetRecordId(1);
+ tierRecord->LoadL(*iCDSession_vLatest);
+
+ CMDBRecordLink<CCDAccessPointRecord>* gsDefaultSnap = &(gsRecord->iDefaultSnap);
+ CMDBRecordLink<CCDAccessPointRecord>* 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<CCDIAPRecord*>(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<TDesC>* appriorityNameField = new (ELeave) CMDBField<TDesC>(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<TDesC>* iapSelPolFieldName = &(iapSelPolRecord->iRecordName);
+ CMDBField<TDesC>* 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<TInt>* custSelPol = new (ELeave) CMDBField<TInt>(KCDTIdCustomSelectionPolicy);
+ CleanupStack::PushL(custSelPol);
+
+ CMDBRecordLink<CCDAccessPointRecord>* apXField = &(apSelPolRecord->iAp1);
+ CMDBRecordLink<CCDIAPRecord>* 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<TDesC>* appriorityNameField = new (ELeave) CMDBField<TDesC>(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<TDesC>* iapSelPolFieldName = &(iapSelPolRecord->iRecordName);
+ CMDBField<TDesC>* 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<TInt>* custSelPol = new (ELeave) CMDBField<TInt>(KCDTIdCustomSelectionPolicy);
+ CleanupStack::PushL(custSelPol);
+
+ CMDBRecordLink<CCDAccessPointRecord>* apXField = &(apSelPolRecord->iAp1);
+ CMDBRecordLink<CCDIAPRecord>* 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<TInt> linkedIAPIds;
+ CleanupClosePushL(linkedIAPIds);
+
+ CMDBRecordLink<CCDAccessPointRecord>* 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<CCDAccessPointRecord*>(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<TInt> linkedIAPIds;
+ CleanupClosePushL(linkedIAPIds);
+
+ CMDBRecordLink<CCDAccessPointRecord>* 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<CCDAccessPointRecord*>(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<CCDTierRecord*>(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<CCDAccessPointRecord*>(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<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+ CleanupStack::PushL(linkedIAP);
+
+ linkedIAP->SetRecordId(3);
+ linkedIAP->LoadL(*iCDSession_v11);
+
+ CMDBRecordLink<CCDIAPRecord>* iap5Link = new(ELeave) CMDBRecordLink<CCDIAPRecord>(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<CCDIAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(iapSelPolRec);
+
+ CCDAPPrioritySelectionPolicyRecord* apSelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(apSelPolRec);
+
+ iapSelPolRec->SetRecordId(2);
+ apSelPolRec->SetRecordId(2);
+
+ iapSelPolRec->LoadL(*iCDSession_v11);
+ apSelPolRec->LoadL(*iCDSession_vLatest);
+
+ CMDBField<TDesC>* iapSelPolFieldName = &(iapSelPolRec->iRecordName);
+ CMDBField<TDesC>* 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<TInt>* custSelPol = new (ELeave) CMDBField<TInt>(KCDTIdCustomSelectionPolicy);
+ CleanupStack::PushL(custSelPol);
+
+ CMDBRecordLink<CCDAccessPointRecord>* apXField = &(apSelPolRec->iAp1);
+ CMDBRecordLink<CCDIAPRecord>* 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<CCDIAPRecord>* iap5Link = new(ELeave) CMDBRecordLink<CCDIAPRecord>(KCDTIdIap5);
+ CleanupStack::PushL(iap5Link);
+
+ iap5Link->SetRecordId(2);
+ *iap5Link = 1;
+
+ iap5Link->ModifyL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(iap5Link);
+
+ CCDIAPPrioritySelectionPolicyRecord* selPolRecord = static_cast<CCDIAPPrioritySelectionPolicyRecord*>(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<CCDIAPRecord>* iapLinkField = new(ELeave) CMDBRecordLink<CCDIAPRecord>(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<CCDIAPRecord>* iapLinkField = new(ELeave) CMDBRecordLink<CCDIAPRecord>(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<CCDIAPRecord>* iapLinkField = new(ELeave) CMDBRecordLink<CCDIAPRecord>(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<TUint32>* iapCount = new(ELeave) CMDBField<TUint32>(KCDTIdIapCount);
+ CleanupStack::PushL(iapCount);
+
+ iapCount->SetRecordId(2);
+ *iapCount = 2;
+
+ iapCount->ModifyL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(iapCount);
+
+ CMDBField<TUint32>* iapCount1 = new(ELeave) CMDBField<TUint32>(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<CCDIAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(selPolRecord);
+
+ selPolRecord->SetRecordId(3);
+ selPolRecord->LoadL(*iCDSession_v11);
+
+ CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(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<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(apRec1);
+
+ apRec1->SetRecordId(2);
+ apRec1->LoadL(*iCDSession_v11);
+
+ CMDBRecordLink<CCDSelectionPolicyRecordBase>* 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<CCDIAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(selPolRecord);
+
+ selPolRecord->SetRecordId(4);
+ selPolRecord->LoadL(*iCDSession_v11);
+
+ CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(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<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(apRec1);
+
+ apRec1->SetRecordId(3);
+ apRec1->LoadL(*iCDSession_v11);
+
+ CMDBRecordLink<CCDSelectionPolicyRecordBase>* 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<CCDIAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(selPolRecord);
+
+ selPolRecord->SetRecordId(4);
+ selPolRecord->LoadL(*iCDSession_v11);
+
+ CMDBRecordLink<CCDSelectionPolicyRecordBase>* apSelPolField = new(ELeave)CMDBRecordLink<CCDSelectionPolicyRecordBase>(KCDTIdSelectionPolicy);
+ CleanupStack::PushL(apSelPolField);
+
+ apSelPolField->SetRecordId(3);
+ *apSelPolField = selPolRecord->ElementId();
+
+ apSelPolField->ModifyL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(apSelPolField);
+ CleanupStack::PopAndDestroy(selPolRecord);
+
+
+ CMDBRecordLink<CCDSelectionPolicyRecordBase>* apSelPolField1 = new(ELeave)CMDBRecordLink<CCDSelectionPolicyRecordBase>(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<TInt>* gidField = new(ELeave)CMDBField<TInt>(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<TDesC>* name = new(ELeave)CMDBField<TDesC>(KCDTIdAccessPointRecord | KCDTIdRecordName);
+ CleanupStack::PushL(name);
+
+ name->SetRecordId(1);
+ name->SetMaxLengthL(KName().Length());
+ name->SetL(KName);
+
+ name->ModifyL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(name);
+
+ CMDBField<TDesC>* name1 = new(ELeave)CMDBField<TDesC>(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<CCDAccessPointRecord*>(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<CCDAccessPointRecord*>(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<CCDAccessPointRecord*>(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<CCDAccessPointRecord*>(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<CCDSelectionPolicyRecordBase>* selPolField = new(ELeave)CMDBRecordLink<CCDSelectionPolicyRecordBase>(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<CCDSelectionPolicyRecordBase>* selPolField = new(ELeave)CMDBRecordLink<CCDSelectionPolicyRecordBase>(KCDTIdSelectionPolicy);
+ CleanupStack::PushL(selPolField);
+
+ selPolField->SetRecordId(1);
+
+ selPolField->DeleteL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(selPolField);
+
+
+ CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(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<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(apRec);
+
+ apRec->SetRecordId(2);
+ apRec->DeleteL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(apRec);
+
+ CCDAccessPointRecord* apRec1 = static_cast<CCDAccessPointRecord*>(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<TInt>* iap2Link = new(ELeave)CMDBField<TInt>(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<CCDIAPPrioritySelectionPolicyRecord*>(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<TInt>* iap2Link = new(ELeave)CMDBField<TInt>(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<CCDIAPPrioritySelectionPolicyRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(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<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(ipprotoDefAPRec);
+
+ ipprotoDefAPRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy;
+ ipprotoDefAPRec->FindL(*iCDSession_vLatest);
+
+ CCDTierRecord* ipprotoTierRec = static_cast<CCDTierRecord*>(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<TInt>* defIAPPrioritySelPolLink = new(ELeave)CMDBField<TInt>(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<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(ipprotoDefAPRec);
+
+ ipprotoDefAPRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy;
+ ipprotoDefAPRec->FindL(*iCDSession_vLatest);
+
+ CCDTierRecord* ipprotoTierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+ CleanupStack::PushL(ipprotoTierRec);
+
+ ipprotoTierRec->SetElementId(KIPProtoTierLink);
+ ipprotoTierRec->LoadL(*iCDSession_vLatest);
+
+ if (ipprotoTierRec->iDefaultAccessPoint == (ipprotoDefAPRec->ElementId() & ~KCDMaskShowFieldType))
+ {
+ CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(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<TInt>* defIAPPrioritySelPolLink = new(ELeave)CMDBField<TInt>(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<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(ipprotoDefAPRec);
+
+ ipprotoDefAPRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy;
+ ipprotoDefAPRec->FindL(*iCDSession_vLatest);
+
+ CCDTierRecord* ipprotoTierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+ CleanupStack::PushL(ipprotoTierRec);
+
+ ipprotoTierRec->SetElementId(KIPProtoTierLink);
+ ipprotoTierRec->LoadL(*iCDSession_vLatest);
+
+ if (ipprotoTierRec->iDefaultAccessPoint == (ipprotoDefAPRec->ElementId() & ~KCDMaskShowFieldType))
+ {
+ CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(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<TInt>* defIAPPrioritySelPolLink = new(ELeave)CMDBField<TInt>(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<CCDAPPrioritySelectionPolicyRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(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<CCDAPPrioritySelectionPolicyRecord*>(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<TInt>* defIAPPrioritySelPolLink = new(ELeave)CMDBField<TInt>(KCDTIdIap1);
+ CleanupStack::PushL(defIAPPrioritySelPolLink);
+
+ defIAPPrioritySelPolLink->SetRecordId(1);
+ defIAPPrioritySelPolLink->DeleteL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(defIAPPrioritySelPolLink);
+
+ CCDAccessPointRecord* defApRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(defApRec);
+
+ defApRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy;
+
+ if (defApRec->FindL(*iCDSession_vLatest))
+ {
+ CCDTierRecord* ipprotoTierRec = static_cast<CCDTierRecord*>(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<TInt>* defIAPPrioritySelPolLink1 = new(ELeave)CMDBField<TInt>(KCDTIdIap1);
+ CleanupStack::PushL(defIAPPrioritySelPolLink1);
+
+ defIAPPrioritySelPolLink1->SetRecordId(1);
+ *defIAPPrioritySelPolLink1 = KIAPNumber;
+
+ defIAPPrioritySelPolLink1->ModifyL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(defIAPPrioritySelPolLink1);
+
+ CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(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<CCDTierRecord*>(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<CCDAccessPointRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(iAPPrioritySelPolRec);
+
+ iAPPrioritySelPolRec->SetRecordId(1);
+ iAPPrioritySelPolRec->DeleteL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(iAPPrioritySelPolRec);
+
+ CCDAccessPointRecord* defApRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+ CleanupStack::PushL(defApRec);
+
+ defApRec->iCustomSelectionPolicy = CCDAccessPointRecord::KNoPolicy;
+
+ if (defApRec->FindL(*iCDSession_vLatest))
+ {
+ CCDTierRecord* ipprotoTierRec = static_cast<CCDTierRecord*>(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<CCDIAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord));
+ CleanupStack::PushL(iAPPrioritySelPolRec1);
+
+ iAPPrioritySelPolRec1->SetRecordId(1);
+ iAPPrioritySelPolRec1->iIap1 = KIAPNumber;
+
+ iAPPrioritySelPolRec1->ModifyL(*iCDSession_v11);
+
+ CleanupStack::PopAndDestroy(iAPPrioritySelPolRec1);
+
+ CCDAPPrioritySelectionPolicyRecord* defAPPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(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<CCDTierRecord*>(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<CCDAccessPointRecord*>(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