diff -r 000000000000 -r 96e5fb8b040d kerneltest/f32test/rofs/src/t_rofsmultiple.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/f32test/rofs/src/t_rofsmultiple.cpp Thu Dec 17 09:24:54 2009 +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 the License "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 opening of hidden, replaced and newly added files belonging to multiple ROFS. +// +// + +#include +#include +#include +#include +#include "utl.h" + +GLREF_D RFs TheFs; + +RTest test( _L("T_ROFSMULTIPLE") ); + +// Required to test multiple ROFS +_LIT( KTestHidden1, "Multiple\\hidden1.txt" ); +_LIT( KTestHidden2, "Multiple\\hidden2.txt" ); +_LIT( KTestHidden3, "Multiple\\hidden3.txt" ); +_LIT( KTestNew1, "Multiple\\new1.txt" ); +_LIT( KTestNew2, "Multiple\\new2.txt" ); +_LIT( KTestNew3, "Multiple\\new3.txt" ); +_LIT( KTestNew4, "Multiple\\new4.txt" ); +_LIT( KTestReplaceMe1, "Multiple\\replaceme1.txt" ); +_LIT( KTestReplaceMe2, "Multiple\\replaceme2.txt" ); +_LIT( KTestReplaceMe3, "Multiple\\replaceme3.txt" ); +_LIT( KTestReplaceMe4, "Multiple\\replaceme4.txt" ); +_LIT( KTestReplaceMe5, "Multiple\\replaceme5.txt" ); +_LIT( KTestRom, "Multiple\\rom.txt" ); +_LIT( KTestRomHide, "Multiple\\romhide.txt" ); +_LIT( KTestRomReplace, "Multiple\\romreplace.txt" ); +_LIT( KTestRomReplaceFat, "Multiple\\romreplacefat.txt" ); +_LIT8( KReplaceMe8FileContent1, "rofs1" ); +_LIT8( KReplaceMe8FileContent2, "rofs2" ); +_LIT8( KReplaceMe8FileContent3, "rofs3" ); +_LIT8( KReplaceMe8FileContent5, "cfat5" ); + + +_LIT( KRootFileMultiple, "Multiple\\multirofs.txt"); + +_LIT( KDriveBase, " :\\" ); + +const TInt KNewlyAddedFilesCount = 5; +const TDesC* const newlyAddedFilesArray[5] = + { + &KTestNew1, &KTestNew2, &KTestNew3, &KTestNew4, &KTestRom + }; + +const TInt KReplacedFilesCount = 7; +const TDesC* const replacedFilesArray[7] = + { + &KTestReplaceMe1, &KTestReplaceMe2, &KTestReplaceMe3, &KTestReplaceMe4, &KTestRomReplace, &KTestReplaceMe5, &KTestRomReplaceFat + }; + +const TInt KHiddenFilesCount = 4; +const TDesC* const hiddenFilesArray[4] = + { + &KTestHidden1, &KTestHidden2, &KTestHidden3, &KTestRomHide + }; + +LOCAL_C void TestMultipleRofsL(TInt aDriveToTest) +// +// Test multiple Rofs +// + { + TFileName name(KDriveBase); + name[0] = TText('A' + aDriveToTest); + TInt i; + // hidden + test.Next( _L("Test opening hidden files.") ); + for( i = 0; i < KHiddenFilesCount; i++ ) + { + name.SetLength( 3 ); // trim back to drive specifier + name.Append( *hiddenFilesArray[i] ); + test.Printf( _L("Opening file %S\n"), &name ); + RFile file; + TInt r = file.Open( TheFs, name, EFileRead ); + TEST_FOR_MATCH( r, KErrNotFound ); + file.Close(); + } + + // newly added + test.Next( _L("Test opening newly added files.") ); + for( i = 0; i < KNewlyAddedFilesCount; i++ ) + { + name.SetLength( 3 ); + name.Append( *newlyAddedFilesArray[i] ); + test.Printf( _L("Opening file %S\n"), &name ); + RFile file; + TInt r = file.Open( TheFs, name, EFileRead ); + TEST_FOR_ERROR( r ); + file.Close(); + } + + // replaced + test.Next( _L("Test opening replaced files.") ); + for( i = 0; i < KReplacedFilesCount; i++ ) + { + name.SetLength( 3 ); + name.Append( *replacedFilesArray[i] ); + test.Printf( _L("Opening file %S\n"), &name ); + RFile file; + TInt r = file.Open( TheFs, name, EFileRead ); + TEST_FOR_ERROR( r ); + TBuf8<5> buf; + r = file.Read( buf ); + TEST_FOR_ERROR( r ); + if ( i == 0 ) + test(buf == KReplaceMe8FileContent2); + else if (i<4) // i == 1 -> 3 + test(buf == KReplaceMe8FileContent3); + else if (i==4) + test(buf == KReplaceMe8FileContent1); + else + test(buf == KReplaceMe8FileContent5); + file.Close(); + } + } + +LOCAL_C void TestFilesInRomL(TInt aDriveToTest) +// +// Test whether files in ROFS appear to be in ROM area of Z: +// + { + test.Next( _L("Test if file is in ROM area of Z:") ); + TFileName name(KDriveBase); + name[0] = TText('A' + aDriveToTest); + + TInt i; + + for( i = 0; i < KNewlyAddedFilesCount; i++ ) + { + name.SetLength( 3 ); // trim back to drive specifier + name.Append( *newlyAddedFilesArray[i] ); + test.Printf( _L("Testing newly added file %S\n"), &name ); + + + if (i==KNewlyAddedFilesCount) + test( NULL != TheFs.IsFileInRom( name ) ); + else + test( NULL == TheFs.IsFileInRom( name ) ); + } + + test.Next( _L("Test if replaced file is in ROM area of Z:") ); + + for( i = 0; i < KReplacedFilesCount; i++ ) + { + name.SetLength( 3 ); + name.Append( *replacedFilesArray[i] ); + test.Printf( _L("Testing replaced file %S\n"), &name ); + test( NULL == TheFs.IsFileInRom( name ) ); + } + + test.Next( _L("Test if hidden file is in ROM area of Z:") ); + + for( i = 0; i < KHiddenFilesCount; i++ ) + { + name.SetLength( 3 ); + name.Append( *hiddenFilesArray[i] ); + test.Printf( _L("Testing hidden file %S\n"), &name ); + test( NULL == TheFs.IsFileInRom( name ) ); + } + } + +LOCAL_C void TestReadFileSectionL(TInt aDriveToTest) +// +// Test reading data from a file without opening it. +// + { + test.Next( _L("Testing ReadFileSection().")); + + TBuf8<12> testDes; + TInt r; + + TFileName name(KDriveBase); + name[0] = TText('A' + aDriveToTest); + TInt i; + for( i = 0; i < KNewlyAddedFilesCount; i++ ) + { + name.SetLength( 3 ); // trim back to drive specifier + name.Append( *newlyAddedFilesArray[i] ); + r=TheFs.ReadFileSection(name,0,testDes,3); + test(r==KErrNone); + test(testDes.Length()==3); + test(testDes==_L8("hel")); + + name.SetLength( 3 ); + name.Append( *newlyAddedFilesArray[i] ); + r=TheFs.ReadFileSection(name,0,testDes,4); + test(r==KErrNone); + test(testDes.Length()==4); + test(testDes==_L8("hell")); + + name.SetLength( 3 ); + name.Append( *newlyAddedFilesArray[i] ); + r=TheFs.ReadFileSection(name,1,testDes,4); + test(r==KErrNone); + test(testDes.Length()==4); + test(testDes==_L8("ello")); + } + + test.Next( _L("Testing ReadFileSection() on replaced files.")); + + for( i = 0; i < KReplacedFilesCount; i++ ) + { + name.SetLength( 3 ); + name.Append( *replacedFilesArray[i] ); + r=TheFs.ReadFileSection(name,4,testDes,1); + test(r==KErrNone); + test(testDes.Length()==1); + if ( i == 0 ) + test(testDes==_L8("2")); + else if (i<4) + test(testDes==_L8("3")); + else if (i==4) + test(testDes==_L8("1")); + else + test(testDes==_L8("5")); + } + + test.Next( _L("Testing ReadFileSection() on hidden files.")); + + for( i = 0; i < KHiddenFilesCount; i++ ) + { + name.SetLength( 3 ); + name.Append( *hiddenFilesArray[i] ); + r=TheFs.ReadFileSection(name,0,testDes,1); + test(r==KErrNotFound); + } + } + +LOCAL_C void TestEntryL(TInt aDriveToTest) +// +// Test accessing the entry details for a hidden file. +// + { + test.Next( _L("Test accessing the entry details for replaced files.") ); + TFileName name(KDriveBase); + name[0] = TText('A' + aDriveToTest); + TEntry entry; + TInt r; + + TTime dirtimes[4] = { TDateTime(2005,EDecember,9,2,0,3,0), // 10/12/2005 + TDateTime(2005,EDecember,14,4,30,33,0), // 15/12/2005 + TDateTime(2006,EJanuary,1,15,45,37,0), // 02/01/2006 + TDateTime(2006,EAugust,10,17,47,04,0) }; // 11/08/2006 + + TInt i; + for( i = 0; i < KReplacedFilesCount; i++ ) + { + name.SetLength( 3 ); // trim back to drive specifier + name.Append( *replacedFilesArray[i] ); + r = TheFs.Entry(name, entry); + test(r==KErrNone); + test (entry.iName==replacedFilesArray[i]->Right(entry.iName.Length())); + + if ( i == 0 ) + test(entry.iModified==dirtimes[1]); + else if (i<4) + test(entry.iModified==dirtimes[2]); + else if (i==4) + test(entry.iModified==dirtimes[0]); + else + test(entry.iModified==dirtimes[3]); + } + + test.Next( _L("Test accessing the entry details for hidden files.") ); + + for ( i = 0; i < KHiddenFilesCount; i++ ) + { + name.SetLength( 3 ); + name.Append( *hiddenFilesArray[i] ); + r = TheFs.Entry(name, entry); + test(r==KErrNotFound); + } + } + +//************************ +// Entry point + +void DoTestL(TInt aDriveToTest) + { + test.Title(); + test.Start( _L("Testing opening hidden, replaced and newly added files belonging to multiple ROFS.") ); + + test.Printf( _L("Looking for multiple ROFS..\n")); + TBool multipleRofs = EFalse; + TFileName name(KDriveBase); + name[0] = TText('A' + aDriveToTest); + + name.SetLength( 3 ); // trim back to drive specifier + name.Append( KRootFileMultiple ); + + RFile file; + test.Printf( _L("Attempt to open file %S..\n"), &name ); + TInt r = file.Open( TheFs, name, EFileRead ); + if(r==KErrNone) + { + multipleRofs=ETrue; + file.Close(); + test.Printf( _L("Multiple ROFS found. %S is present.\n"), &name); + } + else if(r==KErrNotFound) + { + test.Printf( _L("No multiple ROFS found. %S is not present.\n"), &name); + } + + if (multipleRofs) + { + TestMultipleRofsL(aDriveToTest); + TestFilesInRomL(aDriveToTest); + TestReadFileSectionL(aDriveToTest); + TestEntryL(aDriveToTest); + } + test.End(); + }