--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/f32test/rofs/src/t_rofstime.cpp Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,213 @@
+// Copyright (c) 2002-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:
+// Tests timestamp 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_ROFSTIME") );
+
+
+
+_LIT( KTestFile1, "root.txt" );
+_LIT( KTestFile2, "Mixed\\par1.txt" );
+_LIT( KTestFile3, "Mixed\\SubDir1\\sub1.txt" );
+_LIT( KTestFile4, "Mixed\\SubDir2\\sub2.txt" );
+_LIT( KTestFile5, "Mixed\\SubDir3\\sub3.txt" );
+_LIT( KTestFile6, "Mixed\\SubDir4\\sub4.txt" );
+_LIT( KTestFile7, "Mixed\\SubDir5\\sub5.txt" );
+_LIT( KTestFile8, "Mixed\\SubDir6\\sub6.txt" );
+_LIT( KTestFile9, "Mixed\\SubDir7\\sub7.txt" );
+_LIT( KTestFile10, "Mixed\\SubDir8\\sub8.txt" );
+_LIT( KTestFile11, "Mixed\\par2.txt" );
+_LIT( KTestFile12, "Mixed\\par3.txt" );
+_LIT( KTestFile13, "Mixed\\par4.txt" );
+_LIT( KTestFile14, "Mixed\\par5.txt" );
+_LIT( KTestFile15, "Mixed\\par6.txt" );
+_LIT( KTestFile16, "Mixed\\par7.txt" );
+_LIT( KTestFile17, "Mixed\\par8.txt" );
+_LIT( KTestFile18, "ext.txt" );
+
+_LIT( KDriveBase, " :\\" );
+_LIT( KDirectoryScanPath, "Mixed\\*" );
+
+//_LIT( KTimeStamp, "23/11/2001 6:44:07" );
+
+const TInt KYear = 2001;
+const TMonth KMonth = ENovember;
+const TInt KDay = 23 - 1;
+const TInt KHour = 6;
+const TInt KMinute = 44;
+const TInt KSecond = 7;
+
+const TInt KYearExt = 2005;
+const TMonth KMonthExt = EJune;
+const TInt KDayExt = 14 - 1;
+const TInt KHourExt = 20;
+const TInt KMinuteExt = 12;
+const TInt KSecondExt = 20;
+
+TTime gTime;
+
+
+const TDesC* const gTestFileArray[18] =
+ {
+ &KTestFile1, &KTestFile2, &KTestFile3, &KTestFile4, &KTestFile5,
+ &KTestFile6, &KTestFile7, &KTestFile8, &KTestFile9, &KTestFile10,
+ &KTestFile11, &KTestFile12, &KTestFile13, &KTestFile14, &KTestFile15,
+ &KTestFile16, &KTestFile17, &KTestFile18
+ };
+
+
+
+LOCAL_C void TestRFileL(TInt aDriveToTest, TBool aExtension)
+//
+// Tests that file modified timestamp is correct
+//
+ {
+
+ test.Next( _L("Test file modified time") );
+ TFileName name(KDriveBase);
+ name[0] = TText('A' + aDriveToTest);
+
+ TInt index =17;
+ if (aExtension) index =18;
+ for( TInt i = 0; i < index; i++ )
+ {
+ name.SetLength( 3 ); // trim back to drive specifier
+ name.Append( *gTestFileArray[i] );
+ test.Printf( _L("Opening file %S"), &name );
+ RFile file;
+ TInt r = file.Open( TheFs, name, EFileRead );
+ TEST_FOR_ERROR( r );
+ TTime mod;
+ r = file.Modified( mod );
+ TEST_FOR_ERROR( r );
+
+ if( mod != gTime )
+ {
+ TDateTime expected = gTime.DateTime();
+ TDateTime got = mod.DateTime();
+ test.Printf(_L("Times don't match, expected %d-%d-%d %d:%d:%d, read %d-%d-%d %d:%d:%d\n"),
+ expected.Day()+1,
+ expected.Month()+1,
+ expected.Year(),
+ expected.Hour(),
+ expected.Minute(),
+ expected.Second(),
+ got.Day()+1,
+ got.Month()+1,
+ got.Year(),
+ got.Hour(),
+ got.Minute(),
+ got.Second() );
+ test.operator()( EFalse, __LINE__, (TText*)__FILE__ );
+ }
+ file.Close();
+ }
+ }
+
+
+
+
+LOCAL_C void TestDirScanL(TInt aDriveToTest)
+ //
+ // Tests that scanning a directory gives correct timestamp for each entry
+ //
+ {
+ test.Next( _L("Testing directory scan") );
+ CDir* dir;
+
+ TFileName name(KDriveBase);
+ name[0] = TText('A' + aDriveToTest);
+ name.Append( KDirectoryScanPath );
+
+ TInt r = TheFs.GetDir( name, KEntryAttMaskSupported, ESortNone, dir );
+ TEST_FOR_ERROR( r );
+
+ for( TInt i = dir->Count() - 1; i > 0; i-- )
+ {
+ const TEntry& e = dir->operator[](i);
+ if( e.iModified != gTime )
+ {
+ TDateTime expected = gTime.DateTime();
+ TDateTime got = (e.iModified).DateTime();
+ test.Printf(_L("Times don't match, expected %d-%d-%d %d:%d:%d, read %d-%d-%d %d:%d:%d\n"),
+ expected.Day()+1,
+ expected.Month()+1,
+ expected.Year(),
+ expected.Hour(),
+ expected.Minute(),
+ expected.Second(),
+ got.Day()+1,
+ got.Month()+1,
+ got.Year(),
+ got.Hour(),
+ got.Minute(),
+ got.Second() );
+ test.operator()( EFalse, __LINE__, (TText*)__FILE__ );
+ }
+ }
+ delete dir;
+ }
+
+
+
+//************************
+// Entry point
+
+void DoTestL(TInt aDriveToTest)
+ {
+ TDateTime dateTime( KYear, KMonth, KDay, KHour, KMinute, KSecond, 0 );
+
+ test.Title();
+ test.Start( _L("Testing ROFS timestamp") );
+
+ test.Printf( _L("Looking for ROFS extension\n"));
+ TBool extension = EFalse;
+ TFileName name(KDriveBase);
+ name[0] = TText('A' + aDriveToTest);
+
+ name.SetLength( 3 ); // trim back to drive specifier
+ name.Append( KTestFile18 );
+
+ RFile file;
+ test.Printf( _L("Opening file %S"), &name );
+ TInt r = file.Open( TheFs, name, EFileRead );
+ if(r==KErrNone)
+ {
+ extension=ETrue;
+ file.Close();
+ dateTime.Set(KYearExt, KMonthExt, KDayExt, KHourExt, KMinuteExt, KSecondExt, 0 );
+ test.Printf( _L("ROFS extension found\n"));
+ }
+ else if(r==KErrNotFound)
+ {
+ test.Printf( _L("Not found, ROFS extension not present\n"));
+ }
+
+ gTime = TTime( dateTime );
+
+ TestRFileL(aDriveToTest, extension);
+ TestDirScanL(aDriveToTest);
+
+ test.End();
+ }