os/kernelhwsrv/kerneltest/f32test/server/t_rdsect.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // f32test\server\t_rdsect.cpp
    15 // 
    16 //
    17 
    18 #define __E32TEST_EXTENSION__
    19 
    20 #include <f32file.h>
    21 #include <e32test.h>
    22 
    23 #include "t_server.h"
    24 #include "t_chlffs.h"
    25 
    26 #if defined(__WINS__)
    27 #define WIN32_LEAN_AND_MEAN
    28 #pragma warning (disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
    29 #pragma warning (default:4201) // warning C4201: nonstandard extension used : nameless struct/union
    30 #endif
    31 
    32 #if defined(_UNICODE)
    33 #if !defined(UNICODE)
    34 #define UNICODE
    35 #endif
    36 #endif
    37 
    38 GLDEF_D RTest test(_L("T_RDSECT"));
    39 
    40 
    41 TBuf<26> alphaBuffer=_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    42 TBuf<10> numberBuffer=_L("0123456789");
    43 TBuf<14> humptyBuffer=_L("Humpty-Dumpty!");
    44 TPtr8 alphaPtr((TText8*)alphaBuffer.Ptr(),alphaBuffer.Size(),alphaBuffer.Size());
    45 TPtr8 numberPtr((TText8*)numberBuffer.Ptr(),numberBuffer.Size(),numberBuffer.Size());
    46 TPtr8 humptyPtr((TText8*)humptyBuffer.Ptr(),humptyBuffer.Size(),humptyBuffer.Size());
    47 
    48 
    49 /*
    50 
    51   What this test is for:
    52 
    53   Tests the implementation of RFs::ReadFileSection() which has been designed
    54   to allow reading from a file regardless of its lock state.  
    55   Under the EPOC FAT filesystem, the function accesses the raw file data without 
    56   opening the file using a share mode.  This is obviously a dangerous activity
    57   should the file be currently open for writing by another user - but the file
    58   server makes no guarantees as to the data it returns!  The function allows the
    59   caller to specify the starting position in the file from which to read the data
    60   and the length of data required.
    61   
    62   This test creates a number of files and tests the use of the function when the 
    63   files are closed and when they are open in a number of access modes.  
    64   It also tests reading a UID from the files using this new function.
    65 
    66 */
    67 
    68 LOCAL_C void CreateTestFiles()
    69 //
    70 // Create files with uids for testing
    71 //
    72 	{
    73 
    74 	test.Next(_L("Create test files"));
    75 	TInt r=TheFs.MkDir(_L("\\F32-TST\\"));
    76 	test(r==KErrNone || r==KErrAlreadyExists);
    77 
    78 	RFile file;
    79 
    80 //	Create \\gSessionPath\\UIDCHK.BLG - with uid no data
    81 	r=file.Replace(TheFs,_L("\\F32-TST\\UIDCHK.BLG"),EFileRead|EFileWrite);
    82 	test_KErrNone(r);
    83 	TUidType uidType(TUid::Uid('U'),TUid::Uid('I'),TUid::Uid('D'));
    84 	TCheckedUid checkedUid(uidType);
    85 	TPtrC8 buf((TUint8*)&checkedUid,sizeof(TCheckedUid));
    86 	r=file.Write(buf);
    87 	test_KErrNone(r);
    88 	file.Close();
    89 
    90 //	Create \\gSessionPath\\UIDCHK.MSG - with uid and data
    91 	r=file.Replace(TheFs,_L("\\F32-TST\\UIDCHK.MSG"),EFileRead|EFileWrite);
    92 	test_KErrNone(r);
    93 	TUidType uidType2(TUid::Uid('X'),TUid::Uid('Y'),TUid::Uid('Z'));
    94 	checkedUid.Set(uidType2);
    95 	buf.Set((TUint8*)&checkedUid,sizeof(TCheckedUid));
    96 	r=file.Write(buf);
    97 	test_KErrNone(r);
    98 	r=file.Write(_L8("More file data"));
    99 	test_KErrNone(r);
   100 	file.Close();
   101 	
   102 //	Create \\gSessionPath\\UIDCHK.DAT - uid stored only in the file
   103 	r=file.Replace(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileRead|EFileWrite);
   104 	test_KErrNone(r);
   105 	TUidType uidType3(TUid::Uid('D'),TUid::Uid('A'),TUid::Uid('T'));
   106 	checkedUid.Set(uidType3);
   107 	buf.Set((TUint8*)&checkedUid,sizeof(TCheckedUid));
   108 	r=file.Write(buf);
   109 	test_KErrNone(r);
   110 	r=file.Write(_L8("More file data"));
   111 	test_KErrNone(r);
   112 	file.Close();
   113 
   114 //	Make a few random files - these will be deleted before the test begins
   115 //	but are necessary to try to split file ReadFileSection into non-contiguous clusters
   116 	
   117 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp1.txt"),EFileRead|EFileWrite);
   118 	test_KErrNone(r);
   119 	file.SetSize(550);
   120 	file.Close();
   121 
   122 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp2.txt"),EFileRead|EFileWrite);
   123 	test_KErrNone(r);
   124 	file.SetSize(256);
   125 	file.Close();
   126 
   127 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp3.txt"),EFileRead|EFileWrite);
   128 	test_KErrNone(r);
   129 	file.SetSize(256);
   130 	file.Close();
   131 	
   132 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp4.txt"),EFileRead|EFileWrite);
   133 	test_KErrNone(r);
   134 	file.SetSize(550);
   135 	file.Close();
   136 	
   137 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp5.txt"),EFileRead|EFileWrite);
   138 	test_KErrNone(r);
   139 	file.SetSize(256);
   140 	file.Close();
   141 
   142 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp6.txt"),EFileRead|EFileWrite);
   143 	test_KErrNone(r);
   144 	file.SetSize(256);
   145 	file.Close();
   146 
   147 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp7.txt"),EFileRead|EFileWrite);
   148 	test_KErrNone(r);
   149 	file.SetSize(256);
   150 	file.Close();
   151 
   152 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp8.txt"),EFileRead|EFileWrite);
   153 	test_KErrNone(r);
   154 	file.SetSize(256);
   155 	file.Close();
   156 
   157 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp9.txt"),EFileRead|EFileWrite);
   158 	test_KErrNone(r);
   159 	file.SetSize(256);
   160 	file.Close();
   161 
   162 	r=file.Replace(TheFs,_L("\\F32-TST\\Temp10.txt"),EFileRead|EFileWrite);
   163 	test_KErrNone(r);
   164 	file.SetSize(256);
   165 	file.Close();
   166 
   167 	TheFs.Delete(_L("\\F32-TST\\Temp2.txt"));
   168 	TheFs.Delete(_L("\\F32-TST\\Temp4.txt"));
   169 	TheFs.Delete(_L("\\F32-TST\\Temp6.txt"));
   170 	TheFs.Delete(_L("\\F32-TST\\Temp8.txt"));
   171 	TheFs.Delete(_L("\\F32-TST\\Temp10.txt"));
   172 	
   173 	r=file.Replace(TheFs,_L("\\F32-TST\\ReadFileSection1.txt"),EFileRead|EFileWrite);
   174 	test_KErrNone(r);
   175 
   176 //	Write 5000 bytes of nonsense
   177 	
   178 	TInt i=0;
   179 	for ( ; i<100; i++)
   180 		{
   181 		r=file.Write(alphaPtr);
   182 		test_KErrNone(r);
   183 		r=file.Write(numberPtr);
   184 		test_KErrNone(r);
   185 		r=file.Write(humptyPtr);
   186 		test_KErrNone(r);
   187 		}
   188 	
   189 	file.Close();
   190 
   191 	TheFs.Delete(_L("\\F32-TST\\Temp1.txt"));
   192 	TheFs.Delete(_L("\\F32-TST\\Temp3.txt"));
   193 	TheFs.Delete(_L("\\F32-TST\\Temp5.txt"));
   194 	TheFs.Delete(_L("\\F32-TST\\Temp7.txt"));
   195 	TheFs.Delete(_L("\\F32-TST\\Temp9.txt"));
   196 	}
   197 
   198 #if !defined(_UNICODE)
   199 
   200 LOCAL_C void Test1()
   201 //
   202 // Test RFs::ReadFileSection()
   203 //
   204 	{
   205 
   206 	test.Next(_L("Use RFs::ReadFileSection() to read from a file"));
   207 
   208 //	First, test for non-existant file
   209 	TBuf<256> testDes;
   210 	TInt r=TheFs.ReadFileSection(_L("\\F32-tst\\NonExistantFile.txt"),0,testDes,52);
   211 	test(r==KErrNotFound);
   212 	test(testDes.Length()==0);
   213 
   214 //	Test with file closed
   215 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,testDes,26);
   216 	test_KErrNone(r);
   217 	test(testDes.Length()==26);
   218 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   219 	
   220 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),26,testDes,10);
   221 	test_KErrNone(r);
   222 	test(testDes==_L("0123456789"));
   223 	test(testDes.Length()==10);
   224 
   225 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),36,testDes,14);
   226 	test_KErrNone(r);
   227 	test(testDes==_L("Humpty-Dumpty!"));
   228 	test(testDes.Length()==14);
   229 
   230 //	Test with file open	EFileShareAny|EFileRead
   231 	RFile file;
   232 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileRead);
   233 	test_KErrNone(r);
   234 
   235 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),50,testDes,26);
   236 	test_KErrNone(r);
   237 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   238 	test(testDes.Length()==26);
   239 	
   240 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),76,testDes,10);
   241 	test_KErrNone(r);
   242 	test(testDes==_L("0123456789"));
   243 	test(testDes.Length()==10);
   244 
   245 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),86,testDes,14);
   246 	test_KErrNone(r);
   247 	test(testDes==_L("Humpty-Dumpty!"));
   248 	test(testDes.Length()==14);
   249 	
   250 	file.Close();
   251 
   252 //	Test with file open	EFileShareExclusive|EFileRead
   253 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareExclusive|EFileRead);
   254 	test_KErrNone(r);
   255 	
   256 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),100,testDes,26);
   257 	test_KErrNone(r);
   258 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   259 	test(testDes.Length()==26);
   260 	
   261 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),126,testDes,10);
   262 	test_KErrNone(r);
   263 	test(testDes==_L("0123456789"));
   264 	test(testDes.Length()==10);
   265 
   266 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),136,testDes,14);
   267 	test_KErrNone(r);
   268 	test(testDes==_L("Humpty-Dumpty!"));
   269 	test(testDes.Length()==14);
   270 	
   271 	file.Close();
   272 	
   273 //	Test with file open	EFileShareExclusive|EFileWrite
   274 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareExclusive|EFileWrite);	
   275 	test_KErrNone(r);
   276 
   277 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),150,testDes,26);
   278 	test_KErrNone(r);
   279 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   280 	test(testDes.Length()==26);
   281 	
   282 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),176,testDes,10);
   283 	test_KErrNone(r);
   284 	test(testDes==_L("0123456789"));
   285 	test(testDes.Length()==10);
   286 
   287 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),186,testDes,14);
   288 	test_KErrNone(r);
   289 	test(testDes==_L("Humpty-Dumpty!"));
   290 	test(testDes.Length()==14);
   291 	
   292 	file.Close();
   293 	
   294 
   295 //	Test with file open	EFileShareReadersOnly|EFileRead
   296 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareReadersOnly|EFileRead);
   297 	test_KErrNone(r);
   298 
   299 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),200,testDes,26);
   300 	test_KErrNone(r);
   301 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   302 	test(testDes.Length()==26);
   303 	
   304 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),226,testDes,10);
   305 	test_KErrNone(r);
   306 	test(testDes==_L("0123456789"));
   307 	test(testDes.Length()==10);
   308 
   309 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),236,testDes,14);
   310 	test_KErrNone(r);
   311 	test(testDes==_L("Humpty-Dumpty!"));
   312 	test(testDes.Length()==14);
   313 	
   314 	file.Close();
   315 
   316 //	Test with several accesses to a file EFileShareAny|EFileWrite
   317 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileWrite);
   318 	test_KErrNone(r);
   319 
   320 	RFile secondFile;
   321 	r=secondFile.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileWrite);
   322 	test_KErrNone(r);
   323 	
   324 	RFile thirdFile;
   325 	r=thirdFile.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileWrite);
   326 	test_KErrNone(r);
   327 	
   328 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),250,testDes,26);
   329 	test_KErrNone(r);
   330 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   331 	test(testDes.Length()==26);
   332 	
   333 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),276,testDes,10);
   334 	test_KErrNone(r);
   335 	test(testDes==_L("0123456789"));
   336 	test(testDes.Length()==10);
   337 
   338 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),286,testDes,14);
   339 	test_KErrNone(r);
   340 	test(testDes==_L("Humpty-Dumpty!"));
   341 	test(testDes.Length()==14);
   342 	
   343 //	Test across potential cluster boundaries
   344 
   345 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),500,testDes,100);
   346 	test_KErrNone(r);
   347 	test(testDes.Length()==100);
   348 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!"));
   349 
   350 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),1000,testDes,100);
   351 	test_KErrNone(r);
   352 	test(testDes.Length()==100);
   353 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!"));
   354 
   355 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),1500,testDes,100);
   356 	test_KErrNone(r);
   357 	test(testDes.Length()==100);
   358 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!"));
   359 
   360 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),2000,testDes,100);
   361 	test_KErrNone(r);
   362 	test(testDes.Length()==100);
   363 	test(testDes==_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Humpty-Dumpty!"));
   364 
   365 	file.Close();
   366 	secondFile.Close();
   367 	thirdFile.Close();
   368 	}
   369 
   370 
   371 LOCAL_C void Test2()
   372 //
   373 // Test RFs::ReadFileSection() on UID reads
   374 //
   375 	{
   376 
   377 	
   378 	test.Next(_L("Use RFs::ReadFileSection() to read UIDs from files"));
   379 
   380 	TBuf8<sizeof(TCheckedUid)> uidBuf(sizeof(TCheckedUid));
   381 	TPtr uidPtr((TText*)uidBuf.Ptr(),sizeof(TCheckedUid),sizeof(TCheckedUid));
   382 	
   383 	TInt r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.BLG"),0,uidPtr,sizeof(TCheckedUid));
   384 	test_KErrNone(r);
   385 	TCheckedUid uid(uidBuf);
   386 	TUidType uidType=uid.UidType();
   387 	test(uidType.IsValid());
   388 	
   389 	test(uidType[0]==TUid::Uid('U') && uidType[1]==TUid::Uid('I') && uidType[2]==TUid::Uid('D'));
   390 
   391 	r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.MSG"),0,uidBuf,sizeof(TCheckedUid));
   392 	test_KErrNone(r);
   393 	uid.Set(uidBuf);
   394 	uidType=uid.UidType();
   395 	test(uidType.IsValid());
   396 	test(uidType[0]==TUid::Uid('X') && uidType[1]==TUid::Uid('Y') && uidType[2]==TUid::Uid('Z'));
   397 	
   398 	
   399 	// Test for Null File length
   400 	TBuf8<256> testDesN;
   401 	test.Next(_L("Check for null file name"));
   402  	r=TheFs.ReadFileSection(_L(""),0,testDesN,26);
   403  	test(r==KErrBadName);
   404  	
   405 	// Check the lentgh of descriptor.	
   406  	TInt x = testDesN.Length();
   407  	test ( x == 0);
   408  	
   409  	test.Next(_L("Check for non existing file"));
   410 	r=TheFs.ReadFileSection(_L("sdfsd.dfg"),0,testDesN,26);
   411  	test.Printf(_L("Return %d"),r);
   412  	test((r==KErrNotFound) || (r == KErrPathNotFound));
   413  	
   414 	// Check the lentgh of descriptor.	
   415  	x = testDesN.Length();
   416 	test ( x == 0);
   417 	
   418 	r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.DAT"),0,uidBuf,sizeof(TCheckedUid));
   419 	test_KErrNone(r);
   420 	uid.Set(uidBuf);
   421 	uidType=uid.UidType();
   422 	test(uidType.IsValid());
   423 	test(uidType[0]==TUid::Uid('D') && uidType[1]==TUid::Uid('A') && uidType[2]==TUid::Uid('T'));
   424 	
   425 
   426 	}
   427 
   428 LOCAL_C void Test3()
   429 //
   430 //	Test uid's can be read when the file is open
   431 //
   432 //	EFileShareExclusive,EFileShareReadersOnly,EFileShareAny,
   433 //	EFileStream=0,EFileStreamText=0x100,
   434 //	EFileRead=0,EFileWrite=0x200
   435 //
   436 	{
   437 
   438 	test.Next(_L("Test that UIDs can be read from open files"));
   439 	RFile file;
   440 	
   441 //	Test with file open	EFileShareExclusive|EFileRead	
   442 	TInt r=file.Open(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileShareExclusive|EFileRead);
   443 	test_KErrNone(r);
   444 
   445 	TBuf8<sizeof(TCheckedUid)> uidBuf;
   446 	
   447 	r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.DAT"),0,uidBuf,sizeof(TCheckedUid));
   448 	test_KErrNone(r);
   449 	
   450 	TCheckedUid uid(uidBuf);
   451 	TUidType uidType=uid.UidType();
   452 	test(uidType.IsValid());
   453 	test(uidType[0]==TUid::Uid('D') && uidType[1]==TUid::Uid('A') && uidType[2]==TUid::Uid('T'));
   454 
   455 	file.Close();
   456 
   457 //	Test with file open	EFileShareExclusive|EFileWrite	
   458 	r=file.Open(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileShareExclusive|EFileWrite);
   459 	test_KErrNone(r);
   460 
   461 	r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.DAT"),0,uidBuf,sizeof(TCheckedUid));
   462 	test_KErrNone(r);
   463 	uid.Set(uidBuf);
   464 	uidType=uid.UidType();
   465 	test(uidType.IsValid());
   466 	test(uidType[0]==TUid::Uid('D') && uidType[1]==TUid::Uid('A') && uidType[2]==TUid::Uid('T'));
   467 
   468 	file.Close();
   469 
   470 //	Test with file open	EFileShareReadersOnly|EFileRead		
   471 	r=file.Open(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileShareReadersOnly|EFileRead);
   472 	test_KErrNone(r);
   473 	
   474 	r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.DAT"),0,uidBuf,sizeof(TCheckedUid));
   475 	test_KErrNone(r);
   476 	uid.Set(uidBuf);
   477 	uidType=uid.UidType();
   478 	test(uidType.IsValid());
   479 	test(uidType[0]==TUid::Uid('D') && uidType[1]==TUid::Uid('A') && uidType[2]==TUid::Uid('T'));
   480 	
   481 	file.Close();
   482 
   483 
   484 //	Test with file open	EFileShareAny|EFileRead		
   485 	r=file.Open(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileShareAny|EFileRead);
   486 	test_KErrNone(r);
   487 	
   488 	r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.DAT"),0,uidBuf,sizeof(TCheckedUid));
   489 	test_KErrNone(r);
   490 	uid.Set(uidBuf);
   491 	uidType=uid.UidType();
   492 	test(uidType.IsValid());
   493 	test(uidType[0]==TUid::Uid('D') && uidType[1]==TUid::Uid('A') && uidType[2]==TUid::Uid('T'));
   494 	
   495 	file.Close();
   496 
   497 //	Test with several accesses to file open	EFileShareAny|EFileWrite			
   498 	r=file.Open(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileShareAny|EFileWrite);
   499 	test_KErrNone(r);
   500 	
   501 	RFile secondFile;
   502 	r=secondFile.Open(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileShareAny|EFileWrite);
   503 	test_KErrNone(r);
   504 	
   505 	RFile thirdFile;
   506 	r=thirdFile.Open(TheFs,_L("\\F32-TST\\UIDCHK.DAT"),EFileShareAny|EFileRead);
   507 	test_KErrNone(r);
   508 	
   509 	r=TheFs.ReadFileSection(_L("\\F32-TST\\UIDCHK.DAT"),0,uidBuf,sizeof(TCheckedUid));
   510 	test_KErrNone(r);
   511 	uid.Set(uidBuf);
   512 	uidType=uid.UidType();
   513 	test(uidType.IsValid());
   514 	test(uidType[0]==TUid::Uid('D') && uidType[1]==TUid::Uid('A') && uidType[2]==TUid::Uid('T'));
   515 	
   516 	file.Close();
   517 	secondFile.Close();
   518 	thirdFile.Close();
   519 
   520 	}
   521 
   522 
   523 LOCAL_C void TestErrors()
   524 //
   525 //	Test errors and boundary conditions
   526 //
   527 	{
   528 
   529 	test.Next(_L("Test Error handling"));
   530 
   531 //	Test that specifying a zero length section returns a zero length descriptor
   532 	TBuf<30> testDes;
   533 	TInt r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),25,testDes,0);
   534 	test_KErrNone(r);
   535 	test(testDes.Length()==0);
   536 	
   537 //	Test that specifying a negative starting position causes a panic
   538 //	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),-1,testDes,10);
   539 //	This will panic: See RFs::ReadFileSection() code - relevant lines are
   540 //	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
   541 	
   542 //	Test that specifying a section of greater length than the descriptor to
   543 //	hold the data will cause a panic
   544 //	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,testDes,45);
   545 //	This will panic: See RFs::ReadFileSection() code - relevant lines are	
   546 //	__ASSERT_ALWAYS(aDes.MaxLength()>=aLength,Panic(EBadLength));
   547 
   548 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),2000,testDes,-20);
   549 	test(r==KErrArgument);
   550 
   551 //	Test that specifying a position and length which extends beyond the end of
   552 //	the	file returns a zero length descriptor and KErrNone
   553 
   554 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),4993,testDes,20);
   555 	test_KErrNone(r);	
   556 	test(testDes.Length()==7);
   557 	test(testDes==_L("Dumpty!"));
   558 
   559 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),4999,testDes,1);
   560 	test_KErrNone(r);	
   561 	test(testDes.Length()==1);
   562 	test(testDes==_L("!"));
   563 
   564 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),5000,testDes,1);
   565 	test_KErrNone(r);	
   566 	test(testDes.Length()==0);
   567 	
   568 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),5550,testDes,20);
   569 	test_KErrNone(r);	
   570 	test(testDes.Length()==0);
   571 
   572 //	Test reading the whole file	
   573 	HBufC* hDes=HBufC::New(5002);
   574 	if (!hDes)
   575 		User::Leave(KErrNoMemory);
   576 	TPtr pDes=hDes->Des();
   577 
   578 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,pDes,5000);
   579 	test_KErrNone(r);	
   580 	test(pDes.Length()==5000);
   581 	
   582 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,pDes,5000);
   583 	test_KErrNone(r);	
   584 	test(pDes.Length()==5000);
   585 
   586 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,pDes,5002);
   587 	test_KErrNone(r);	
   588 	test(pDes.Length()==5000);
   589 
   590 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),2000,pDes,3000);
   591 	test_KErrNone(r);	
   592 	test(pDes.Length()==3000);
   593 
   594 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),2000,pDes,4002);
   595 	test_KErrNone(r);	
   596 	test(pDes.Length()==3000);
   597 
   598 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),5000,pDes,5002);
   599 	test_KErrNone(r);	
   600 	test(pDes.Length()==0);
   601 	
   602 	delete hDes;
   603 	}
   604 
   605 #else
   606 
   607 
   608 //	BEGINNING OF UNICODE TESTS
   609 
   610 LOCAL_C void TestUnicode()
   611 //
   612 // Test RFs::ReadFileSection()
   613 //
   614 	{
   615 	test.Next(_L("Use RFs::ReadFileSection() to read from a file"));
   616 
   617 	//	First, test for non-existant file
   618 	TBuf8<256> testDes;
   619 	TInt r=TheFs.ReadFileSection(_L("\\F32-tst\\NonExistantFile.txt"),0,testDes,52);
   620 	test(r==KErrNotFound);
   621 	test(testDes.Length()==0);
   622 	
   623 	//	Test with file closed
   624 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,testDes,52);
   625 	test_KErrNone(r);
   626 	test(testDes.Length()==52);
   627 	test(testDes==alphaPtr);
   628 	
   629 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),52,testDes,20);
   630 	test_KErrNone(r);
   631 	test(testDes==numberPtr);
   632 	test(testDes.Length()==20);
   633 
   634 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),72,testDes,28);
   635 	test_KErrNone(r);
   636 	test(testDes==humptyPtr);
   637 	test(testDes.Length()==28);
   638 	
   639     //  Test for Null File length
   640 	TBuf8<256> testDesN;
   641 	test.Next(_L("Check for null file name"));
   642  	r=TheFs.ReadFileSection(_L(""),0,testDesN,26);
   643  	test(r==KErrBadName);
   644  	
   645 	//  Check the lentgh of descriptor.	
   646  	TInt x = testDesN.Length();
   647  	test ( x == 0);
   648  	
   649  	test.Next(_L("Check for non existing file"));
   650 	r=TheFs.ReadFileSection(_L("sdfsd.dfg"),0,testDesN,26);
   651  	test.Printf(_L("Return %d"),r);
   652  	test((r==KErrNotFound) || (r == KErrPathNotFound));
   653  	
   654 	//  Check the lentgh of descriptor.	
   655  	x = testDesN.Length();
   656 	test ( x == 0);
   657 
   658     //  Test for Empty directory  
   659     r=TheFs.ReadFileSection(_L("\\F32-tst\\"),0,testDesN,52);
   660     test(r==KErrBadName);
   661     test(testDesN.Length()==0);
   662 
   663     //  Test for File with wildcard name 
   664     r=TheFs.ReadFileSection(_L("\\F32-tst\\*.txt"),0,testDesN,52);
   665     test(r==KErrBadName);
   666     test(testDesN.Length()==0);
   667 
   668     //  Test for Folder with wildcard name 
   669     r=TheFs.ReadFileSection(_L("\\F32-tst*\\ReadFileSection1.txt"),0,testDesN,52);
   670     test(r==KErrBadName);
   671     test(testDesN.Length()==0);
   672       
   673     //  Test for Root directory
   674     r=TheFs.ReadFileSection(_L("\\"),0,testDesN,52);
   675     test(r==KErrBadName);
   676     test(testDesN.Length()==0);
   677 
   678     //  Test for no file being specified.
   679     r=TheFs.ReadFileSection(_L(""),0,testDesN,26);
   680     test(r==KErrBadName);
   681     test(testDesN.Length()==0); 
   682 
   683 
   684     // Test with file open	EFileShareAny|EFileRead
   685 	RFile file;
   686 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileRead);
   687 	test_KErrNone(r);
   688 
   689 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),100,testDes,52);
   690 	test_KErrNone(r);
   691 	test(testDes==alphaPtr);
   692 	test(testDes.Length()==52);
   693 	
   694 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),152,testDes,20);
   695 	test_KErrNone(r);
   696 	test(testDes==numberPtr);
   697 	test(testDes.Length()==20);
   698 
   699 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),172,testDes,28);
   700 	test_KErrNone(r);
   701 	test(testDes==humptyPtr);
   702 	test(testDes.Length()==28);
   703 	
   704 	file.Close();
   705 
   706 //	Test with file open	EFileShareExclusive|EFileRead
   707 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareExclusive|EFileRead);
   708 	test_KErrNone(r);
   709 	
   710 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),200,testDes,52);
   711 	test_KErrNone(r);
   712 	test(testDes==alphaPtr);
   713 	test(testDes.Length()==52);
   714 	
   715 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),252,testDes,20);
   716 	test_KErrNone(r);
   717 	test(testDes==numberPtr);
   718 	test(testDes.Length()==20);
   719 
   720 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),272,testDes,28);
   721 	test_KErrNone(r);
   722 	test(testDes==humptyPtr);
   723 	test(testDes.Length()==28);
   724 	
   725 	file.Close();
   726 	
   727 //	Test with file open	EFileShareExclusive|EFileWrite
   728 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareExclusive|EFileWrite);	
   729 	test_KErrNone(r);
   730 
   731 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),300,testDes,52);
   732 	test_KErrNone(r);
   733 	test(testDes==alphaPtr);
   734 	test(testDes.Length()==52);
   735 	
   736 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),352,testDes,20);
   737 	test_KErrNone(r);
   738 	test(testDes==numberPtr);
   739 	test(testDes.Length()==20);
   740 
   741 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),372,testDes,28);
   742 	test_KErrNone(r);
   743 	test(testDes==humptyPtr);
   744 	test(testDes.Length()==28);
   745 	
   746 	file.Close();
   747 	
   748 
   749 //	Test with file open	EFileShareReadersOnly|EFileRead
   750 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareReadersOnly|EFileRead);
   751 	test_KErrNone(r);
   752 
   753 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),400,testDes,52);
   754 	test_KErrNone(r);
   755 	test(testDes==alphaPtr);
   756 	test(testDes.Length()==52);
   757 	
   758 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),452,testDes,20);
   759 	test_KErrNone(r);
   760 	test(testDes==numberPtr);
   761 	test(testDes.Length()==20);
   762 
   763 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),472,testDes,28);
   764 	test_KErrNone(r);
   765 	test(testDes==humptyPtr);
   766 	test(testDes.Length()==28);
   767 	
   768 	file.Close();
   769 
   770 //	Test with several accesses to a file EFileShareAny|EFileWrite
   771 	r=file.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileWrite);
   772 	test_KErrNone(r);
   773 
   774 	RFile secondFile;
   775 	r=secondFile.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileWrite);
   776 	test_KErrNone(r);
   777 	
   778 	RFile thirdFile;
   779 	r=thirdFile.Open(TheFs,_L("\\F32-tst\\ReadFileSection1.txt"),EFileShareAny|EFileWrite);
   780 	test_KErrNone(r);
   781 	
   782 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),500,testDes,52);
   783 	test_KErrNone(r);
   784 
   785 #if defined(__WINS__)
   786 #if defined(_DEBUG)
   787 	test(testDes==alphaPtr);
   788 	test(testDes.Length()==52);
   789 #endif
   790 #else
   791 	test(testDes==alphaPtr);
   792 	test(testDes.Length()==52);
   793 #endif
   794 	
   795 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),552,testDes,20);
   796 	test_KErrNone(r);
   797 	test(testDes==numberPtr);
   798 	test(testDes.Length()==20);
   799 
   800 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),572,testDes,28);
   801 	test_KErrNone(r);
   802 	test(testDes==humptyPtr);
   803 	test(testDes.Length()==28);
   804 	
   805 //	Test across potential cluster boundaries
   806 
   807 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),1000,testDes,200);
   808 	test_KErrNone(r);
   809 	test(testDes.Length()==200);
   810 	TBuf8<200> amalgam;
   811 	TInt i=0;
   812 	for (; i<2; i++)
   813 		{
   814 		amalgam.Append(alphaPtr);
   815 		amalgam.Append(numberPtr);
   816 		amalgam.Append(humptyPtr);
   817 		}
   818 
   819 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),1000,testDes,200);
   820 	test_KErrNone(r);
   821 	test(testDes.Length()==200);
   822 	test(testDes==amalgam);
   823 
   824 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),3000,testDes,200);
   825 	test_KErrNone(r);
   826 	test(testDes.Length()==200);
   827 	test(testDes==amalgam);
   828 
   829 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),4000,testDes,200);
   830 	test_KErrNone(r);
   831 	test(testDes.Length()==200);
   832 	test(testDes==amalgam);
   833 
   834 	file.Close();
   835 	secondFile.Close();
   836 	thirdFile.Close();
   837 
   838 //	Test errors and boundary conditions
   839 	test.Next(_L("Test Error handling"));
   840 
   841 //	Test that specifying a zero length section returns a zero length descriptor
   842 	TBuf8<30> testDes2;
   843 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),50,testDes2,0);
   844 	test_KErrNone(r);
   845 	test(testDes2.Length()==0);
   846 	
   847 //	Test that specifying a negative starting position causes a panic
   848 //	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),-1,testDes2,10);
   849 //	This will panic: See RFs::ReadFileSection() code - relevant lines are
   850 //	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
   851 	
   852 //	Test that specifying a section of greater length than the descriptor to
   853 //	hold the data will cause a panic
   854 //	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,testDes2,45);
   855 //	This will panic: See RFs::ReadFileSection() code - relevant lines are	
   856 //	__ASSERT_ALWAYS(aDes.MaxLength()>=aLength,Panic(EBadLength));
   857 
   858 
   859 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),2000,testDes2,-20);
   860 	test(r==KErrArgument);
   861 
   862 //	Test that specifying a position and length which extends beyond the end of
   863 //	the	file returns a zero length descriptor and KErrNone
   864 
   865 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),9993,testDes2,30);
   866 	test_KErrNone(r);	
   867 	test(testDes2.Length()==7);
   868 	test(testDes2==humptyPtr.Right(7));
   869 
   870 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),9999,testDes2,1);
   871 	test_KErrNone(r);	
   872 	test(testDes2.Length()==1);
   873 	test(testDes2==humptyPtr.Right(1));
   874 
   875 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),10000,testDes2,1);
   876 	test_KErrNone(r);	
   877 	test(testDes2.Length()==0);
   878 	
   879 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),10550,testDes2,20);
   880 	test_KErrNone(r);	
   881 	test(testDes2.Length()==0);
   882 
   883 //	Test reading the whole file	
   884 	HBufC8* hDes=HBufC8::New(10002);
   885 	if (!hDes)
   886 		User::Leave(KErrNoMemory);
   887 	TPtr8 pDes=hDes->Des();
   888 
   889 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,pDes,10000);
   890 	test_KErrNone(r);	
   891 	test(pDes.Length()==10000);
   892 	
   893 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,pDes,10000);
   894 	test_KErrNone(r);	
   895 	test(pDes.Length()==10000);
   896 
   897 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),0,pDes,10002);
   898 	test_KErrNone(r);	
   899 	test(pDes.Length()==10000);
   900 
   901 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),4000,pDes,6000);
   902 	test_KErrNone(r);	
   903 	test(pDes.Length()==6000);
   904 
   905 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),4000,pDes,8002);
   906 	test_KErrNone(r);	
   907 	test(pDes.Length()==6000);
   908 
   909 	r=TheFs.ReadFileSection(_L("\\F32-tst\\ReadFileSection1.txt"),10000,pDes,10002);
   910 	test_KErrNone(r);	
   911 	test(pDes.Length()==0);
   912 	
   913 	delete hDes;
   914 	}
   915 	
   916 #endif
   917 
   918 
   919 LOCAL_C void TestZ()
   920 //
   921 // Test Rom filesystem
   922 //
   923 	{
   924 	test.Next(_L("Use RFs::ReadFileSection() to read from a file on the ROM"));
   925 #if defined (__WINS__)
   926 //	Requires a copy of t_rdsect.txt in z directory (\EPOC32\RELEASE\WINS\BUILD\Z\TEST)
   927 //	Initially, test with file closed
   928 	TBuf8<256> testDes;
   929 	TBuf8<27> temp1;
   930 	TInt r=TheFs.ReadFileSection(_L("Z:\\test\\t_rdsect.txt"),0,temp1,26);
   931 	test_KErrNone(r);
   932 	test(temp1.Length()==26);
   933 	test(temp1==_L8("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   934 	
   935 	TBuf8<11> temp2;
   936 	r=TheFs.ReadFileSection(_L("Z:\\test\\t_rdsect.txt"),26,temp2,10);
   937 	test_KErrNone(r);
   938 	test(temp2==_L8("0123456789"));
   939 	test(temp2.Length()==10);
   940 
   941 	r=TheFs.ReadFileSection(_L("Z:\\test\\t_rdsect.txt"),36,testDes,14);
   942 	test_KErrNone(r);
   943 	test(testDes==_L8("Humpty-Dumpty!"));
   944 	test(testDes.Length()==14);
   945 
   946 //	Test with file open	EFileShareAny|EFileRead
   947 	RFile file;
   948 	r=file.Open(TheFs,_L("Z:\\test\\t_rdsect.txt"),EFileShareAny|EFileRead);
   949 	test_KErrNone(r);
   950 	
   951 	r=TheFs.ReadFileSection(_L("Z:\\test\\t_rdsect.txt"),50,testDes,26);
   952 	test_KErrNone(r);
   953 	test(testDes==_L8("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   954 	test(testDes.Length()==26);
   955 	
   956 	r=TheFs.ReadFileSection(_L("Z:\\test\\t_rdsect.txt"),76,testDes,10);
   957 	test_KErrNone(r);
   958 	test(testDes==_L8("0123456789"));
   959 	test(testDes.Length()==10);
   960 
   961 	r=TheFs.ReadFileSection(_L("Z:\\test\\t_rdsect.txt"),86,testDes,14);
   962 	test_KErrNone(r);
   963 	test(testDes==_L8("Humpty-Dumpty!"));
   964 	test(testDes.Length()==14);
   965 	
   966 	file.Close();
   967 #else
   968 //	Test for MARM builds - oby file puts file in ROM (z:\test\)
   969 //	The file is the ASCII version
   970 
   971 	test.Next(_L("read small descriptor\n"));	
   972 	TBuf8<256> testDes;
   973 	TBuf8<27> temp1;
   974 	TInt r=TheFs.ReadFileSection(_L("Z:\\test\\T_RDSECT.txt"),0,temp1,26);
   975 	test_KErrNone(r);
   976 	test(temp1.Length()==26);	
   977 	test(temp1==_L8("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   978 	
   979 	TBuf8<11> temp2;
   980 	r=TheFs.ReadFileSection(_L("Z:\\test\\T_RDSECT.txt"),26,temp2,10);
   981 	test_KErrNone(r);
   982 	test(temp2.Length()==10);
   983 #if !defined (UNICODE)
   984 	test(testDes==_L8("0123456789"));
   985 #endif
   986 	r=TheFs.ReadFileSection(_L("Z:\\test\\T_RDSECT.txt"),36,testDes,14);
   987 	test_KErrNone(r);
   988 	test(testDes.Length()==14);
   989 #if !defined (UNICODE)	
   990 	test(testDes==_L8("Humpty-Dumpty!"));
   991 #endif
   992 	r=TheFs.ReadFileSection(_L("Z:\\test\\T_RDSECT.txt"),50,testDes,26);
   993 	test_KErrNone(r);
   994 	test(testDes.Length()==26);
   995 #if !defined (UNICODE)	
   996 	test(testDes==_L8("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
   997 #endif
   998 	r=TheFs.ReadFileSection(_L("Z:\\test\\T_RDSECT.txt"),76,testDes,10);
   999 	test_KErrNone(r);
  1000 	test(testDes.Length()==10);
  1001 #if !defined (UNICODE)	
  1002 	test(testDes==_L8("0123456789"));
  1003 #endif
  1004 	r=TheFs.ReadFileSection(_L("Z:\\test\\T_RDSECT.txt"),86,testDes,14);
  1005 	test_KErrNone(r);
  1006 	test(testDes.Length()==14);
  1007 #if !defined (UNICODE)	
  1008 	test(testDes==_L8("Humpty-Dumpty!"));
  1009 #endif
  1010 #endif
  1011 	}
  1012 
  1013 LOCAL_C void DoTestsL()
  1014 //
  1015 // Do all tests
  1016 //
  1017 	{
  1018 	CreateTestFiles();
  1019 #if !defined (_UNICODE)
  1020 	Test1();
  1021 	Test2();
  1022 	Test3();
  1023 	TestErrors();
  1024 #else
  1025 	TestUnicode();
  1026 #endif
  1027 	TestZ();
  1028 	}
  1029 
  1030 GLDEF_C void CallTestsL(void)
  1031 //
  1032 // Test formatting
  1033 //
  1034     {
  1035 
  1036 	test.Title();
  1037 	test.Start(_L("Testing filesystem on default drive"));
  1038 
  1039 	TChar driveLetter;
  1040 	if (IsSessionDriveLFFS(TheFs,driveLetter))
  1041 		{
  1042 		test.Printf(_L("CallTestsL: Skipped: test does not run on LFFS.\n"));
  1043 		return;
  1044 		}	
  1045 
  1046 	DoTestsL();
  1047 	CheckDisk();
  1048 
  1049 	test.End();
  1050 	test.Close();
  1051 	return;
  1052     }
  1053