landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp37.cpp
branchRCL_3
changeset 44 2b4ea9893b66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp37.cpp	Tue Aug 31 15:37:04 2010 +0300
@@ -0,0 +1,541 @@
+/*
+* Copyright (c) 2005 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: 
+*   ?description_line
+*
+*/
+
+
+//  INCLUDES
+#include "FT_CPosTp37.h"
+#include <EPos_CPosLandmarkDatabase.h> 
+#include <EPos_CPosLmCompositeCriteria.h>
+#include <EPos_CPosLmCategoryCriteria.h>
+#include <EPos_CPosLmCatNameCriteria.h>
+#include <EPos_CPosLmTextCriteria.h>
+#include <EPos_CPosLmIdListCriteria.h>
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPosTp37::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp37::CloseTest()
+    {
+    iLog->Log(_L("CloseTest"));
+    delete iDatabase;
+    iDatabase=NULL;
+
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    }
+
+// ---------------------------------------------------------
+// CPosTp37::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp37::StartL()
+    {
+    TTime startTime;
+    TTime stopTime;
+
+    startTime.UniversalTime();
+    // Delete "c:\\system\\data\\eposlm.ldb"
+    RemoveDefaultDbL();
+    
+    iDatabase = UseGeneratedDbFileL();
+    
+    if (iDatabase->IsInitializingNeeded())
+       {
+       ExecuteAndDeleteLD(iDatabase->InitializeL());
+       }
+
+    TInt err = KErrNone;
+
+    TRAP(err, DoErrorTestL(0));
+    if (err != KErrArgument) {iLog->Log(_L("Wrong error1"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+    TRAP(err, DoErrorTestL(1));
+    if (err != KErrNotSupported) {iLog->Log(_L("Wrong error2")); iErrorsFound++;};
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+    TRAP(err, DoErrorTestL(2));
+    if (err != KErrNotSupported) {iLog->Log(_L("Wrong error3"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+
+    TRAP(err, DoErrorTest3L(0));
+    if (err != KErrArgument) {iLog->Log(_L("Wrong error5"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+    TRAP(err, DoErrorTest3L(1));
+    if (err != KErrNotSupported) {iLog->Log(_L("Wrong error6"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+    TRAP(err, DoErrorTest3L(2));
+    if (err != KErrArgument) {iLog->Log(_L("Wrong error7"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+    TRAP(err, DoErrorTest3L(3));
+    if (err != KErrNotSupported) {iLog->Log(_L("Wrong error8"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+    
+    TRAP(err, DoErrorTest3L(4));
+    if (err != KErrArgument) {iLog->Log(_L("Wrong error9"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+
+    TRAP(err, DoErrorTest4L(0));
+    if (err != KErrArgument) {iLog->Log(_L("Wrong error10"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+
+    TRAP(err, DoErrorTest4L(1));
+    if (err != KErrNotSupported) {iLog->Log(_L("Wrong error11"));iErrorsFound++;}
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    err = KErrNone;
+
+    stopTime.UniversalTime();
+    TTimeIntervalMicroSeconds executionTime = 
+        stopTime.MicroSecondsFrom(startTime);
+
+    TInt resse = executionTime.Int64()/1000000;
+    TBuf<100> buf;
+    buf.Format(_L("TP37 took %d seconds"), resse);
+    iLog->Log(buf);
+
+    if (iErrorsFound != KErrNone) 
+        {
+        iLog->Log(_L("Errors found in TP37"));
+        User::Leave(-1);
+        }
+
+	}
+
+// ---------------------------------------------------------
+// CPosTp37::DoErrorTestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp37::DoErrorTestL(TInt aTestNr)
+    {
+    TBuf<100> buf;
+    buf.Format(_L("DoErrorTestL %d"), aTestNr);
+    iLog->Log(buf);
+    iLandmarkSearch = CPosLandmarkSearch::NewL(*iDatabase);
+    CPosLmCompositeCriteria* composite = CPosLmCompositeCriteria::NewLC(CPosLmCompositeCriteria::ECompositionAND);
+
+    CPosLmCompositeCriteria::TCompositionType type = composite->CompositionType();
+    if (type != CPosLmCompositeCriteria::ECompositionAND) 
+    {
+       iLog->Log( _L("Error1: Wrong type returned"));
+       User::Leave(-1);
+    }
+
+    TInt nr = composite->NumOfArguments();
+    if (nr != 0)
+    {
+        iLog->Log(_L("Wrong number of arguments returned"));
+       User::Leave(-1);
+
+    }
+
+    if (aTestNr == 0)
+        { 
+        // Test that it is not possible to perform a composite search without any search arguments attached to 
+        // the composite object
+        iOperation = iLandmarkSearch->StartLandmarkSearchL(*composite, EFalse);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+        }
+    else if (aTestNr == 1)
+        {
+        // Test that it is not possible to perform a composite search without any search arguments attached to 
+        // the composite object
+        iOperation = iLandmarkSearch->StartCategorySearchL(*composite, CPosLmCategoryManager::ECategorySortOrderNone);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+        }
+    else if (aTestNr == 2)
+        {
+        // Test that it is not possible to attach a category search attribute to
+        // a composite object
+        CPosLmCatNameCriteria* nameCriteria = CPosLmCatNameCriteria::NewLC();
+        nameCriteria->SetSearchPatternL(_L("*"));
+        TInt err = composite->AddArgument(nameCriteria);
+        if (err != KErrNotSupported) 
+        {
+            iLog->Log(_L("Wrong error when adding CPosLmCatNameCriteria to composite"));
+            User::Leave(err);
+        }
+        User::Leave(KErrNotSupported);
+        }
+
+    
+            iLog->Log(_L("Did not leave!!!"));
+            User::Leave(-1);
+   
+    iLog->Log(_L("ClearArguments"));
+    composite->ClearArguments();
+    iLog->Log(_L("PopAndDestroy"));
+    CleanupStack::PopAndDestroy(composite);
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    iLog->Log(_L("Done"));
+	}
+
+// ---------------------------------------------------------
+// CPosTp37::DoErrorTest3L
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp37::DoErrorTest3L(TInt aTestNr)
+    {
+    TBuf<100> buf;
+    buf.Format(_L("DoErrorTest3L %d"), aTestNr);
+    iLog->Log(buf);
+    iLandmarkSearch = CPosLandmarkSearch::NewL(*iDatabase);
+    TInt err = KErrNone;
+    CPosLmCompositeCriteria* composite = CPosLmCompositeCriteria::NewLC(CPosLmCompositeCriteria::ECompositionAND);
+    
+    if (aTestNr == 0)
+        {
+        // add empty ID List
+        CPosLmIdListCriteria* idList = CPosLmIdListCriteria::NewLC();
+        err = composite->AddArgument(idList);
+        CleanupStack::Pop(idList);
+        if (err != KErrNone) 
+        {
+            iLog->Log(_L("Error from AddArgument(idList);"));
+            User::Leave(err);
+        }
+        iLog->Log(_L("iLandmarkSearch->StartLandmarkSearchL"));    
+        iOperation = iLandmarkSearch->StartLandmarkSearchL(*composite, EFalse);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+        }
+    else if (aTestNr == 1)
+        {
+        // add empty ID List
+        CPosLmIdListCriteria* idList = CPosLmIdListCriteria::NewLC();
+        TInt err = composite->AddArgument(idList);
+        CleanupStack::Pop(idList);
+        if (err != KErrNone) 
+        {
+            iLog->Log(_L("Error from AddArgument(idList);"));
+            User::Leave(err);
+
+        }
+
+        iLog->Log(_L("iLandmarkSearch->StartCategorySearchL"));    
+        iOperation = iLandmarkSearch->StartCategorySearchL(*composite, CPosLmCategoryManager::ECategorySortOrderNone);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+
+        }
+    else if (aTestNr == 2)
+        {
+        // Test with list that contain items
+        RArray<TPosLmItemId> list;
+        CleanupClosePushL(list);
+
+        list.Append(0);
+        list.Append(1);
+        list.Append(2);
+        CPosLmIdListCriteria* idList = CPosLmIdListCriteria::NewLC();
+        idList->SetLandmarkIdsL(list);
+        err = composite->AddArgument(idList);
+        CleanupStack::Pop(idList);
+        if (err != KErrNone)
+        {
+            iLog->Log(_L("Error from AddArgument(idList);"));
+            User::Leave(err);
+        }
+        iLog->Log(_L("iLandmarkSearch->StartLandmarkSearchL"));    
+        iOperation = iLandmarkSearch->StartLandmarkSearchL(*composite, EFalse);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+
+        CleanupStack::PopAndDestroy(&list);
+        }
+    else if (aTestNr == 3)
+        {
+        // Test with list that contain items
+        RArray<TPosLmItemId> list;
+        CleanupClosePushL(list);
+
+        list.Append(0);
+        list.Append(1);
+        list.Append(2);
+        CPosLmIdListCriteria* idList = CPosLmIdListCriteria::NewLC();
+        idList->SetLandmarkIdsL(list);
+        err = composite->AddArgument(idList);
+        CleanupStack::Pop(idList);
+        if (err != KErrNone)
+        {
+            iLog->Log(_L("Error from AddArgument(idList);"));
+            User::Leave(err);
+        }
+        iLog->Log(_L("iLandmarkSearch->StartCategorySearchL"));    
+        iOperation = iLandmarkSearch->StartCategorySearchL(*composite, CPosLmCategoryManager::ECategorySortOrderNone);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+
+        CleanupStack::PopAndDestroy(&list);
+        }
+    else if (aTestNr == 4)
+        {
+        // Test with list that contain valid and invalid items
+        RArray<TPosLmItemId> list;
+        CleanupClosePushL(list);
+    
+    	CPosLmTextCriteria* textCriteria = CPosLmTextCriteria::NewLC();
+    	textCriteria->SetTextL(_L(""));
+    	
+    	err = composite->AddArgument(textCriteria);
+        CleanupStack::Pop(textCriteria);
+        if (err != KErrNone) 
+        {
+            iLog->Log(_L("Error from AddArgument(idList);"));
+            User::Leave(err);
+        }
+    
+        list.Append(1);
+        list.Append(2);
+        list.Append(2000);
+        list.Append(2001);
+        
+        CPosLmIdListCriteria* idList = CPosLmIdListCriteria::NewLC();
+        idList->SetLandmarkIdsL(list);
+        err = composite->AddArgument(idList);
+        CleanupStack::Pop(idList);
+        CleanupStack::PopAndDestroy(&list);
+        if (err != KErrNone) 
+        {
+            iLog->Log(_L("Error from AddArgument(idList);"));
+            User::Leave(err);
+        }
+        iLog->Log(_L("iLandmarkSearch->StartLandmarkSearchL"));    
+        iOperation = iLandmarkSearch->StartLandmarkSearchL(*composite, CPosLmCategoryManager::ECategorySortOrderNone);
+        
+        ExecuteAndDeleteLD(iOperation);
+        // We should never come here
+        iLog->Log(_L("Should leave here"));
+        
+        CPosLmItemIterator* iter = iLandmarkSearch->MatchIteratorL();
+        CleanupStack::PushL(iter);
+        CleanupStack::PopAndDestroy(iter);
+        }
+    else 
+        {
+        
+        iLog->Log(_L("Error in testcode, we should never come here"));
+         User::Leave(-1);
+        }
+
+    CleanupStack::PopAndDestroy(composite);
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    iLog->Log(_L("Done"));
+    }
+
+// ---------------------------------------------------------
+// CPosTp37::DoErrorTest4L
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp37::DoErrorTest4L(TInt aTestNr)
+    {
+    TBuf<100> buf;
+    buf.Format(_L("DoErrorTest4L %d"), aTestNr);
+    iLog->Log(buf);
+    iLandmarkSearch = CPosLandmarkSearch::NewL(*iDatabase);
+    CPosLmCompositeCriteria* composite = CPosLmCompositeCriteria::NewLC(CPosLmCompositeCriteria::ECompositionAND);
+    
+    if (aTestNr == 0)
+        {
+        // Test with several lists
+        RArray<TPosLmItemId> list1;
+        CleanupClosePushL(list1);
+
+        list1.Append(0);
+        list1.Append(1);
+        list1.Append(2);
+
+        RArray<TPosLmItemId> list2;
+        CleanupClosePushL(list2);
+
+        list2.Append(3);
+        list2.Append(4);
+        list2.Append(5);
+
+        CPosLmIdListCriteria* idList1 = CPosLmIdListCriteria::NewLC();
+        CPosLmIdListCriteria* idList2 = CPosLmIdListCriteria::NewLC();
+
+        idList1->SetLandmarkIdsL(list1);
+        idList2->SetLandmarkIdsL(list2);
+        TInt err = composite->AddArgument(idList2);
+        if (err != KErrNone)
+        {
+         iLog->Log(_L("Error from AddArgument(idList2);"));
+         User::Leave(err);
+        }
+        CleanupStack::Pop(idList2);
+        err = composite->AddArgument(idList1);
+        if (err != KErrNone) 
+        {
+         iLog->Log(_L("Error from AddArgument(idList2);"));
+         User::Leave(err);
+
+        }
+        CleanupStack::Pop(idList1);
+        iLog->Log(_L("iLandmarkSearch->StartLandmarkSearchL"));    
+        iOperation = iLandmarkSearch->StartLandmarkSearchL(*composite, EFalse);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+        }
+    else if (aTestNr == 1)
+        {
+        // Test with several lists
+        RArray<TPosLmItemId> list1;
+        CleanupClosePushL(list1);
+
+        list1.Append(0);
+        list1.Append(1);
+        list1.Append(2);
+
+        RArray<TPosLmItemId> list2;
+        CleanupClosePushL(list2);
+
+        list2.Append(3);
+        list2.Append(4);
+        list2.Append(5);
+
+        CPosLmIdListCriteria* idList1 = CPosLmIdListCriteria::NewLC();
+        CPosLmIdListCriteria* idList2 = CPosLmIdListCriteria::NewLC();
+
+        idList1->SetLandmarkIdsL(list1);
+        idList2->SetLandmarkIdsL(list2);
+
+        TInt err = composite->AddArgument(idList2);
+        if (err != KErrNone) 
+        {
+            iLog->Log(_L("Error from AddArgument(idList2);"));
+            User::Leave(err);
+        }
+        CleanupStack::Pop(idList2);
+        err = composite->AddArgument(idList1);
+        if (err != KErrNone) 
+        {
+         iLog->Log(_L("Error from AddArgument(idList2);"));
+         User::Leave(err);
+
+        }
+        CleanupStack::Pop(idList1);
+
+        iLog->Log(_L("iLandmarkSearch->StartCategorySearchL"));    
+        iOperation = iLandmarkSearch->StartCategorySearchL(*composite, CPosLmCategoryManager::ECategorySortOrderNone);
+        iLog->Log(_L("Should leave here"));
+        ExecuteAndDeleteLD(iOperation);
+        }
+    else 
+        {
+        
+        iLog->Log(_L("Error in testcode, we should never come here"));
+         User::Leave(-1);
+
+        }
+
+    
+    iLog->Log(_L("Did not leave!!!"));
+    User::Leave(-1);
+
+
+    CleanupStack::PopAndDestroy(composite);
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    iLog->Log(_L("Done"));
+    }
+
+// ---------------------------------------------------------
+// CPosTp37::TestCompositeAndCategoryL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp37::TestCompositeAndCategoryL(TInt /*aTestNr*/)
+    {
+    iLog->Log(_L("TestCompositeAndCategoryL"));
+
+    iLandmarkSearch = CPosLandmarkSearch::NewL(*iDatabase);
+    CPosLmCompositeCriteria* composite = CPosLmCompositeCriteria::NewLC(CPosLmCompositeCriteria::ECompositionAND);
+
+    // Test with list that contain items
+    RArray<TPosLmItemId> list;
+    CleanupClosePushL(list);
+    
+    list.Append(0);
+    list.Append(1);
+    list.Append(2);
+    
+    CPosLmIdListCriteria* idList = CPosLmIdListCriteria::NewLC();
+    idList->SetLandmarkIdsL(list);
+    TInt err = composite->AddArgument(idList);
+    if (err != KErrNone)
+    {
+    iLog->Log(_L("Error from AddArgument(idList);"));
+    User::Leave(err);
+
+    }
+    CleanupStack::Pop(idList);
+
+    CPosLmCatNameCriteria* nameCriteria = CPosLmCatNameCriteria::NewLC();
+    nameCriteria->SetSearchPatternL(_L("*"));
+    err = composite->AddArgument(nameCriteria);
+    if (err != KErrNotSupported)
+    {
+    iLog->Log(_L("Wrong error from AddArgument(nameCriteria); should be KErrNotSupported"));
+    User::Leave(err);
+
+    }
+    CleanupStack::PopAndDestroy(nameCriteria);
+    User::Leave(KErrNotSupported);
+
+
+    CleanupStack::PopAndDestroy(composite);
+    delete iLandmarkSearch;
+    iLandmarkSearch = NULL;
+    iLog->Log(_L("Done"));
+    }
+
+//  End of File