--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/f32test/rofs/src/t_rofsattrib.cpp Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,267 @@
+// Copyright (c) 2008-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 attribute settings on files
+//
+//
+
+#include <e32std.h>
+#include <e32std_private.h>
+#include <e32test.h>
+#include <f32file.h>
+#include "utl.h"
+
+
+
+GLREF_D RFs TheFs;
+
+RTest test( _L("T_ROFSATTRIB") );
+
+_LIT( KFileRsh1, "rsh" );
+_LIT( KFileRs1, "rs" );
+_LIT( KFileRh1, "rh" );
+_LIT( KFileSh1, "sh" );
+_LIT( KFileS1, "s" );
+_LIT( KFileH1, "h" );
+_LIT( KFileR1, "r" );
+_LIT( KFileR2, "r2" );
+_LIT( KFileR3, "r3" );
+_LIT( KFileS2, "s2" );
+_LIT( KFileS3, "s3" );
+_LIT( KFileH2, "h2" );
+_LIT( KFileH3, "h3" );
+_LIT( KFileRs2, "rs2" );
+_LIT( KFileRs3, "rs3" );
+_LIT( KFileRh2, "rh2" );
+_LIT( KFileRh3, "rh3" );
+_LIT( KFileRsh2, "rsh2" );
+_LIT( KFileRsh3, "rsh3" );
+
+_LIT( KDirectoryBase, "Attrib\\");
+
+LOCAL_D const TUint KFileListAllAttribs[] =
+ {
+ KEntryAttReadOnly | KEntryAttSystem | KEntryAttHidden, // KFileRsh1
+ KEntryAttReadOnly | KEntryAttSystem, // KFileRs1
+ KEntryAttReadOnly | KEntryAttHidden, // KFileRh1
+ KEntryAttSystem | KEntryAttHidden,// KFileSh1
+ KEntryAttSystem, // KFileS1
+ KEntryAttHidden, // KFileH1
+ KEntryAttReadOnly, // KFileR1
+ KEntryAttReadOnly, // KFileR2
+ KEntryAttReadOnly, // KFileR3
+ KEntryAttSystem, // KFileS2
+ KEntryAttSystem, // KFileS3
+ KEntryAttHidden, // KFileH2
+ KEntryAttHidden, // KFileH3
+ KEntryAttReadOnly | KEntryAttSystem, // KFileRs2
+ KEntryAttReadOnly | KEntryAttSystem, // KFileRs3
+ KEntryAttReadOnly | KEntryAttHidden, // KFileRh2
+ KEntryAttReadOnly | KEntryAttHidden, // KFileRh3
+ KEntryAttReadOnly | KEntryAttSystem | KEntryAttHidden, // KFileRsh2
+ KEntryAttReadOnly | KEntryAttSystem | KEntryAttHidden, // KFileRsh3
+ };
+
+LOCAL_D const TDesC* KFileListAll[] =
+ {
+ &KFileRsh1,
+ &KFileRs1,
+ &KFileRh1,
+ &KFileSh1,
+ &KFileS1,
+ &KFileH1,
+ &KFileR1,
+ &KFileR2,
+ &KFileR3,
+ &KFileS2,
+ &KFileS3,
+ &KFileH2,
+ &KFileH3,
+ &KFileRs2,
+ &KFileRs3,
+ &KFileRh2,
+ &KFileRh3,
+ &KFileRsh2,
+ &KFileRsh3,
+ NULL
+ };
+
+LOCAL_D const TDesC* KFileListReadOnly[] =
+ {
+ &KFileRsh1,
+ &KFileRs1,
+ &KFileRh1,
+ &KFileR1,
+ &KFileR2,
+ &KFileR3,
+ &KFileRs2,
+ &KFileRs3,
+ &KFileRh2,
+ &KFileRh3,
+ &KFileRsh2,
+ &KFileRsh3,
+ NULL
+ };
+
+LOCAL_D const TDesC* KFileListNotHidden[] =
+ {
+ &KFileRs1,
+ &KFileS1,
+ &KFileR1,
+ &KFileR2,
+ &KFileR3,
+ &KFileS2,
+ &KFileS3,
+ &KFileRs2,
+ &KFileRs3,
+ NULL
+ };
+
+
+LOCAL_D const TDesC* KFileListNotSystem[] =
+ {
+ &KFileRh1,
+ &KFileH1,
+ &KFileR1,
+ &KFileR2,
+ &KFileR3,
+ &KFileH2,
+ &KFileH3,
+ &KFileRh2,
+ &KFileRh3,
+ NULL
+ };
+
+
+LOCAL_D const TDesC* KFileListNotSystemAndHidden[] =
+ {
+ &KFileRsh1,
+ &KFileRs1,
+ &KFileRh1,
+ &KFileS1,
+ &KFileH1,
+ &KFileR1,
+ &KFileR2,
+ &KFileR3,
+ &KFileS2,
+ &KFileS3,
+ &KFileH2,
+ &KFileH3,
+ &KFileRs2,
+ &KFileRs3,
+ &KFileRh2,
+ &KFileRh3,
+ &KFileRsh2,
+ &KFileRsh3,
+ NULL
+ };
+
+
+LOCAL_D const TDesC* KFileListNotSystemOrHidden[] =
+ {
+ &KFileR1,
+ &KFileR2,
+ &KFileR3,
+ NULL
+ };
+
+
+
+_LIT( KDriveBase, " :\\" );
+_LIT( KWildCard, "*" );
+
+
+LOCAL_C void TestFileAttribsL(TInt aDriveToTest)
+ {
+ CDir* dir;
+
+ TFileName name(KDriveBase);
+ name[0] = TText('A' + aDriveToTest);
+ name.Append( KDirectoryBase );
+ name.Append( KWildCard );
+
+ TInt r = TheFs.GetDir( name, KEntryAttMatchMask, ESortNone, dir );
+ TEST_FOR_ERROR( r );
+ test( dir->Count() > 0 );
+
+ TInt i;
+ TEntry e;
+ for( i = 0; KFileListAll[i]; i++ )
+ {
+ e = dir->operator[](i);
+ test.Printf( _L("Found entry %S"), &e.iName );
+ test( e.iName == *KFileListAll[i] );
+
+ // check attributes
+ TEST_FOR_MATCH( e.iAtt, KFileListAllAttribs[i] );
+ }
+ TEST_FOR_MATCH( i, dir->Count() );
+ delete dir;
+ }
+
+
+LOCAL_C void TestScanFilesL( const TDesC* aFileList[], TUint aAttribMask, TInt aDriveToTest )
+ //
+ // Tests scanning a directory with attribute mask
+ //
+ {
+ CDir* dir;
+
+ TFileName name(KDriveBase);
+ name[0] = TText('A' + aDriveToTest);
+ name.Append( KDirectoryBase );
+ name.Append( KWildCard );
+
+ TInt r = TheFs.GetDir( name, aAttribMask, ESortNone, dir );
+ TEST_FOR_ERROR( r );
+
+ test( dir->Count() > 0 );
+
+ TInt i;
+ TEntry e;
+ for( i = 0; aFileList[i]; i++ )
+ {
+ e = dir->operator[](i);
+ test.Printf( _L("Found entry %S"), &e.iName );
+ test( e.iName == *aFileList[i] );
+ }
+ TEST_FOR_MATCH( i, dir->Count() );
+ delete dir;
+ }
+
+
+
+
+
+//************************
+// Entry point
+
+void DoTestL(TInt aDriveToTest)
+ {
+ test.Title();
+ test.Start( _L("Testing ROFS directory structure") );
+
+ const TUint KNotSystem = KEntryAttReadOnly | KEntryAttHidden;
+ const TUint KNotHidden = KEntryAttReadOnly | KEntryAttSystem;
+ const TUint KNotSystemOrHidden = KEntryAttNormal;
+
+ test.Next( _L("Checking attributes of files") );
+ TestFileAttribsL(aDriveToTest);
+ test.Next( _L("Testing not system") );
+ TestScanFilesL( KFileListNotSystem, KNotSystem, aDriveToTest );
+ test.Next( _L("Testing not hidden") );
+ TestScanFilesL( KFileListNotHidden, KNotHidden, aDriveToTest );
+ test.Next( _L("Testing not system or hidden") );
+ TestScanFilesL( KFileListNotSystemOrHidden, KNotSystemOrHidden, aDriveToTest );
+ test.End();
+ }