void CCalAlarmAttachTest::TestFetchEntryAlarmContentL()
    {
    test.Printf(_L("Test fetching entry twice and check it alarm conten\n"));
    _LIT8(KEntryUidFetchEntry, "FetchEntryUid");
    CCalAlarm* alarm = StoreEntryWithAlarmContentLC(KEntryUidFetchEntry());
    RPointerArray<CCalEntry> entries;
    CleanupResetAndDestroyPushL(entries);

    //Fetch the entry and test the alarm  content
    iTestLib->SynCGetEntryViewL().FetchL(KEntryUidFetchEntry(), entries);
    TInt entriesStored = 0;
    iTestLib->SynCGetEntryViewL().StoreL(entries, entriesStored);
    entries.ResetAndDestroy();
    iTestLib->SynCGetEntryViewL().FetchL(KEntryUidFetchEntry(), entries);
    CCalEntry* entry = entries[0];
    test( KSummary() == entry->SummaryL() );
    test( KDescription() == entry->DescriptionL());
    TestAlarmL(entry, KContent(), KMimeType());
    entries.ResetAndDestroy();

    //Close the serve and fetch the entry again
    iTestLib->CloseAgendaServer();
    iTestLib->OpenFileL(KCalName());

    iTestLib->SynCGetEntryViewL().FetchL(KEntryUidFetchEntry(), entries);
    TestAlarmL(entries[0], KContent(), KMimeType());
    CleanupStack::PopAndDestroy(&entries);
    CleanupStack::PopAndDestroy(alarm);
    }
// -----------------------------------------------------------------------------
// CPIMAgnEventAdapter::ReadSummaryFromAgnL
// Reads Agenda entry's summary field and converts it into PIM Item field.
// -----------------------------------------------------------------------------
//
void CPIMAgnEventAdapter::ReadSummaryFromAgnL(MPIMEventItem& aItem,
        CCalEntry& aEntry)
{
    JELOG2(EPim);
    const TDesC& agnSummary = aEntry.SummaryL();
    if (agnSummary != KNullDesC)
    {
        TPIMFieldData fieldData(EPIMEventSummary, KPIMAttrNone,
                                agnSummary.AllocLC());
        aItem.ItemData().AddValueL(fieldData);
        CleanupStack::Pop(); // agnSummary.AllocLC()
    }
}
// -----------------------------------------------------------------------------
// CPIMAgnToDoAdapter::ReadStringFieldsL
// (other items were commented in a header)
// -----------------------------------------------------------------------------
//
void CPIMAgnToDoAdapter::ReadStringFieldsL(MPIMItemData& aData,
        CCalEntry& aEntry)
{
    JELOG2(EPim);
    // Summary is converted to PIM API ToDo summary field
    const TDesC& sum = aEntry.SummaryL();
    if (sum != KNullDesC)
    {
        TPIMFieldData fieldData(EPIMToDoSummary, KPIMAttrNone, sum.AllocLC());
        aData.AddValueL(fieldData);
        CleanupStack::Pop(); // agnSummary.AllocLC()
    }
    // Description is converted to PIM API ToDo note field
    const TDesC& note = aEntry.DescriptionL();
    if (note != KNullDesC)
    {
        TPIMFieldData fieldData(EPIMToDoNote, KPIMAttrNone, note.AllocLC());
        aData.AddValueL(fieldData);
        CleanupStack::Pop(); // AllocLC
    }
}
/**
* Fetches all entries and checks the alarm properties for the child entry.
* There should be two entries, a parent and the child entry.
*
* @param expectedContent The expected content of the child entry.
* @param expectedMimeType The expected mime type of the child entry.
*/
void CCalAlarmAttachTest::FetchEntryL( const TDesC8& expectedContent,
        const TDesC8& expectedMimeType )
    {
	RPointerArray<CCalEntry> entriesFetched;
	CleanupResetAndDestroyPushL(entriesFetched);
	HBufC8* parentGuid1 = KGUID1().AllocLC();
	iTestLib->SynCGetEntryViewL().FetchL(parentGuid1->Des(), entriesFetched);
	
    // 1 parent and 1 child entry.
	test(entriesFetched.Count() == 2); 
	
    // The child entry should be the second entry.
	CCalEntry* childEntry = entriesFetched[1];
	
	TPtrC summary = childEntry->SummaryL();

	// Test if the alarm details are retrieved as expected. 
	TestAlarmL(childEntry, expectedContent, expectedMimeType);

    CleanupStack::PopAndDestroy(parentGuid1);
	CleanupStack::PopAndDestroy(&entriesFetched);
	}