GLDEF_C TInt E32Main() { __UHEAP_MARK; CActiveScheduler* scheduler=new CActiveScheduler; if (scheduler) { CActiveScheduler::Install(scheduler); CTrapCleanup* cleanup=CTrapCleanup::New(); if (cleanup) { test.Title(); test.Start(_L("@SYMTESTCaseID:PIM-T-DATACOMPATIBILITY-0001 T_DataCompatibility")); TRAPD(err, DoTestL()); // delete database files if they are not cleaned up elsewhere TRAP_IGNORE(CleanupFilesL() ); test(err == KErrNone); test.End(); User::After(1000000); // wait 1 second and exit test.Close(); delete cleanup; } delete scheduler; } __UHEAP_MARKEND; return KErrNone; }
void DoOOMTestL(TTestFunction aTestFunction) { TInt ret = KErrNoMemory; TInt failAt = 0; while(ret != KErrNone) { failAt += 1 + failAt/30; test.Printf(_L("OOM step: %d\n"), failAt); __UHEAP_SETFAIL(RHeap::EDeterministic, failAt); __UHEAP_MARK; TRAP(ret, aTestFunction(ETrue)); __UHEAP_MARKEND; __UHEAP_RESET; if (ret != KErrNoMemory && ret != KErrNone) { test.Printf(_L("OOM test failed: %d\n"),ret); } if (!(ret == KErrNoMemory || ret == KErrNone) ) { TRAP_IGNORE(CleanupFilesL() ); } test(ret == KErrNoMemory || ret == KErrNone); } }
GLDEF_C TInt E32Main() { __UHEAP_MARK; // The dummy is just to get rid of linker warning LNK4089 when building for WINS TVolumeInfo Dummy; Dummy.iSize = 1; CActiveScheduler* scheduler=new CActiveScheduler; if (scheduler) { CActiveScheduler::Install(scheduler); CTrapCleanup* cleanup=CTrapCleanup::New(); if (cleanup) { TRAP_IGNORE(doMainL() ); // cleanup files even if doMainL() leaves TRAP_IGNORE(CleanupFilesL() ); delete cleanup; } delete scheduler; } __UHEAP_MARKEND; return KErrNone; }
void CViewTester::HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent) /** * for each of the Remote and Filtered Views we wait for certain events * iState Event * EWait_RemoteView Named Remote View to become EReady * EWait_FilteredView Filtered View to become EReady * EWait_SortViewEvents Named Remote View to become EUnavailable, and then ESortOrderChanged * Filtered View to become EUnavailable, and then ESortOrderChanged * The last expected event in each state calls NextState() for the test state machine. * Any other event, or any event in another test state, is an error. */ { // view reference is correct? if(&aView != iNamedRemoteView && &aView != iFilteredView) { iTest.Printf(_L("test error: event for unknown View\n")); User::Invariant(); } TBool expectedEvent = EFalse; // assume this is not the event we are looking for // is this the/an event we are expecting now? switch(aEvent.iEventType) { case TContactViewEvent::EReady: if(iState == EWait_RemoteView && &aView == iNamedRemoteView) { // Remote View is now ready, go to next test state iRemoteViewEvent = aEvent.iEventType; iTest.Printf(_L("event: Remote View ready\n")); expectedEvent = ETrue; NextState(); } else if(iState == EWait_FilteredView && &aView == iFilteredView) { // Filter View is now ready, go to next test state iFilteredViewEvent = aEvent.iEventType; iTest.Printf(_L("event: Filtered View ready\n")); expectedEvent = ETrue; NextState(); } break; case TContactViewEvent::EUnavailable: if(iState == EWait_SortViewEvents && &aView == iNamedRemoteView) { // Remote View, but correct event? if(iRemoteViewEvent == TContactViewEvent::EReady) { iRemoteViewEvent = aEvent.iEventType; iTest.Printf(_L("event: Remote View unavailable\n")); expectedEvent = ETrue; } } else if(iState == EWait_SortViewEvents && &aView == iFilteredView) { if(iFilteredViewEvent == TContactViewEvent::EReady) { iFilteredViewEvent = aEvent.iEventType; iTest.Printf(_L("event: Filtered View unavailable\n")); expectedEvent = ETrue; } } break; case TContactViewEvent::ESortOrderChanged: if(iState == EWait_SortViewEvents) { if(&aView == iNamedRemoteView && iRemoteViewEvent == TContactViewEvent::EUnavailable) { iRemoteViewEvent = aEvent.iEventType; iTest.Printf(_L("event: Remote View sort order changed\n")); expectedEvent = ETrue; } else if(&aView == iFilteredView && iFilteredViewEvent == TContactViewEvent::EUnavailable) { iFilteredViewEvent = aEvent.iEventType; iTest.Printf(_L("event: Filtered View sort order changed\n")); expectedEvent = ETrue; } // both views now Re-Sorted ? if(iRemoteViewEvent == TContactViewEvent::ESortOrderChanged && iFilteredViewEvent == TContactViewEvent::ESortOrderChanged) { NextState(); } } break; default: // unexpected event break; } if(!expectedEvent) { // valid View, but unexpected event iTest.Printf(_L("test error: unexpected View event\n")); TRAP_IGNORE(CleanupFilesL() ); iTest( EFalse ); } return; }
void CViewTester::RunL() { switch (iState) { case ECreate_RemoteView: iTest.Next(_L("Named Remote View creation View Ready event")); iNamedRemoteView = CContactNamedRemoteView::NewL( *this, KViewName, iDb, iSortOrder[0], EContactsOnly ); // Wait for view to be created iTimer.After( iStatus, KViewWaitTimeout ); SetActive(); NextState(); break; // It is an error for the RTimer to trigger before the state has changed. case EWait_RemoteView: iTest.Printf(_L("Timeout waiting for Remote View to be created")); TRAP_IGNORE(CleanupFilesL() ); iTest( EFalse); // failed break; case ECreate_FilteredView: iTest.Next(_L("Filtered View creation View Ready event")); iFilteredView = CContactFilteredView::NewL( *this, iDb, *iNamedRemoteView, CContactDatabase::ESmsable ); // Wait for view to be created iTimer.After( iStatus, KViewWaitTimeout ); SetActive(); NextState(); break; // It is an error for the RTimer to trigger before the state has changed. case EWait_FilteredView: iTest.Printf(_L("Timeout waiting for Filtered View to be created")); TRAP_IGNORE(CleanupFilesL() ); iTest( EFalse ); // failed break; case EChangeSortOrder: iTest.Next(_L("Re-sort Remote View and Filtered View, wait for view events")); iNamedRemoteView->ChangeSortOrderL( iSortOrder[1] ); // Wait for views to be resorted iTimer.After( iStatus, KViewWaitTimeout ); SetActive(); NextState(); break; // It is an error for the RTimer to trigger before the state has changed. case EWait_SortViewEvents: // Give information on what went wrong: iTest.Printf(_L("Test Timeout waiting for Filtered and Remote View to be resorted:\n")); switch(iRemoteViewEvent) { case TContactViewEvent::EReady: iTest.Printf(_L(" Named Remote View; sort not started\n")); break; case TContactViewEvent::EUnavailable: iTest.Printf(_L(" Named Remote View; sort not finished\n")); break; case TContactViewEvent::ESortOrderChanged: // Remote View Sorted & Ready break; default: // error in test User::Invariant(); } switch(iFilteredViewEvent) { case TContactViewEvent::EReady: iTest.Printf(_L(" Filtered View; sort not started\n")); break; case TContactViewEvent::EUnavailable: iTest.Printf(_L(" Filtered View; sort not finished\n")); break; case TContactViewEvent::ESortOrderChanged: // Filtered View Sorted & Ready break; default: // error in test User::Invariant(); } TRAP_IGNORE(CleanupFilesL() ); iTest( EFalse ); // failed break; case EFinished: CActiveScheduler::Stop(); // we're done. break; default: ASSERT(EFalse); break; } }