示例#1
0
/**
 * Test SetDbViewContactType can be used for KUidContactICCEntry items.
 * @param aDb Contact database
 */
void TestDatabaseViewL(CContactDatabase& /*aDb*/)
	{
	syncChecker->SetValidateResponseL(MContactSynchroniser::ERead,KErrNone);
	syncChecker->SetValidateWriteResponseL(KErrNone);
	CntTest->CloseDatabase();
	CntTest->DeleteDatabaseL();
	// re-initialise the TLS
	syncChecker->EnableVerboseLoggingL();
	
	CntTest->CreateDatabaseL();	
	CntTest->OpenDatabaseL();
	CContactDatabase& db= *CntTest->Db();   
	
	delete synchroniser;
	synchroniser = CContactTestSynchroniser::NewL();
	// test with GSM ADN phonebook only
	//test(KErrNone == syncChecker->SetGsmPhonebook());

	// Start from clean
	CContactItem* card = CContactCard::NewLC();
	db.AddNewContactL(*card);
	db.CreateContactGroupLC();
	db.CreateOwnCardLC();
	TContactItemId id=CreateICCTemplateL(db);
	test(KErrNone == syncChecker->UpdatePhonebookEntryL(KUidIccGlobalAdnPhonebook, id, KNullContactId));
	TContactItemId templateId = db.ICCTemplateIdL(KUidIccGlobalAdnPhonebook);
	CContactItem* iccTemplate = db.ReadContactLC(templateId);
	CContactICCEntry* iccentry = CContactICCEntry::NewL(*iccTemplate);
	CleanupStack::PopAndDestroy(iccTemplate);
	CleanupStack::PushL(iccentry);
	db.AddNewContactL(*iccentry);
	TContactItemId iccId = iccentry->Id();
	CleanupStack::PopAndDestroy(4); //card,group,owncard,iccentry
	
	test(db.SortedItemsL()->Count() == 5); //default view includes ALL contact types
	CntTest->CloseDatabase();
	delete synchroniser;
	synchroniser = NULL;
	CntTest->OpenDatabaseL();
	CContactDatabase& db1= *CntTest->Db();
	db1.SetDbViewContactType(KUidContactICCEntry);
    TInt some = db1.SortedItemsL()->Count();
	test(db1.SortedItemsL()->Count() == 1);
	test((*db1.SortedItemsL())[0]==iccId);
	}