telephonyserverplugins/common_tsy/test/component/src/cctsyphonebookstorefu.cpp
branchRCL_3
changeset 21 2492a6e4aed7
parent 17 3f227a47ad75
--- a/telephonyserverplugins/common_tsy/test/component/src/cctsyphonebookstorefu.cpp	Wed Apr 14 17:11:46 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsyphonebookstorefu.cpp	Tue Apr 27 17:51:07 2010 +0300
@@ -33,7 +33,8 @@
 	{
 	SUB_SUITE;
 	ADD_TEST_STEP_ISO_CPP(CCTsyPhoneBookStoreFU, TestRead0001L);
-	ADD_TEST_STEP_ISO_CPP(CCTsyPhoneBookStoreFU, TestRead0001bL);
+    ADD_TEST_STEP_ISO_CPP(CCTsyPhoneBookStoreFU, TestRead0001bL);
+    ADD_TEST_STEP_ISO_CPP(CCTsyPhoneBookStoreFU, TestRead0001cL);
 	ADD_TEST_STEP_ISO_CPP(CCTsyPhoneBookStoreFU, TestRead0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyPhoneBookStoreFU, TestRead0003L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyPhoneBookStoreFU, TestRead0004L);
@@ -462,6 +463,114 @@
 
 
 /**
+@SYMTestCaseID BA-CTSY-PBSTR-PBSR-0001c
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support for Read after GetInfo requested before phonebook is ready
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhoneBookStore::Read for SDN phonebook
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyPhoneBookStoreFU::TestRead0001cL()
+    {
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhone2L();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+    
+    RBuf8 data2;
+    CleanupClosePushL(data2);
+
+    TName name(KETelIccSdnPhoneBook);
+    RMobilePhoneBookStore bookStore;
+    CleanupClosePushL(bookStore);
+    
+    TMockLtsyPhoneBookData0 storeInitData(name);
+    storeInitData.SerialiseL(data);
+    iMockLTSY.ExpectL(EMmTsyPhoneBookStoreInitIPC, data);   
+
+    TInt ret = bookStore.Open(iPhone, name);    
+    
+    ASSERT_EQUALS(KErrNone, ret);   
+    
+    TRequestStatus requestStatus;
+    TRequestStatus mockLtsyStatus;
+    RMobilePhoneBookStore::TMobilePhoneBookInfoV1 bookInfo;
+    RMobilePhoneBookStore::TMobilePhoneBookInfoV1Pckg bookPckg(bookInfo);
+    bookStore.GetInfo(requestStatus, bookPckg);     
+    
+    ASSERT_EQUALS(KRequestPending, requestStatus.Int());    
+    User::After(KOneSecond);
+    ASSERT_EQUALS(KRequestPending, requestStatus.Int());    
+    
+
+    CStorageInfoData storageData;
+    SetStorageInfoData(storageData);
+    storageData.iSDNNumOfEntries = 20;
+    
+    TMockLtsyPhoneBookData1< CStorageInfoData > retStoreInitC(name, storageData); 
+    retStoreInitC.SerialiseL(data2);
+    iMockLTSY.CompleteL(EMmTsyPhoneBookStoreInitIPC, KErrNone, data2, 0);
+
+    TInt usedEntries(12);
+    data.Close();
+    TMockLtsyPhoneBookData0 tsyData(name);           
+    tsyData.SerialiseL(data);
+
+    iMockLTSY.ExpectL(EMmTsyPhoneBookStoreGetInfoIPC, data);
+    ASSERT_EQUALS(KRequestPending, requestStatus.Int());    
+    User::After(KOneSecond);
+    ASSERT_EQUALS(KRequestPending, requestStatus.Int());
+    TMockLtsyPhoneBookData1< TInt > styData2(name, usedEntries);
+    data2.Close();    
+    styData2.SerialiseL(data2);
+    iMockLTSY.CompleteL(EMmTsyPhoneBookStoreGetInfoIPC, KErrNone, data2, 10);
+
+    User::WaitForRequest(requestStatus);        
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+    
+    AssertMockLtsyStatusL();
+    
+    // Read from the SIM
+    TInt index = 1;
+    TInt numEntries = 1;
+    RMobilePhoneBookStore::TPBIndexAndNumEntries indexAndEntries = {index, numEntries };
+    
+    TMockLtsyPhoneBookData1< RMobilePhoneBookStore::TPBIndexAndNumEntries>  ltsyData(name, indexAndEntries);
+    data.Close();
+    ltsyData.SerialiseL(data);
+
+    CArrayPtrSeg<CPhoneBookStoreEntry>* cache = new(ELeave) CArrayPtrSeg<CPhoneBookStoreEntry>( 1 );
+    CleanupStack::PushL(cache);  
+
+    
+    TMockLtsyPhoneBookData1< CArrayPtrSeg<CPhoneBookStoreEntry>* > ArrayData2(name, cache);
+    data2.Close();
+    ArrayData2.SerialiseL(data2);
+    
+    iMockLTSY.ExpectL(EMmTsyPhoneBookStoreReadIPC, data);  
+    
+    
+    TBuf8<200> buf2;             
+    bookStore.Read(requestStatus, index, numEntries, buf2);
+    
+    iMockLTSY.CompleteL(EMmTsyPhoneBookStoreReadIPC, KErrNone, data2, 0);
+    
+    User::WaitForRequest(requestStatus);        
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());   
+    
+
+    CleanupStack::PopAndDestroy(5, this); // data, data2, this...   
+
+    }
+
+
+/**
 @SYMTestCaseID BA-CTSY-PBSTR-PBSR-0002
 @SYMComponent  telephony_ctsy
 @SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhoneBookStore::Read for ADN phonebook