--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appfw/apparchitecture/tef/T_Serv3Step.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,1951 @@
+// Copyright (c) 2005-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:
+// Test wrapper to Application Architecture Server.
+// Tests Application information, Data recognition and application
+// launching capabilities of the application architecture server.\n
+//
+// t_serv3step.cpp
+//
+
+/**
+ @file t_serv3step.cpp
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <f32file.h>
+#include <fbs.h>
+#include <apaid.h>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <apaidpartner.h>
+#include <apgicnflpartner.h>
+#endif //SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <apgaplst.h>
+#include <apaflrec.h>
+#include "testableapalssession.h"
+#include <apacmdln.h>
+#include <apfrec.h>
+#include <datastor.h>
+#include <apgicnfl.h>
+#include <apasvst.h>
+#include "tstapp.h"
+//
+#include <e32test.h>
+#include "T_Serv3Step.h"
+
+#include <coemain.h>
+#include <eikenv.h>
+#include "TAppEmbedUids.h"
+#include "appfwk_test_utils.h"
+
+
+//Literals for directory and file naming
+_LIT(KMimeDir,"c:\\system\\data\\Mimepath\\");
+_LIT(KMimeFile,"c:\\system\\data\\Mimepath\\mime_content");
+_LIT(KEmptyDir,"c:\\system\\data\\Testpath\\Empty\\");
+_LIT8(KTextContent, "Never hit your mother with a shovel.\
+ It leaves a dark impression on her mind.");
+_LIT(KSuffixText, ".txt");
+_LIT(KSuffixHtml, ".html");
+_LIT8(KHtmlContent, "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0\
+ Transitional//EN'><HTML><HEAD><TITLE>SYMBIAN Centre\
+ - 5 Day Forecast for London, United Kingdom</TITLE>\
+ <META http-equiv=Content-Type content=text/html;\
+ charset=iso-8859-1><META content='Symbian Five Day Forecast'\
+ name=type><META content='The Symbian five day forecast'\
+ name=description>");
+_LIT(KSuffixUnknown, ".canyoutell");
+
+const TInt KFixedNumWidth = 3;
+
+CT_Serv3Step::~CT_Serv3Step()
+/**
+ * Destructor
+ */
+ {
+ delete iActiveScheduler;
+ }
+
+CT_Serv3Step::CT_Serv3Step()
+/**
+ * Constructor
+ */
+ {
+ // Call base class method to set up the human readable name for logging
+ SetTestStepName(KT_Serv3Step);
+ }
+
+/**
+ @SYMTestCaseID T_Serv3Step_DoSyncRecognizerTest1L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3897
+
+ @SYMTestCaseDesc Test PREQ699.1.0 Validate Synchronous RecognizeFilesL function and CDataRecognitionResultArray\n
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions. Calls RecognizeFilesL() with a folder containing two files of zero and one byte sizes. Validates
+ the returned number of files and file types. Tests CDataRecognitionResultArray by using the object.
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;\n
+ CDataRecognitionResultArray::const TFileName& Path() const\n
+ CDataRecognitionResultArray::GetDataRecognitionResultL(TDataRecognitionResult& aResult, const TUint aIndex) const;\n
+ CDataRecognitionResultArray::GetFileNameL(TFileName& aFileName, const TUint aIndex) const\n
+
+ @SYMTestExpectedResults KErrNone and CDataRecognitionResultArray returned containing two entries, of MIME type "text/plain" \n
+
+ */
+void CT_Serv3Step::DoSyncFolderRecognizerTest1L(RApaLsSession& aLs)
+ {
+ //Synchronous Folder File Recognition Test Group 1
+
+ _LIT(KStandardDir,"z:\\system\\data\\Testpath\\");
+
+ // Copy App files around and delete them to check whether
+ // the app list updates and stores the cache correctly.
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ INFO_PRINTF1(_L("Synchronous Folder File Recognition Test PREQ699.1.0"));
+ TInt ret=aLs.RecognizeFilesL(KStandardDir,*result);
+ TEST(ret==KErrNone);
+ User::LeaveIfError(ret);
+
+ // Test the CDataRecognitionResultArray object
+ TFileName path = result->Path(); //test: CDataRecognitionResultArray::Path()
+ TFullName standardDir(KStandardDir);
+ //Test the path created is correct
+ TEST(path==standardDir);
+
+ TUint count = result->Count(); //test: CDataRecognitionResultArray::Count()
+ TEST(count==2); //two files in directory
+
+ //get each result from the test directory. Check the MIME values against their known types
+ for(TUint i=0; i<count;i++)
+ {
+ //test: CDataRecognitionResultArray::GetDataRecognitionResultL
+ TDataRecognitionResult res;
+ result->GetDataRecognitionResultL(res, i);
+ //test: correct MIME type is returned - "text/plain"
+ TEST(res.iDataType.Des8().Compare(TDataType(_L8("text/plain")).Des8()) == 0);
+
+ //test: CDataRecognitionResultArray::GetFileNameL
+ TFileName fileName;
+ result->GetFileNameL(fileName, i);
+ TEST(fileName.Compare( (i==0 ? _L("file1.txt") : _L("file2.txt")) ) == 0);
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result);//result
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoSyncRecognizerTest2L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3899
+
+ @SYMTestCaseDesc Test PREQ699.2.0 and PREQ699.2.1 Validate Synchronous RecognizeFilesL function for error handling.\n
+
+ @SYMTestStatus Implemented
+
+ @SYMTestPriority High
+
+ @SYMTestActions. Test 2.0 Calls RecognizeFilesL() (without a data filter then with a data filter) using an unknown folder path.
+ Checks returned value is KErrPathNotFound.
+ Test 2.1 Calls RecognizeFilesL() (without a data filter then with a data filter) using an empty folder path.
+ Checks returned value is KErrNone and that returned array is empty.
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult);\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;\n
+
+ @SYMTestExpectedResults Test 2.0 returned value is KErrPathNotFound.\n
+ Test 2.1 returned value is KErrNone and that returned array is empty.\n
+ */
+ void CT_Serv3Step::DoSyncFolderRecognizerTest2L(RApaLsSession& aLs)
+ {
+ TBufC<50> emptyDir(KEmptyDir);
+ TPtr ptrEmptyDir(emptyDir.Des());
+
+ //Synchronous Folder File Recognition Test Group
+
+ //**************
+ // Test Case 2.0 - Test Recognizer for incorrect folder path.Test both versions of synchronous RecognizeFiles
+ //**************
+ INFO_PRINTF1(_L("Synchronous Folder File Recognition Test PREQ699.2.0"));
+ _LIT(KNotKnownDir,"z:\\system\\data\\Testpath\\NotKnown\\");
+
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result1);
+
+ TInt ret=aLs.RecognizeFilesL(KNotKnownDir,*result1);
+ TEST(ret==KErrPathNotFound);
+
+ ret=aLs.RecognizeFilesL(KNotKnownDir,_L8("text/plain"),*result1);
+ TEST(ret==KErrPathNotFound);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result1);//result1
+
+ // Create a directory with no files
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ CreateDirL(&utils, ptrEmptyDir);
+
+ //**************
+ // Test Case 2.1 -Test Recognizer for empty folder. Test both versions of synchronous RecognizeFiles
+ //**************
+ INFO_PRINTF1(_L("Synchronous Folder File Recognition Test PREQ699.2.1"));
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result2);
+
+ ret=aLs.RecognizeFilesL(KEmptyDir,*result2);
+ TEST(ret==KErrNone);
+
+ TUint count = result2->Count();
+ TEST(count==0);
+
+ INFO_PRINTF1(_L("Test empty folder for filter version parameter"));
+ ret=aLs.RecognizeFilesL(KEmptyDir,_L8("text/plain"),*result2);
+ TEST(ret==KErrNone);
+
+ count = result2->Count();
+ TEST(count==0);
+
+ //Delete empty directory
+ DeleteDirL(&utils, ptrEmptyDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result2);//result2
+ CleanupStack::PopAndDestroy(&utils);//utils
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoSyncRecognizerTest3L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3899
+
+ @SYMTestCaseDesc Validate Synchronous RecognizeFilesL data filter function using various filters.\n
+ Test 3.0 Validate Synchronous RecognizeFilesL data filter function and CDataRecognitionResultArray\n
+ Test 3.1 Validate Synchronous RecognizeFilesL functions with wildcard/MIME type validity.\n
+ Test 3.2 Validate Synchronous RecognizeFilesL functions with irregular strings.\n
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions. Call RecognizeFilesL with three different data filters: i) standard= "text/plain"; ii) wildcard: "text*"; iii) non-valid \n
+ For each call, check the results are correct: number of files identified and the MIME types.
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();\n
+ CDataRecognitionResultArray::Count() const;\n
+ CDataRecognitionResultArray::const TFileName& Path() const\n
+ CDataRecognitionResultArray::GetDataRecognitionResultL(TDataRecognitionResult& aResult, const TUint aIndex) const;\n
+ CDataRecognitionResultArray::GetFileNameL(TFileName& aFileName, const TUint aIndex) const\n
+
+ @SYMTestExpectedResults\n
+ Test 3.0 KErrNone and CDataRecognitionResultArray returned containing four entries, of MIME type "text/plain" \n
+ Test 3.1 KErrNone and CDataRecognitionResultArray returned containing four entries, of MIME type "text/plain" \n
+ Test 3.2 KErrNone and CDataRecognitionResultArray returned containing zero entries\n
+
+ */
+ void CT_Serv3Step::DoSyncFolderRecognizerTest3L(RApaLsSession& aLs)
+ {
+
+ //**************
+ // Test Case 3.0 - Test Recognizer filter version with datatype filter type validity.
+ // Also test CDataRecognitionResultArray::GetDataRecognitionResultL();
+ // CDataRecognitionResultArray::
+ //***************
+ //Synchronous Folder File Recognition Test Group 3;
+ _LIT(KFilterTestDir,"z:\\system\\data\\Testpath\\FilterTests\\");
+
+ CDataRecognitionResultArray* result3 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result3);
+
+ INFO_PRINTF1(_L("Synchronous Folder File Recognition Test PREQ699.3.0"));
+ TInt ret=aLs.RecognizeFilesL(KFilterTestDir,_L8("text/plain"),*result3);
+ TEST(ret==KErrNone);
+ TUint count = result3->Count();
+ TEST(count==4);
+
+ //get each result from the test directory. Check the MIME values against known types
+ for(TUint i=0; i<count;i++)
+ {
+ TDataRecognitionResult res;
+ result3->GetDataRecognitionResultL(res, i); //the result
+ TFileName fileName;
+ result3->GetFileNameL(fileName, i); //the file we are looking at
+
+ //test for correct MIME type result
+ TEST(res.iDataType.Des8().Compare(TDataType(_L8("text/plain")).Des8())==0);//report an error if not text/plain
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result3);//result
+
+ //*****************
+ // Test Case 3.1 - Test Recognizer filter version for wildcard/MIME type validity.
+ // Also test CDataRecognitionResultArray
+ //*********
+ INFO_PRINTF1(_L("Synchronous Folder File Recognition Test PREQ699.3.1"));
+ CDataRecognitionResultArray* result4 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result4);
+ ret=aLs.RecognizeFilesL(KFilterTestDir,_L8("text*"),*result4);
+ TEST(ret==KErrNone);
+ count = result3->Count();
+ TEST(count==4);
+
+ //get each result from the test directory. Check the MIME values against some known types
+ for(TUint j=0; j<count;j++)
+ {
+ TDataRecognitionResult res;
+ result4->GetDataRecognitionResultL(res, j); //the result
+ TFileName fileName;
+ result4->GetFileNameL(fileName, j); //the file we are looking at
+
+ //test for correct MIME type result
+ TEST(res.iDataType.Des8().Compare(TDataType(_L8("text/plain")).Des8())==0);//report an error if not text
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result4);//result
+
+ //*****************
+ // Test Case 3.2 -Test Recognizer filter version for with irregular strings.
+ //*********
+ INFO_PRINTF1(_L("Synchronous Folder File Recognition Test PREQ699.3.2"));
+ CDataRecognitionResultArray* result5 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result5);
+ ret=aLs.RecognizeFilesL(KFilterTestDir,_L8("&*/?|=+-"),*result5);
+ TEST(ret==KErrNone);
+ count = result5->Count();
+ TEST(count==0);
+
+ ret=aLs.RecognizeFilesL(KFilterTestDir,_L8("'/"),*result5);
+ TEST(ret==KErrNone);
+ count = result5->Count();
+ TEST(count==0);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result5);//result
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest1L
+
+ @SYMPREQ 699
+
+ @SYMREQ Non-Specific
+
+ @SYMTestCaseDesc Test PREQ699.4.0 Validate Asynchronous RecognizeFilesL (non-filtered) function and CDataRecognitionResultArray\n
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions. Calls RecognizeFilesL() with a folder containing two files of zero and one byte sizes. Uses a Test Active Object
+ within the request. Validates the returned number of files and file types. Tests CDataRecognitionResultArray by using the object.\n
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;\n
+ CDataRecognitionResultArray::const TFileName& Path() const\n
+ CDataRecognitionResultArray::GetDataRecognitionResultL(TDataRecognitionResult& aResult, const TUint aIndex) const;\n
+ CDataRecognitionResultArray::GetFileNameL(TFileName& aFileName, const TUint aIndex) const\n
+
+ @SYMTestExpectedResults status= KErrNone and CDataRecognitionResultArray returned containing two entries, of MIME type "text/plain" \n
+
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest1L(RApaLsSession& aLs)
+ {
+
+ //Asynchronous folder file recognition Test Group 4
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ //Check results and Stop AS
+ _LIT(KStandardDir,"z:\\system\\data\\Testpath\\");
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.4.0"));
+ aLs.RecognizeFilesL(KStandardDir,*result,active->iStatus);
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result->Count();
+
+ TEST(count==2); //two files in directory
+
+ //get each result from the test directory. Check the MIME values against some known types
+ for(TUint i=0; i<count;i++)
+ {
+ TDataRecognitionResult res;
+ result->GetDataRecognitionResultL(res, i); // the result
+ //test MIME type result = "text/plain"
+ TEST(res.iDataType.Des8().Compare(TDataType(_L8("text/plain")).Des8())==0);
+
+ TFileName fileName;
+ result->GetFileNameL(fileName, i); //the file we are looking at
+ TEST(fileName.Compare( (i==0 ? _L("file1.txt") : _L("file2.txt")) ) == 0);
+ }
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result);//result
+ CleanupStack::PopAndDestroy(active);//active
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest2L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3899
+
+ @SYMTestCaseDesc Test PREQ699.5.0 Validate Asynchronous RecognizeFilesL (filtered) function and CDataRecognitionResultArray\n
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions. Call RecognizeFilesL() with a Data Type Filter (aDataType ="Text/Plain") and a Test Active Object.
+ Test that the number and data type of files returned is correct.
+ Tests CDataRecognitionResultArray by using the object.\n
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;\n
+ CDataRecognitionResultArray::GetDataRecognitionResultL(TDataRecognitionResult& aResult, const TUint aIndex) const;\n
+ CDataRecognitionResultArray::GetFileNameL(TFileName& aFileName, const TUint aIndex) const\n
+
+ @SYMTestExpectedResults status= KErrNone and CDataRecognitionResultArray returned containing four entries, of MIME type "text/plain" \n
+
+
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest2L(RApaLsSession& aLs)
+ {
+
+ //Asynchronous folder file recognition Test Group 5
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ _LIT(KFilterDir,"z:\\system\\data\\Testpath\\FilterTests\\");
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.5.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/plain"
+ aLs.RecognizeFilesL(KFilterDir,_L8("text/plain"), *result,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result->Count();
+
+ TEST(count==4); //four files in directory
+
+ //get each result from the test directory. Check the MIME values against some known types
+ for(TUint i=0; i<count;i++)
+ {
+ TDataRecognitionResult res;
+ result->GetDataRecognitionResultL(res, i); // the result
+ TFileName fileName;
+ result->GetFileNameL(fileName, i); // the file we are looking at
+
+ //test MIME type result = "text/plain"
+ TEST(res.iDataType.Des8().Compare(TDataType(_L8("text/plain")).Des8())==0);
+ }
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result);//result
+ CleanupStack::PopAndDestroy(active);//active
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest3L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3899
+
+ @SYMTestCaseDesc Test PREQ699.6.0 Validate Asynchronous RecognizeFilesL function (with data filter and wildcard) \n
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions. Call RecognizeFilesL() with a Data Type Filter and wildcard (aDataType ="Text/ *") and a Test Active Object.
+ Test that the number and data type of files returned is correct.
+ Tests CDataRecognitionResultArray by using the object.\n
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;\n
+ CDataRecognitionResultArray::GetDataRecognitionResultL(TDataRecognitionResult& aResult, const TUint aIndex) const;\n
+ CDataRecognitionResultArray::GetFileNameL(TFileName& aFileName, const TUint aIndex) const\n
+
+ @SYMTestExpectedResults status= KErrNone and CDataRecognitionResultArray returned containing four entries, of MIME type "text/plain" \n
+
+
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest3L(RApaLsSession& aLs)
+ {
+
+ // Asynchronous folder file recognition Test Group 6
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ _LIT(KFilterDir,"z:\\system\\data\\Testpath\\FilterTests\\");
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.6.0"));
+ aLs.RecognizeFilesL(KFilterDir,_L8("text*"), *result,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);//Test no error returned
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result->Count();
+
+ TEST(count==4); //four files in directory
+
+ //get each result from the test directory. Check the MIME values against some known types
+ for(TUint i=0; i<count;i++)
+ {
+ TDataRecognitionResult res;
+ result->GetDataRecognitionResultL(res, i); // the result
+ TFileName fileName;
+ result->GetFileNameL(fileName, i); //the file we are looking at
+
+ //test MIME type result="text/plain"
+ TEST(res.iDataType.Des8().Compare(TDataType(_L8("text/plain")).Des8())==0);
+ }
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result);//result
+ CleanupStack::PopAndDestroy(active);//active
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest4L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3899
+
+ @SYMTestCaseDesc Test PREQ699.7.0 Validate Asynchronous RecognizeFilesL function (with unknown and irregular data filters).
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions. Call RecognizeFilesL() with Data Type Filters of an irregular nature and a Test Active Object.
+ Test that no files are returned and status= KErrNone.\n
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;\n
+
+ @SYMTestExpectedResults status= KErrNone and CDataRecognitionResultArray returned containing zero entries \n
+
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest4L(RApaLsSession& aLs)
+ {
+
+ //Asynchronous folder file recognition Test Group 7
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ INFO_PRINTF1(_L("Testing Recognition of folder filtered with irregular strings"));
+
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ _LIT(KFilterDir,"z:\\system\\data\\Testpath\\FilterTests\\");
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.7.0"));
+ aLs.RecognizeFilesL(KFilterDir,_L8("&* /?|=+-"),*result, active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result->Count();
+ TEST(count==0); //no files should be found
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result);//result
+ CleanupStack::PopAndDestroy(active);//active
+
+ }
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest5L
+
+ @SYMPREQ 699
+
+ @SYMREQ Non-Specific
+
+ @SYMTestCaseDesc Test PREQ699.8.0 Validate Asynchronous RecognizeFilesL function with large directory to test Cache upperlimit. \n
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions. Call RecognizeFilesL() with a folder containing a large number of files and a Test Active Object.
+ Test that the number of files returned is correct.
+ Tests CDataRecognitionResultArray by using the object.\n
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);\n
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;\n
+
+ @SYMTestExpectedResults status= KErrNone and CDataRecognitionResultArray returned containing 550 entries. \n
+
+ */
+
+void CT_Serv3Step::DoAsyncFolderRecognizerTest5L(RApaLsSession& aLs)
+ {
+ _LIT(KLargeDir,"c:\\system\\data\\Testpath\\largeDir\\");
+ _LIT(KLargeDirRoot, "c:\\system\\data\\Testpath\\largeDir\\focus");
+
+ TBufC<50> bigDir(KLargeDir);
+ TPtr ptrBigDir (bigDir.Des());
+ TBufC<50> bigDirRoot(KLargeDirRoot);
+ TPtr ptrBigDirRoot (bigDirRoot.Des());
+
+ // Asynchronous folder file recognition Test Group 8
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ //File server and utils
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ CreateDirL(&utils, ptrBigDir);
+
+ CreateFilesL(theFS, file, ptrBigDirRoot, (TDesC&)KSuffixText, 550, KTextContent, 0);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.8.0"));
+ //Check results and Stop AS
+ aLs.RecognizeFilesL(KLargeDir,*result,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result->Count();
+ TEST(count==550); //550 files in directory - 500 files is thought to be cache capacity
+ }
+
+ DeleteFilesL(&utils, ptrBigDirRoot, (TDesC&)KSuffixText, 550);
+
+ DeleteDirL(&utils, ptrBigDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(&utils);//utils
+ CleanupStack::PopAndDestroy(result);//result
+ CleanupStack::PopAndDestroy(active);//active
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest6L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3898 3899
+
+ @SYMTestCaseDesc Test PREQ699.9.0, PREQ699.9.1, PREQ699.9.2 Validates cache functionality with changed file mime type
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions Recognize a directory with a filter and then change the mime type of one file.
+ Recognize the directory with a filter again and ensure that the file type change has been registered.
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for file creation
+ 9.0 count = 1 CDataRecognitionResultArray::Count returns one entry of MIME type "text/plain"
+ status = KErrNone for file content changed to html
+ 9.1 count = 0 CDataRecognitionResultArray::Count returns no entries of MIME type "text/plain"
+ 9.2 count = 0 CDataRecognitionResultArray::Count returns no entries of MIME type "text/plain"
+
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest6L(RApaLsSession& aLs)
+ {
+
+ TBufC<50> mimeDir(KMimeDir);
+ TPtr ptrMimeDir(mimeDir.Des());
+
+ TBufC<50> mimeFile(KMimeFile);
+ TPtr ptrMimeFile(mimeFile.Des());
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ //Asynchronous folder file recognition Test Group 9
+
+ //Declare result arrays for storing seperate recognition results
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result3 = new(ELeave) CDataRecognitionResultArray();
+
+ CleanupStack::PushL(result1);
+ CleanupStack::PushL(result2);
+ CleanupStack::PushL(result3);
+
+ //File server and utils
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ //Create directory for test files
+ CreateDirL(&utils, ptrMimeDir);
+
+ //Timestamp details for files
+ TTime time;
+ time.UniversalTime();
+
+ TTime aLaterTime(time);
+ TTimeIntervalMinutes aInterval(1);
+
+ aLaterTime+=(aInterval);
+
+ // Create file mime_content000.txt containing text
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixText, 1, KTextContent, time);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.9.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/plain"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/plain"), *result1 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result1->Count();
+ TEST(count==1);
+ }
+
+ //Change file content to html
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixText, 1, KHtmlContent, aLaterTime);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.9.1"));
+ //Test RecognizeFilesL with a MIME type filter "text/plain"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/plain"), *result2 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result2->Count();
+ TEST(count==0);
+ }
+
+
+ //Delete file and recognise again
+ DeleteFilesL(&utils, ptrMimeFile, (TDesC&)KSuffixText, 1);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.9.2"));
+ aLs.RecognizeFilesL(KMimeDir, *result3,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result3->Count();
+ TEST(count==0);
+ }
+
+
+ //Remove test directory
+ DeleteDirL(&utils, ptrMimeDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(&utils); //utils
+ CleanupStack::PopAndDestroy(result3);//result1
+ CleanupStack::PopAndDestroy(result2);//result2
+ CleanupStack::PopAndDestroy(result1);//result3
+ CleanupStack::PopAndDestroy(active); //active
+
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest7L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3898 3899
+
+ @SYMTestCaseDesc Test PREQ699.10.0 Validates cache functionality with changed mime type and filter (1)
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions Recognize a directory with a filter. Change the mime type of one file in the
+ directory such that it is now described by the filter. Recognize the
+ directory again with the same filter and ensure that the file type change has
+ been registered.
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for file creation
+ count = 3 CDataRecognitionResultArray::Count returns three entries of MIME type "text/html"
+ status = KErrNone for file content changed to html
+ count = 4 CDataRecognitionResultArray::Count returns four entries of MIME type "text/html"
+ */
+ void CT_Serv3Step::DoAsyncFolderRecognizerTest7L(RApaLsSession& aLs)
+ {
+ TBufC<50> mimeDir(KMimeDir);
+ TPtr ptrMimeDir (mimeDir.Des());
+
+ TBufC<50> mimeFile(KMimeFile);
+ TPtr ptrMimeFile(mimeFile.Des());
+
+ //Asynchronous folder file recognition Test Group 10
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result1);
+ CleanupStack::PushL(result2);
+
+
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ //Create directory for test files
+ CreateDirL(&utils, ptrMimeDir);
+
+ //Timestamp details for files
+ TTime time;
+ time.UniversalTime();
+
+ TTime aLaterTime(time);
+ TTimeIntervalMinutes aInterval(1);
+ aLaterTime+=(aInterval);
+
+ // Create files mime_content000.canyoutell - mime_content003.canyoutell
+ // 000 with text content and 001-003 with html content
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 4, KHtmlContent, time);
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KTextContent, time);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.10.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result1 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result1->Count();
+ TEST(count == 3);
+ }
+
+
+ //Change file content to html and update the timestamp
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KHtmlContent, aLaterTime);
+
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result2 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result2->Count();
+ TEST(count == 4);
+ }
+
+
+ DeleteFilesL(&utils, ptrMimeFile, (TDesC&)KSuffixUnknown, 4);
+
+ //Remove test directory
+ DeleteDirL(&utils, ptrMimeDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(&utils);//utils
+ CleanupStack::PopAndDestroy(result2);//result1
+ CleanupStack::PopAndDestroy(result1);//result2
+ CleanupStack::PopAndDestroy(active);//active
+
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest8L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3898 3899
+
+ @SYMTestCaseDesc Test PREQ699.11.0 Validates cache functionality with changed file mime type and filter (2)
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions Recognize a directory with a filter. Change the mime type of one file in the
+ directory such that it is now not described by the filter. Recognize the
+ directory again with the same filter and ensure that the file type change has
+ been registered.
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for file creation
+ count = 4 CDataRecognitionResultArray::Count returns four entries of MIME type "text/html"
+ status = KErrNone for file content changed to html
+ count = 3 CDataRecognitionResultArray::Count returns three entries of MIME type "text/html"
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest8L(RApaLsSession& aLs)
+ {
+ TBufC<50> mimeDir(KMimeDir);
+ TPtr ptrMimeDir (mimeDir.Des());
+
+ TBufC<50> mimeFile(KMimeFile);
+ TPtr ptrMimeFile(mimeFile.Des());
+
+ //Asynchronous folder file recognition Test Group 11
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result1);
+ CleanupStack::PushL(result2);
+
+
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ //Create directory for test files
+ CreateDirL(&utils, ptrMimeDir);
+
+ //Timestamp details for files
+ TTime time;
+ time.UniversalTime();
+
+ TTime aLaterTime(time);
+ TTimeIntervalMinutes aInterval(1);
+ aLaterTime+=(aInterval);
+
+ // Create files mime_content000.canyoutell - mime_content003.canyoutell with html content
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 4, KHtmlContent, time);
+
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result1 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result1->Count();
+ TEST(count == 4);
+ }
+
+
+ //Change file content to text
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KTextContent, aLaterTime);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.11.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result2 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result2->Count();
+ TEST(count == 3);
+ }
+
+ DeleteFilesL(&utils, ptrMimeFile, (TDesC&)KSuffixUnknown, 4);
+
+ //Remove test directory
+ DeleteDirL(&utils, ptrMimeDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(&utils);//utils
+ CleanupStack::PopAndDestroy(result2);//result1
+ CleanupStack::PopAndDestroy(result1);//result2
+ CleanupStack::PopAndDestroy(active);//active
+
+ }
+
+ /**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest9L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3898 3899
+
+ @SYMTestCaseDesc Test PREQ699.12.0 Validates cache functionality with older timestamp(1)
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions Recognize a directory. Change the timestamp on one file to be older and alter
+ the mime type. Repeat the directory recognition and ensure that the mime type
+ has been updated..
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for html file creation
+ count = 1 CDataRecognitionResultArray::Count returns one entry of MIME type "text/html"
+ status = KErrNone for file content changed to text
+ count = 0 CDataRecognitionResultArray::Count returns zero entries of MIME type "text/html"
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest9L(RApaLsSession& aLs)
+ {
+ TBufC<50> mimeDir(KMimeDir);
+ TPtr ptrMimeDir (mimeDir.Des());
+
+ TBufC<50> mimeFile(KMimeFile);
+ TPtr ptrMimeFile(mimeFile.Des());
+
+ //Asynchronous folder file recognition Test Group 12
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result1);
+ CleanupStack::PushL(result2);
+
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ //Create directory for test files
+ CreateDirL(&utils, ptrMimeDir);
+
+ //Timestamp details for files
+ TTime time;
+ time.UniversalTime();
+
+ TTime aLaterTime(time);
+ TTimeIntervalMinutes aInterval(1);
+ aLaterTime+=(aInterval);
+
+ //Set the directory timestamp to be 'new'
+ theFS.SetModified(ptrMimeDir, aLaterTime);
+
+ // Create file mime_content000.canyoutell with html content and 'new' time
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KHtmlContent, aLaterTime);
+
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result1 ,active->iStatus);
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result1->Count();
+ TEST(count == 1);
+ }
+
+
+ //Change file content to text and set the timestamp to 'old'
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KTextContent, time);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.12.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result2 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result2->Count();
+ TEST(count == 0);
+ }
+
+ //Delete file
+ utils.DeleteFileL(_L("c:\\system\\data\\Mimepath\\mime_content000.canyoutell"));
+
+ //Remove test directory
+ DeleteDirL(&utils, ptrMimeDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(&utils);//utils
+ CleanupStack::PopAndDestroy(result2);//result1
+ CleanupStack::PopAndDestroy(result1);//result2
+ CleanupStack::PopAndDestroy(active);//active
+
+ }
+
+/**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest10L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3898 3899
+
+ @SYMTestCaseDesc Test PREQ699.13.0 Validates cache functionality with older timestamp.
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions Recognize a directory. Change the timestamp on one file to be older and alter
+ the mime type. Change the timestamp on the directory to be newer. Repeat the
+ directory recognition and ensure that the mime type has been updated..
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for html file creation
+ count = 1 CDataRecognitionResultArray::Count returns one entry of MIME type "text/html"
+ status = KErrNone for file content changed to text
+ count = 0 CDataRecognitionResultArray::Count returns zero entries of MIME type "text/html"
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest10L(RApaLsSession& aLs)
+ {
+ TBufC<50> mimeDir(KMimeDir);
+ TPtr ptrMimeDir (mimeDir.Des());
+
+ TBufC<50> mimeFile(KMimeFile);
+ TPtr ptrMimeFile(mimeFile.Des());
+
+ //Asynchronous folder file recognition Test Group 13
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result1);
+ CleanupStack::PushL(result2);
+
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ //Create directory for test files
+ CreateDirL(&utils, ptrMimeDir);
+
+ //Timestamp details for files
+ TTime time;
+ time.UniversalTime();
+
+ TTime aLaterTime(time);
+ TTimeIntervalMinutes aInterval(1);
+ aLaterTime+=(aInterval);
+
+ //Set the directory timestamp to be 'old'
+ theFS.SetModified(ptrMimeDir, time);
+
+ // Create file mime_content000.canyoutell with html content and 'old' time
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KHtmlContent, time);
+
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result1 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result1->Count();
+ TEST(count == 1);
+ }
+
+
+ //Change file content to text and set the timestamp to 'new'
+ //Change dir timestamp to 'old'
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KTextContent, aLaterTime);
+
+ //Set the directory timestamp to be 'new'
+ theFS.SetModified(ptrMimeDir, aLaterTime);
+
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.13.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result2 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result2->Count();
+ TEST(count == 0);
+ }
+
+ //Delete file
+ utils.DeleteFileL(_L("c:\\system\\data\\Mimepath\\mime_content000.canyoutell"));
+
+ //Remove test directory
+ DeleteDirL(&utils, ptrMimeDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(&utils);//utils
+ CleanupStack::PopAndDestroy(result2);//result1
+ CleanupStack::PopAndDestroy(result1);//result2
+ CleanupStack::PopAndDestroy(active);//active
+
+ }
+
+/**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest11L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3989 3899
+
+ @SYMTestCaseDesc Test PREQ699.14.0 Validates cache functionality with substituted directory
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions Recognize a directory. Substitute a directory of the same name with
+ different contents and repeat the recognition. Ensure that the file
+ contents are correctly listed.
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for file creation
+ count = 4 CDataRecognitionResultArray::Count returns four entries of MIME type "text/html"
+ status = KErrNone for file content changed to text
+ count = 2 CDataRecognitionResultArray::Count returns two entries of MIME type "text/html"
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest11L(RApaLsSession& aLs)
+ {
+ _LIT(KMimeDir1,"c:\\system\\data\\Mimepath1\\");
+ _LIT(KMimeDir2,"c:\\system\\data\\Mimepath2\\");
+
+ _LIT(KMimeDir1Html,"c:\\system\\data\\Mimepath1\\dir1_html");
+ _LIT(KMimeDir1Text,"c:\\system\\data\\Mimepath1\\dir1_text");
+ _LIT(KMimeDir2Html,"c:\\system\\data\\Mimepath2\\dir2_html");
+ _LIT(KMimeDir2Text,"c:\\system\\data\\Mimepath2\\dir2_text");
+
+ //After directory renaming
+ _LIT(KRenameHtml,"c:\\system\\data\\Mimepath1\\dir2_html");
+ _LIT(KRenameText,"c:\\system\\data\\Mimepath1\\dir2_text");
+
+ TBufC<50> mimeDir1(KMimeDir1);
+ TPtr ptrMimeDir1 (mimeDir1.Des());
+
+ TBufC<50> mimeDir2(KMimeDir2);
+ TPtr ptrMimeDir2 (mimeDir2.Des());
+
+ TBufC<50> mimeDir1Html(KMimeDir1Html);
+ TPtr ptrFile1x4(mimeDir1Html.Des());
+
+ TBufC<50> mimeDir1Text(KMimeDir1Text);
+ TPtr ptrFile1x2(mimeDir1Text.Des());
+
+ TBufC<50> mimeDir2Html(KMimeDir2Html);
+ TPtr ptrFile2x2(mimeDir2Html.Des());
+
+ TBufC<50> mimeDir2Text(KMimeDir2Text);
+ TPtr ptrFile2x4(mimeDir2Text.Des());
+
+ TBufC<50> renameText(KRenameText);
+ TPtr ptrRenameText(renameText.Des());
+
+ TBufC<50> renameHtml(KRenameHtml);
+ TPtr ptrRenameHtml(renameHtml.Des());
+
+ //"Asynchronous folder file recognition Test Group 14
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result1);
+ CleanupStack::PushL(result2);
+
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ //Create directories for test files
+ CreateDirL(&utils, ptrMimeDir1);
+ CreateDirL(&utils, ptrMimeDir2);
+
+ //Timestamp details for files
+ TTime time;
+ time.UniversalTime();
+
+ TTime aLaterTime(time);
+ TTimeIntervalMinutes aInterval(1);
+ aLaterTime+=(aInterval);
+
+ // Fill the first directory with files
+ // Create files dir1_html000.html - dir1_html003.html with html content
+ // Create files dir1_text000.txt - dir1_text001.txt with text content
+ CreateFilesL(theFS, file, ptrFile1x4, (TDesC&)KSuffixHtml, 4, KHtmlContent, time);
+ CreateFilesL(theFS, file, ptrFile1x2, (TDesC&)KSuffixText, 2, KTextContent, time);
+
+ // Fill the second directory with files
+ // Create files dir2_text000.txt - dir2_text003.txt with text content
+ // Create files dir2_html001.html - dir2_html002.html with html content
+ CreateFilesL(theFS, file, ptrFile2x4, (TDesC&)KSuffixText, 4, KTextContent, time);
+ CreateFilesL(theFS, file, ptrFile2x2, (TDesC&)KSuffixHtml, 2, KHtmlContent, time);
+
+ //Test RecognizeFilesL on first directory with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir1,_L8("text/html"), *result1 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result1->Count();
+ TEST(count == 4);
+ }
+
+
+ //Delete first directory (KMimeDir1) and rename second directory to be the
+ //first (KMimeDir2 -> KMimeDir1)
+ DeleteFilesL(&utils, ptrFile1x4, (TDesC&)KSuffixHtml, 4);
+ DeleteFilesL(&utils, ptrFile1x2, (TDesC&)KSuffixText, 2);
+ DeleteDirL(&utils, ptrMimeDir1);
+ utils.RenameDirectoryL(mimeDir2, mimeDir1);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.14.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir1,_L8("text/html"), *result2 ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result2->Count();
+ TEST(count == 2);
+ }
+
+ //Bin out all the remaining created files
+ DeleteFilesL(&utils, ptrRenameText, (TDesC&)KSuffixText, 4);
+ DeleteFilesL(&utils, ptrRenameHtml, (TDesC&)KSuffixHtml, 2);
+
+ //Remove test directory
+ DeleteDirL(&utils, ptrMimeDir1);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(4, active); // utils, result2, result1, active
+
+ }
+
+/**
+ @SYMTestCaseID T_Serv3Step_DoSyncRecognizerTest4L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3898
+
+ @SYMTestCaseDesc Test PREQ699.15.0, PREQ699.15.1 Validates cache performance with a typical directory
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Implemented
+
+ @SYMTestActions 1st Recognition - Recognize a directory that has significant file content
+ with the cache enabled and log the time taken.
+ 15.0 Repeat the recognition on the directory, it should be faster than
+ the first recognition.
+ 15.1 Alter a number of files and repeat, again logging the time. The time
+ taken should be faster than the 1st recognition, but slower than test 15.0
+
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for file creation
+ 15.0 Time taken faster than 1st recognition
+ 15.1 Time taken faster than 1st recognition, but slower than 15.0
+ */
+void CT_Serv3Step::DoSyncFolderRecognizerTest4L(RApaLsSession& aLs)
+{
+ //Synchronous folder file recognition Test Group 15
+ _LIT(KTestAppSource, "Z:\\System\\data\\" );
+ _LIT(KTestAppDest, "C:\\System\\data\\TestPath\\" );
+ _LIT(KEmpty, "");
+
+ _LIT(KTestWaitingForApplistUpdate,"\nWaiting %d microseconds for applist to be updated");
+ const TInt KApplistUpdateTime = 8000000;
+
+ TBufC<128> fileDir(KEmpty);
+ TPtr ptrFileDir(fileDir.Des());
+
+ CDataRecognitionResultArray* result1 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result2 = new(ELeave) CDataRecognitionResultArray();
+ CDataRecognitionResultArray* result3 = new(ELeave) CDataRecognitionResultArray();
+
+ CleanupStack::PushL(result1);
+ CleanupStack::PushL(result2);
+ CleanupStack::PushL(result3);
+
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ // Remove Test app from the file system
+ CFileMan* fileManager = CFileMan::NewL (theFS);
+
+ INFO_PRINTF1(_L("Copying the app to C"));
+ TEST(KErrNone == fileManager->Copy (KTestAppSource, KTestAppDest, CFileMan::EOverWrite ));
+
+ INFO_PRINTF2(KTestWaitingForApplistUpdate, KApplistUpdateTime);
+ User::After(KApplistUpdateTime);
+
+ TTime time;
+ TTime timeLater;
+
+ //1st recognition
+ time.HomeTime();
+ TInt ret=aLs.RecognizeFilesL(KTestAppDest,*result1);
+ timeLater.HomeTime();
+ TEST(ret==KErrNone);
+ User::LeaveIfError(ret);
+
+ TTimeIntervalMicroSeconds delayNoCache = timeLater.MicroSecondsFrom(time);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.15.0"));
+ time.HomeTime();
+ ret=aLs.RecognizeFilesL(KTestAppDest,*result2);
+ timeLater.HomeTime();
+ TEST(ret==KErrNone);
+ User::LeaveIfError(ret);
+
+ TTimeIntervalMicroSeconds delayCache = timeLater.MicroSecondsFrom(time);
+
+ //Modify the timestamps on a few files
+ TInt count = result1->Count();
+ for(TInt i=1; i < (count/2); i++)
+ {
+ TDataRecognitionResult res;
+ result1->GetDataRecognitionResultL(res, i);
+ TFileName fileName;
+ result1->GetFileNameL(fileName, i);
+
+ ptrFileDir.Copy(KTestAppDest);
+ ptrFileDir.Append(fileName);
+
+ time.HomeTime();
+ theFS.SetModified(ptrFileDir, time);
+ }
+
+ INFO_PRINTF2(KTestWaitingForApplistUpdate, KApplistUpdateTime);
+ User::After(KApplistUpdateTime);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.15.1"));
+ time.HomeTime();
+ ret=aLs.RecognizeFilesL(KTestAppDest,*result3);
+ timeLater.HomeTime();
+ TEST(ret==KErrNone);
+ User::LeaveIfError(ret);
+
+ TTimeIntervalMicroSeconds delayCache2 = timeLater.MicroSecondsFrom(time);
+#ifndef __WINS__
+ // On Emulator, these time related checks cannot always be ensured.
+ TEST(delayCache2 > delayCache);
+ TEST(delayCache2 < delayNoCache);
+#endif
+
+ // Cleanup
+ delete fileManager;
+ CleanupStack::PopAndDestroy(3, result1); // result3, result2, result1
+}
+
+/**
+ @SYMTestCaseID T_Serv3Step_DoAsyncRecognizerTest13L
+
+ @SYMPREQ 699
+
+ @SYMREQ 3899
+
+ @SYMTestCaseDesc Test PREQ699.17.0 Validates performance of recognition.
+
+ @SYMTestPriority High
+
+ @SYMTestStatus Not Implemented
+
+ @SYMTestActions Call RecognizeFilesL() without a filter on a directory
+ containing a text file named text.canyoutell
+
+ API Calls:\n
+ RApaLsSession::RecognizeFilesL(const TDesC& aPath,
+ const TDesC8& aDataType,
+ CDataRecognitionResultArray& aResult,
+ TRequestStatus& aStatus);
+ CDataRecognitionResultArray::CDataRecognitionResultArray();
+ CDataRecognitionResultArray::Count() const;
+
+ @SYMTestExpectedResults\n
+ status = KErrNone for file creation
+ count = 1 returned
+ */
+void CT_Serv3Step::DoAsyncFolderRecognizerTest13L(RApaLsSession& aLs)
+{
+ //Asynchronous folder file recognition Test Group 17
+ TBufC<50> mimeDir(KMimeDir);
+ TPtr ptrMimeDir (mimeDir.Des());
+
+ TBufC<350> mimeFile(KMimeFile);
+ TPtr ptrMimeFile(mimeFile.Des());
+
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ RFs theFS;
+ theFS.Connect();
+ RFile file;
+
+ RSmlTestUtils utils;
+ CleanupClosePushL(utils);
+
+ //Create directory for test files
+ CreateDirL(&utils, ptrMimeDir);
+
+ //Timestamp details for files
+ TTime time;
+ time.UniversalTime();
+
+ // Create file mime_content000.canyoutell with text content
+ CreateFilesL(theFS, file, ptrMimeFile, (TDesC&)KSuffixUnknown, 1, KHtmlContent, time);
+
+ INFO_PRINTF1(_L("Asynchronous folder file Recognition Test PREQ699.17.0"));
+ //Test RecognizeFilesL with a MIME type filter "text/html"
+ aLs.RecognizeFilesL(KMimeDir,_L8("text/html"), *result ,active->iStatus);
+
+ active->StartL();//set active
+ CActiveScheduler::Start();
+
+ TEST(active->iStatus==KErrNone);
+ if (active->iStatus==KErrNone)
+ {
+ TUint count = result->Count();
+ TEST(count == 1);
+ }
+
+ DeleteFilesL(&utils, ptrMimeFile, (TDesC&)KSuffixUnknown, 1);
+
+ //Remove test directory
+ DeleteDirL(&utils, ptrMimeDir);
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(&utils);//utils
+ CleanupStack::PopAndDestroy(result);//result2
+ CleanupStack::PopAndDestroy(active);//active
+
+}
+/*
+
+@SYMTestCaseID APPFWK-APPARC-0098
+
+@SYMDEF INC125788
+
+@SYMTestCaseDesc The test verify that RApaLsSession::CancelRecognizeFiles() complete TRequestStatus with KErrCancel
+ that was passed to RApaLsSession::RecognizeFilesL() when cancelling the outstanding async recognition request.
+
+@SYMTestPriority High
+
+@SYMTestStatus Implemented
+
+@SYMTestActions
+1.RApaLsSession::RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus)
+is called to get data (MIME) types for files in a specified directory.
+2.Outstanding async recognition request is cancelled using RApaLsSession::CancelRecognizeFiles().
+
+@SYMTestExpectedResults
+RApaLsSession::CancelRecognizeFiles() complete the TRequestStatus with KErrCancel.
+
+*/
+void CT_Serv3Step::DoAsyncFolderRecognizerTest14L(RApaLsSession& aLs)
+ {
+ //Setup Active Object
+ CActiveTest2* active = new(ELeave) CActiveTest2();
+ CleanupStack::PushL(active);
+
+ CDataRecognitionResultArray* result = new(ELeave) CDataRecognitionResultArray();
+ CleanupStack::PushL(result);
+
+ //Check results and Stop AS
+ _LIT(KStandardDir,"z:\\system\\data\\Testpath\\");
+
+ INFO_PRINTF1(_L("Asynchronous RecognizeFilesL Test"));
+ aLs.RecognizeFilesL(KStandardDir,*result,active->iStatus);
+ active->StartL();//set active
+ TEST(active->iStatus==KRequestPending);
+ INFO_PRINTF2(_L("RecognizeFilesL: iStatus = %d\n"), active->iStatus.Int());
+
+ aLs.CancelRecognizeFiles();
+ TEST(active->iStatus==KErrCancel);
+ INFO_PRINTF2(_L("CancelRecognizeFiles: iStatus = %d\n"), active->iStatus.Int());
+ CActiveScheduler::Start();
+
+ // Cleanup
+ CleanupStack::PopAndDestroy(result);//result
+ CleanupStack::PopAndDestroy(active);//active
+ }
+/**
+* Auxiliary Fn for the entire Test Step
+*
+* This method initiates all the tests.
+*
+*/
+TInt CT_Serv3Step::DoServComTestL()
+ {
+ INFO_PRINTF1(_L("Testing Server Com"));
+
+ RFs theServFs;
+ TInt ret = theServFs.Connect();
+ TEST(ret==KErrNone);
+ CleanupClosePushL(theServFs);
+
+
+ RTestableApaLsSession ls;
+ ret = ls.Connect();
+ TEST(ret==KErrNone);
+ CleanupClosePushL(ls);
+
+ //wait for CExtrasAppKeyLayout to open up a RApaLsSession so it doesn't mess with our result
+ //unsure why it affects this test but not the others
+ User::After(10000000);
+
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoSyncFolderRecognizerTest1L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoSyncFolderRecognizerTest2L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoSyncFolderRecognizerTest3L(ls), ls.FlushRecognitionCache() );
+
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest1L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest2L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest3L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest4L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest5L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest6L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest7L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest8L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest9L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest10L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest11L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoSyncFolderRecognizerTest4L(ls), ls.FlushRecognitionCache() );
+ HEAP_TEST_LS_SESSION(ls, 0, 0, DoAsyncFolderRecognizerTest13L(ls), ls.FlushRecognitionCache() );
+ //DONT_CHECK Skips the heap check at server side. This heap imbalance occurs randomly in server side
+ // while canceling the outstanding async request.
+ HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, DoAsyncFolderRecognizerTest14L(ls), ls.FlushRecognitionCache() );
+ CleanupStack::PopAndDestroy(&ls);
+
+ // close the server session and we have done some type store reloading
+ CleanupStack::PopAndDestroy(&theServFs);
+
+ return KErrNone;
+ }
+
+
+
+TVerdict CT_Serv3Step::doTestStepPreambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+ {
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+TVerdict CT_Serv3Step::doTestStepPostambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+ {
+ return TestStepResult();
+ }
+
+void CT_Serv3Step::CreateDirL(RSmlTestUtils* aPtrUtils, TPtr aDirName)
+ {
+ User::LeaveIfError(aPtrUtils->Connect());
+ aPtrUtils->CreateDirectoryL(aDirName);
+
+ //Delay required to prevent armv5 failure
+ const TInt KApplistUpdateTime = 800000;
+ User::After(KApplistUpdateTime);
+ }
+
+void CT_Serv3Step::CreateFilesL(RFs& aFS, RFile& aFile, TPtr aFileRoot, TDesC& aSuffix, TInt aFileNumber, const TDesC8& aFileContent, TTime aTime = 0)
+ {
+ if(aTime == 0)
+ {
+ aTime.UniversalTime();
+ }
+
+ for(TInt counter=0; counter<aFileNumber; counter++)
+ {
+ aFileRoot.AppendNumFixedWidth(counter, EDecimal, KFixedNumWidth);
+ aFileRoot.Append(aSuffix);
+
+ //Creates a file if does not already exist. If file exists,
+ //content is overwritten
+ TEST(KErrNone == aFile.Replace(aFS, aFileRoot, EFileWrite));
+
+ TEST(KErrNone == aFile.Write(aFileContent));
+ TEST(KErrNone == aFile.SetModified(aTime));
+ TEST(KErrNone == aFile.Flush());
+ aFile.Close();
+
+ TInt Length = aFileRoot.Length();
+ TInt DeleteLength = aSuffix.Length() + KFixedNumWidth;
+ aFileRoot.Delete( (Length - DeleteLength) , DeleteLength);
+ }
+
+ //Delay required to prevent armv5 failure
+ const TInt KApplistUpdateTime = 800000;
+ User::After(KApplistUpdateTime);
+ }
+
+void CT_Serv3Step::DeleteDirL(RSmlTestUtils* aPtrUtils, TPtr aDirName)
+ {
+ aPtrUtils->DeleteDirectoryL(aDirName);
+ }
+
+void CT_Serv3Step::DeleteFilesL(RSmlTestUtils* aPtrUtils, TPtr aDirName, TDesC& aSuffix, TInt aFileNumber)
+ {
+ for(TInt counter=0; counter<aFileNumber; counter++)
+ {
+ aDirName.AppendNumFixedWidth(counter, EDecimal, KFixedNumWidth);
+ aDirName.Append(aSuffix);
+ aPtrUtils->DeleteFileL(aDirName);
+ TInt Length = aDirName.Length();
+ TInt DeleteLength = aSuffix.Length() + KFixedNumWidth;
+ aDirName.Delete( (Length - DeleteLength) , DeleteLength);
+ }
+ }
+
+TVerdict CT_Serv3Step::doTestStepL()
+/**
+ * Override of base class virtual.
+ * @return - TVerdict code
+ */
+{
+ //Set up active scheduler
+ iActiveScheduler= new(ELeave) CActiveScheduler;
+ CActiveScheduler::Install(iActiveScheduler);
+
+ FbsStartup();
+ TInt ret = RFbsSession::Connect();
+ TEST(ret==KErrNone);
+
+ // run the testcode (inside an alloc heaven harness)
+ INFO_PRINTF1(_L("About to start tests:"));
+ TRAP(ret,DoServComTestL());
+ INFO_PRINTF2(_L(" DoServComTestL completes with %d"), ret);
+ TEST(ret==KErrNone);
+
+ INFO_PRINTF1(_L("Test Completed!"));
+ return TestStepResult();
+
+}
+
+
+/**
+*
+* Methods for Active Object Test
+*
+* Used in for Asynchronous Data Recognizer tests
+*
+*/
+
+CActiveTest2::CActiveTest2()
+ :CActive(0)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+CActiveTest2::~CActiveTest2()
+ {
+ Cancel();
+ }
+
+void CActiveTest2::DoCancel()
+ {
+ TRequestStatus* s=&iStatus;
+ User::RequestComplete(s, KErrNone);
+ }
+
+void CActiveTest2::StartL()
+ {
+ SetActive();
+ }
+
+void CActiveTest2::RunL()
+ {
+ //Stop AS
+ CActiveScheduler::Stop();
+ }
+