diff -r 000000000000 -r f979ecb2b13e pimappservices/calendar/tsrc/tcal_fileaccess.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappservices/calendar/tsrc/tcal_fileaccess.cpp Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,328 @@ +// 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: +// + +#include "caltestlib.h" + +#include +#include + +_LIT(KTestName, "TCal_FileAccess"); +RTest test(KTestName); +_LIT(KFileName, "C:TestFile_FileAccess"); +_LIT(KSecondFileName, "C:TestFile_FileAccess_2"); +_LIT(KThirdFileName, "C:TestFile_FileAccess_3"); + + +class CFileAccessTestManager : public CBase + { +public: + static CFileAccessTestManager* NewLC(); + void RunAllTestsL(); + ~CFileAccessTestManager(); + +private: + void ConstructL(); + void TestDefaultFileNameL(); + void TestCreateAndOpenFileL(); + void TestListAgendaFilesL(); + void TestDeleteFileL(); + void TestCreateBadFileNameL(); + void TestCreateLongFileNameL(); + +private: + CCalSession* iModel; + CCalTestLibrary* iTestLib; + }; + +CFileAccessTestManager* CFileAccessTestManager::NewLC() + { + CFileAccessTestManager* self = new (ELeave) CFileAccessTestManager(); + + CleanupStack::PushL(self); + self->ConstructL(); + + return (self); + } + +CFileAccessTestManager::~CFileAccessTestManager() + { + delete iTestLib; + } + +void CFileAccessTestManager::ConstructL() + { + iTestLib = CCalTestLibrary::NewL(); + iModel = &(iTestLib->GetSession()); + } + +void CFileAccessTestManager::TestDefaultFileNameL() + { + _LIT(KDefaultFileName, "C:Calendar"); + + const TPtrC16 KName = iModel->DefaultFileNameL(); + test(KName == KDefaultFileName); + + test.Printf(iModel->DefaultFileNameL()); + test.Printf(_L("\n")); + } + + +void CFileAccessTestManager::RunAllTestsL() + { + + test.Next(_L("GetDefaultName")); + TestDefaultFileNameL(); + + test.Next(_L("CreateAndOpenFile")); + TestCreateAndOpenFileL(); + + test.Next(_L("ListsAgendaFiles")); + TestListAgendaFilesL(); + + test.Next(_L("CloseAndDeleteFile")); + TestDeleteFileL(); + + test.Next(_L("CreateBadFileName")); + TestCreateBadFileNameL(); + + test.Next(_L("CreateLongFileName")); + TestCreateLongFileNameL(); + } + +// Test the Opening of a non-existent File +// Test Creating a File +// Test The Opening of the newly created file +void CFileAccessTestManager::TestCreateAndOpenFileL() + { + _LIT(KBadName, "C:NonExistentFile"); + TRAPD(expectedErr, iModel->OpenL(KBadName)); + test(expectedErr == KErrNotFound); + + _LIT(KFullPathName, "C:\\private\\10003a5b\\TestFile_FileAccess"); + TRAP(expectedErr, iModel->OpenL(KFullPathName)); + test(expectedErr == KErrNotSupported); + + TRAPD(err, iModel->CreateCalFileL(KFileName)); + test(err == KErrAlreadyExists || err == KErrNone); + + iModel->OpenL(KFileName); + } + +// Test that three created files are Listing in ListCalFilesL +// (Other files will exist in the Cal private directory due to other tests) +void CFileAccessTestManager::TestListAgendaFilesL() + { + TBool foundFirstFile((EFalse)); + TBool foundSecondFile((EFalse)); + TBool foundThirdFile((EFalse)); + + // create Three files and check they can be listed + TRAPD(err, iModel->CreateCalFileL(KFileName)); + test(err == KErrAlreadyExists); // created in first test step + + TRAPD(errSecondCreate, iModel->CreateCalFileL(KSecondFileName)); + test(errSecondCreate == KErrNone); + + TRAPD(errThirdCreate, iModel->CreateCalFileL(KThirdFileName)); + test(errThirdCreate == KErrNone); + + CDesCArray* agendaFiles(iModel->ListCalFilesL()); + CleanupStack::PushL(agendaFiles); + + for(TInt i = 0; i < agendaFiles->MdcaCount(); ++i) // there may be other files from other tests + { + test.Printf(agendaFiles->MdcaPoint(i)); + test.Printf(_L("\n")); + + foundFirstFile = foundFirstFile || ((*agendaFiles)[i]) == KFileName; + foundSecondFile = foundSecondFile || ((*agendaFiles)[i]) == KSecondFileName; + foundThirdFile = foundThirdFile || ((*agendaFiles)[i]) == KThirdFileName; + } + + test(foundFirstFile); + test(foundSecondFile); + test(foundThirdFile); + + CleanupStack::PopAndDestroy(agendaFiles); + } + +// Delete 2 of the 3 Files and check they are not listed in ListCalFilesL and the other file is +// Delete a non-existent file +void CFileAccessTestManager::TestDeleteFileL() + { + iModel->DeleteCalFileL(KFileName); + iModel->DeleteCalFileL(KSecondFileName); + + TBool foundFirstFile((EFalse)); + TBool foundSecondFile((EFalse)); + TBool foundThirdFile((EFalse)); + + CDesCArray* agendaFiles(iModel->ListCalFilesL()); + CleanupStack::PushL(agendaFiles); + + for(TInt i = 0; i < agendaFiles->MdcaCount(); ++i) // there may be other files from other tests + { + foundFirstFile = foundFirstFile || ((*agendaFiles)[i]) == KFileName; + foundSecondFile = foundSecondFile || ((*agendaFiles)[i]) == KSecondFileName; + foundThirdFile = foundThirdFile || ((*agendaFiles)[i]) == KThirdFileName; + } + + test(!foundFirstFile); + test(!foundSecondFile); + test(foundThirdFile); + + CleanupStack::PopAndDestroy(agendaFiles); + iModel->DeleteCalFileL(KThirdFileName); + + TRAPD(deleteErr, iModel->DeleteCalFileL(KThirdFileName)); + test(deleteErr == KErrNotFound); + } + +void CFileAccessTestManager::TestCreateBadFileNameL() + { + // Test for INC122832 + TBuf<239> nameExceeds238Chars; + nameExceeds238Chars.Append(_L("C:")); + nameExceeds238Chars.AppendFill('a', 237); + TRAPD(err2, iModel->CreateCalFileL(nameExceeds238Chars)); + test(err2 == KErrBadName); + + TBuf<237> nameExceeds236CharsWithNoDrive; + nameExceeds236CharsWithNoDrive.AppendFill('a', 237); + TRAPD(err3, iModel->CreateCalFileL(nameExceeds236CharsWithNoDrive)); + test(err3 == KErrBadName); + } + + +void CFileAccessTestManager::TestCreateLongFileNameL() + { + // Test for DEF113074 + TBuf<200> maxLengthFilename; + maxLengthFilename.Append(_L("C:")); + maxLengthFilename.AppendFill('a', 198); + TRAPD(err, iModel->CreateCalFileL(maxLengthFilename)); + test(err == KErrNone); + //Test to create same existing file + TRAPD(err1, iModel->CreateCalFileL(maxLengthFilename)); + test(err1 == KErrAlreadyExists || err1 == KErrNone); + iModel->OpenL(maxLengthFilename); + iModel->DeleteCalFileL(maxLengthFilename); + + + //Test to create longfile name with invalid chars + TBuf<201> maxLengthInvalidFilename; + maxLengthInvalidFilename.Append(_L("C:")); + maxLengthInvalidFilename.AppendFill('*', 199); + TRAPD(err2, iModel->CreateCalFileL(maxLengthInvalidFilename)); + test(err2 == KErrBadName); + + + //Test to create no drive name + TBuf<200> maxLengthNoDriveFilename; + maxLengthNoDriveFilename.AppendFill('a', 200); + TRAPD(err3, iModel->CreateCalFileL(maxLengthNoDriveFilename)); + test(err3 == KErrNone); + iModel->DeleteCalFileL(maxLengthNoDriveFilename); + + //Test to create long filename with different chars + TBuf<200> maxLengthFilenameDiffChars; + maxLengthFilenameDiffChars.Append(_L("C:")); + maxLengthFilenameDiffChars.AppendFill('i', 50); + maxLengthFilenameDiffChars.AppendFill('2', 50); + maxLengthFilenameDiffChars.AppendFill('@', 48); + maxLengthFilenameDiffChars.AppendFill('x', 40); + maxLengthFilenameDiffChars.AppendFill('w', 10); + TRAPD(err4, iModel->CreateCalFileL(maxLengthFilenameDiffChars)); + test(err4 == KErrNone); + iModel->OpenL(maxLengthFilenameDiffChars); + iModel->DeleteCalFileL(maxLengthFilenameDiffChars); + + //Test to create file name exceed max length + TBuf<201> maxLengthExceedFilename; + maxLengthExceedFilename.Append(_L("C:")); + maxLengthExceedFilename.AppendFill('g', 199); + TRAPD(err5, iModel->CreateCalFileL(maxLengthExceedFilename)); + test(err5 == KErrBadName); + + } + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * DoTestL() + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +static void DoTestL() + { + CFileAccessTestManager* testManager = CFileAccessTestManager::NewLC(); + + + TPerformanceTimer timer(test); + timer.Start(); + + + // Run the test suite + + testManager->RunAllTestsL(); + + + timer.Stop(); + test.Printf(_L("Done\n")); + // printout performance time + timer.PrintOut(); + + + CleanupStack::PopAndDestroy(testManager); + } + + +/** +@SYMTestCaseID PIM-TCAL-FILEACCESS-0001 +*/ +TInt E32Main() + { + __UHEAP_MARK; + + test.Start(_L("@SYMTESTCaseID:PIM-TCAL-FILEACCESS-0001 Calendar Interim API File Access test suite")); + + test.Title(); + + CTrapCleanup* trapCleanup = CTrapCleanup::New(); + if (!trapCleanup) + { + return KErrNoMemory; + } + + CActiveScheduler* scheduler = new CActiveScheduler(); + if (!scheduler) + { + delete trapCleanup; + return KErrNoMemory; + } + CActiveScheduler::Install(scheduler); + + TRAPD(ret, DoTestL()); + test(ret == KErrNone); + + delete scheduler; + delete trapCleanup; + + test.End(); + test.Close(); + + __UHEAP_MARKEND; + + return (KErrNone); + } +