phonebookengines_old/contactsmodel/tsrc/t_longsql.cpp
branchGCC_SURGE
changeset 41 d11de32a5e6f
parent 40 b46a585f6909
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/tsrc/t_longsql.cpp	Tue Jun 15 14:45:31 2010 +0100
@@ -0,0 +1,138 @@
+// Copyright (c) 2003-2009 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:
+//
+
+#include "T_LongSql.h"
+
+#include <e32test.h>
+#include <cntfield.h>
+
+RTest TheTest(_L("Building a long SQL query"));
+
+//
+// CSqlSearch class definition
+//
+CSqlSearcher::CSqlSearcher()
+	{
+	}
+
+CSqlSearcher::~CSqlSearcher()
+	{
+	delete iDb;
+	}
+
+void CSqlSearcher::ConstructL()
+	{
+	iDb = CContactDatabase::ReplaceL();
+	}
+
+CSqlSearcher* CSqlSearcher::NewLC()
+	{
+	CSqlSearcher* self = new(ELeave) CSqlSearcher;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return(self);
+	}
+
+void CSqlSearcher::IdleFindCallback()
+	{
+	CActiveScheduler::Stop();
+	}
+
+void CSqlSearcher::DoSearchL(const TDesC& aString, TUid aFieldId)
+	{
+    CContactItemFieldDef* fieldsToSearch = new (ELeave) CContactItemFieldDef;
+    CleanupStack::PushL(fieldsToSearch);
+
+    fieldsToSearch->AppendL(aFieldId);
+
+    CIdleFinder* idleFinder = iDb->FindAsyncL(aString, fieldsToSearch, this);
+    CleanupStack::PushL(idleFinder);
+
+    CActiveScheduler::Start();
+
+	CleanupStack::PopAndDestroy(idleFinder);
+
+    CleanupStack::PopAndDestroy(fieldsToSearch);
+	}
+
+//
+// Main test:
+//
+
+static void doMainL()
+	{
+	CActiveScheduler* scheduler = new(ELeave) CActiveScheduler;
+	CleanupStack::PushL(scheduler);
+	CActiveScheduler::Install(scheduler);
+
+	CSqlSearcher* searcher = CSqlSearcher::NewLC();
+	HBufC* buff = HBufC::NewLC(1024);
+	TPtr ptr = buff->Des();
+
+	TheTest.Next(_L("A very short search string"));
+
+	ptr.Zero();
+	ptr.AppendFill(TChar('x'), 3);
+	searcher->DoSearchL(*buff, KUidContactFieldFamilyName);
+
+	TheTest.Next(_L("A fairly long search string"));
+
+	ptr.Zero();
+	ptr.AppendFill(TChar('x'), 233);
+	searcher->DoSearchL(*buff, KUidContactFieldFamilyName);
+
+	TheTest.Next(_L("A very slightly longer search string"));
+
+	ptr.Zero();
+	ptr.AppendFill(TChar('x'), 234);
+	searcher->DoSearchL(*buff, KUidContactFieldFamilyName);
+
+	TheTest.Next(_L("A very long search string"));
+
+	ptr.Zero();
+	ptr.AppendFill(TChar('x'), 600);
+	searcher->DoSearchL(*buff, KUidContactFieldFamilyName);
+
+	CleanupStack::PopAndDestroy(buff);
+	CleanupStack::PopAndDestroy(searcher);
+	CleanupStack::PopAndDestroy(scheduler);
+	}
+
+/**
+
+@SYMTestCaseID     PIM-T-LONGSQL-0001
+
+*/
+
+GLDEF_C TInt E32Main()
+    {
+	__UHEAP_MARK;
+	TheTest.Start(_L("@SYMTESTCaseID:PIM-T-LONGSQL-0001 Initialising"));
+
+
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+
+	TRAPD(error, doMainL());
+	TheTest(error == KErrNone);
+
+	// Cleanup & close
+	delete cleanup;
+
+	TheTest.End();
+	TheTest.Close();
+
+	__UHEAP_MARKEND;
+	return KErrNone;
+    }