34 |
35 |
35 GLDEF_D TFileName StartupExeName=_L(""); // initialised at run time |
36 GLDEF_D TFileName StartupExeName=_L(""); // initialised at run time |
36 |
37 |
37 #ifdef _DEBUG |
38 #ifdef _DEBUG |
38 GLREF_D RTest test; |
39 GLREF_D RTest test; |
39 GLDEF_D TInt TheFunctionNumber; |
40 GLDEF_D TInt TheFunctionNumber; // Indicates which test to run |
40 GLDEF_D TInt TheOpNumber; |
41 GLDEF_D TInt TheOpNumber; // Indicates which file operation to be tested |
41 GLDEF_D TInt TheFailCount; |
42 GLDEF_D TInt TheFailCount; |
42 GLDEF_D TBool IsReset; |
43 GLDEF_D TBool IsReset; |
43 GLDEF_D TFileName TestExeName=_L("?:\\T_SCANDR.EXE"); //Renaming it to fit in one root dir entry. |
44 GLDEF_D TFileName TestExeName=_L("?:\\T_SCANDR.EXE"); //Renaming it to fit in one root dir entry. |
44 GLDEF_D TFileName LogFileName=_L("?:\\T_SCANDR.LOG"); //Renaming it to fit in one root dir entry. |
45 GLDEF_D TFileName LogFileName=_L("?:\\T_SCANDR.LOG"); //Renaming it to fit in one root dir entry. |
45 |
46 |
46 const TInt KControlIoWriteFailOn=0; // commands to pass into RFs::ControlIo |
47 const TInt KControlIoWriteFailOn=0; // commands to pass into RFs::ControlIo |
54 const TInt KDirAttrArchive = 0x20; |
55 const TInt KDirAttrArchive = 0x20; |
55 const TInt KDirAttrLongName = KDirAttrReadOnly | KDirAttrHidden | KDirAttrSystem | KDirAttrVolumeId; |
56 const TInt KDirAttrLongName = KDirAttrReadOnly | KDirAttrHidden | KDirAttrSystem | KDirAttrVolumeId; |
56 const TInt KDirAttrLongMask = KDirAttrLongName | KDirAttrDirectory | KDirAttrArchive; |
57 const TInt KDirAttrLongMask = KDirAttrLongName | KDirAttrDirectory | KDirAttrArchive; |
57 const TInt KDirLastLongEntry = 0x40; |
58 const TInt KDirLastLongEntry = 0x40; |
58 |
59 |
59 GLDEF_D TInt WriteFailValue; |
60 GLDEF_D TInt WriteFailValue; // Indicates what error should return from a write failure |
60 |
61 // Value assigned in t_scn32dr2 and t_scn32dr3 |
61 LOCAL_C TFatBootSector BootSector; |
62 LOCAL_C TFatBootSector BootSector; |
62 LOCAL_D RRawDisk TheRawDisk; |
63 LOCAL_D RRawDisk TheRawDisk; |
63 |
64 |
64 static TFatType gDiskType = EInvalid; |
65 static TFatType gDiskType = EInvalid; |
65 |
66 |
77 LOCAL_D TInt gClusterCount; |
78 LOCAL_D TInt gClusterCount; |
78 |
79 |
79 LOCAL_D HBufC8* gFatBuf = NULL; |
80 LOCAL_D HBufC8* gFatBuf = NULL; |
80 LOCAL_D TInt gFatAddr = -1; |
81 LOCAL_D TInt gFatAddr = -1; |
81 |
82 |
82 enum TFatChain {EChainStd,EChainAlternate,EChainBackwards,EChainForwards}; |
83 enum TFatChain |
|
84 { |
|
85 EChainStd, // Cluster chain grows contiguously |
|
86 EChainAlternate, // Cluster chain grows forward but not contiguously |
|
87 EChainBackwards, // Cluster chain first goes backwards(up to 3.5kb for fat16 file) and then forwards |
|
88 EChainForwards // Cluster chain first goes forward (upto 3.5kb for fat16 file) and then backwards |
|
89 }; |
83 |
90 |
84 LOCAL_C TBool IsInternalRam() |
91 LOCAL_C TBool IsInternalRam() |
85 // |
92 // |
86 // Returns true if the selected drive is variable size (i.e. RAM drive) |
93 // Returns true if the selected drive is variable size (i.e. RAM drive) |
87 // |
94 // |
88 { |
95 { |
89 TVolumeInfo v; |
96 TVolumeInfo v; |
90 TInt r=TheFs.Volume(v,gSessionPath[0]-'A'); |
97 TInt r=TheFs.Volume(v,gSessionPath[0]-'A'); |
91 test(r==KErrNone); |
98 test_KErrNone(r); |
92 return(v.iDrive.iMediaAtt&KMediaAttVariableSize); |
99 return(v.iDrive.iMediaAtt&KMediaAttVariableSize); |
93 } |
100 } |
94 |
101 |
95 LOCAL_C void WriteLogFile() |
102 LOCAL_C void WriteLogFile() |
96 // |
103 // |
100 test.Printf(_L("Writelogfile()\n")); |
107 test.Printf(_L("Writelogfile()\n")); |
101 RFile log; |
108 RFile log; |
102 TInt r=log.Open(TheFs,LogFileName,EFileShareExclusive|EFileWrite); |
109 TInt r=log.Open(TheFs,LogFileName,EFileShareExclusive|EFileWrite); |
103 if(r!=KErrNone) |
110 if(r!=KErrNone) |
104 test.Printf(_L("error=%d\n"),r); |
111 test.Printf(_L("error=%d\n"),r); |
105 test(r==KErrNone); |
112 test_KErrNone(r); |
106 TInt size; |
113 TInt size; |
107 r=log.Size(size); |
114 r=log.Size(size); |
108 test(r==KErrNone); |
115 test_KErrNone(r); |
109 TBuf8<16> buf; |
116 TBuf8<16> buf; |
110 buf.SetLength(4); |
117 buf.SetLength(4); |
111 buf[0]=(TUint8)TheFunctionNumber; |
118 buf[0]=(TUint8)TheFunctionNumber; |
112 buf[1]=(TUint8)TheOpNumber; |
119 buf[1]=(TUint8)TheOpNumber; |
113 buf[2]=(TUint8)TheFailCount; |
120 buf[2]=(TUint8)TheFailCount; |
114 buf[3]='\n'; |
121 buf[3]='\n'; |
115 r=log.Write(size,buf,buf.Length()); |
122 r=log.Write(size,buf,buf.Length()); |
116 test(r==KErrNone); |
123 test_KErrNone(r); |
117 test.Printf(_L("Written func=%d,op=%d,fail=%d\n"),TheFunctionNumber,TheOpNumber,TheFailCount); |
124 test.Printf(_L("Written func=%d,op=%d,fail=%d\n"),TheFunctionNumber,TheOpNumber,TheFailCount); |
118 log.Close(); |
125 log.Close(); |
119 } |
126 } |
120 |
127 |
121 LOCAL_C TInt SetWriteFailOn(TInt aFailCount) |
128 LOCAL_C TInt SetWriteFailOn(TInt aFailCount) |
185 /** |
192 /** |
186 Fill media with zeroes from aStartPos to aEndPos |
193 Fill media with zeroes from aStartPos to aEndPos |
187 */ |
194 */ |
188 static void DoZeroFillMedia(TInt64 aStartPos, TInt64 aEndPos, RRawDisk& aWriter) |
195 static void DoZeroFillMedia(TInt64 aStartPos, TInt64 aEndPos, RRawDisk& aWriter) |
189 { |
196 { |
190 test(aStartPos >=0 && aEndPos >=0 && aStartPos < aEndPos); |
197 test(aStartPos >=0 && aEndPos >=0 && aStartPos < aEndPos); |
191 |
198 |
192 if(aStartPos == aEndPos) |
199 if(aStartPos == aEndPos) |
193 return; |
200 return; |
194 |
201 |
195 RBuf8 buf; |
202 RBuf8 buf; |
196 TInt nRes; |
203 TInt nRes; |
197 |
204 |
198 const TUint32 KBufSz=65536*2; //-- buffer with zeroes |
205 const TUint32 KBufSz=65536*2; //-- buffer with zeroes |
199 |
206 |
200 nRes = buf.CreateMax(KBufSz); |
207 nRes = buf.CreateMax(KBufSz); |
201 test(nRes == KErrNone); |
208 test_KErrNone(nRes); |
202 |
209 |
203 buf.FillZ(); |
210 buf.FillZ(); |
204 |
211 |
205 TUint32 rem = (TUint32)(aEndPos - aStartPos); |
212 TUint32 rem = (TUint32)(aEndPos - aStartPos); |
206 while(rem) |
213 while(rem) |
207 { |
214 { |
208 const TUint32 bytesToWrite=Min(rem, KBufSz); |
215 const TUint32 bytesToWrite=Min(rem, KBufSz); |
209 |
216 |
210 TPtrC8 ptr(buf.Ptr(), bytesToWrite); |
217 TPtrC8 ptr(buf.Ptr(), bytesToWrite); |
211 nRes = aWriter.Write(aStartPos, ptr); |
218 nRes = aWriter.Write(aStartPos, ptr); |
212 test(nRes == KErrNone || nRes == KErrDiskFull); |
219 test_Value(nRes, nRes == KErrNone || nRes == KErrDiskFull); |
213 |
220 |
214 aStartPos+=bytesToWrite; |
221 aStartPos+=bytesToWrite; |
215 rem-=bytesToWrite; |
222 rem-=bytesToWrite; |
216 } |
223 } |
217 |
224 |
629 for (TInt cluster = aStart; cluster < aEnd; cluster++) |
636 for (TInt cluster = aStart; cluster < aEnd; cluster++) |
630 { |
637 { |
631 if (GetFatEntry(cluster, aFat) != 0) |
638 if (GetFatEntry(cluster, aFat) != 0) |
632 { |
639 { |
633 HBufC8* buf=HBufC8::New(gBytesPerCluster); |
640 HBufC8* buf=HBufC8::New(gBytesPerCluster); |
634 test(buf!=NULL); |
641 test_NotNull(buf); |
635 TPtr8 ptr=buf->Des(); |
642 TPtr8 ptr=buf->Des(); |
636 TInt r=TheRawDisk.Open(TheFs,gSessionPath[0]-'A'); |
643 TInt r=TheRawDisk.Open(TheFs,gSessionPath[0]-'A'); |
637 test(r==KErrNone); |
644 test_KErrNone(r); |
638 r=TheRawDisk.Read(ClusterToByte(cluster), ptr); |
645 r=TheRawDisk.Read(ClusterToByte(cluster), ptr); |
639 test(r==KErrNone); |
646 test_KErrNone(r); |
640 TheRawDisk.Close(); |
647 TheRawDisk.Close(); |
641 RDebug::Print(_L("Cluster %d @ 0x%08X:"), cluster, ClusterToByte(cluster)); |
648 RDebug::Print(_L("Cluster %d @ 0x%08X:"), cluster, ClusterToByte(cluster)); |
642 DumpDirCluster(ptr.Ptr()); |
649 DumpDirCluster(ptr.Ptr()); |
643 delete buf; |
650 delete buf; |
644 } |
651 } |
1002 // |
1009 // |
1003 // Deletes entry with aName and corresponding entries created for EChainForward |
1010 // Deletes entry with aName and corresponding entries created for EChainForward |
1004 // |
1011 // |
1005 { |
1012 { |
1006 TInt r=TheFs.Delete(_L("\\fat\\file2")); |
1013 TInt r=TheFs.Delete(_L("\\fat\\file2")); |
1007 test(r==KErrNone||r==KErrNotFound); |
1014 test_Value(r, r==KErrNone||r==KErrNotFound); |
1008 r=TheFs.Delete(_L("\\fat\\file4")); |
1015 r=TheFs.Delete(_L("\\fat\\file4")); |
1009 test(r==KErrNone||r==KErrNotFound); |
1016 test_Value(r, r==KErrNone||r==KErrNotFound); |
1010 r=TheFs.Delete(_L("\\fat\\file5")); |
1017 r=TheFs.Delete(_L("\\fat\\file5")); |
1011 test(r==KErrNone||r==KErrNotFound); |
1018 test_Value(r, r==KErrNone||r==KErrNotFound); |
1012 if(aIsDir) |
1019 if(aIsDir) |
1013 r=TheFs.RmDir(aName); |
1020 r=TheFs.RmDir(aName); |
1014 else |
1021 else |
1015 r=TheFs.Delete(aName); |
1022 r=TheFs.Delete(aName); |
1016 return r; |
1023 return r; |
1021 // Creates an entry whose cluster chain first goes forward (upto 3.5kb for fat16 file) |
1028 // Creates an entry whose cluster chain first goes forward (upto 3.5kb for fat16 file) |
1022 // and then backwards |
1029 // and then backwards |
1023 // |
1030 // |
1024 { |
1031 { |
1025 TInt r=DeleteForwardEntry(aName,aIsDir); |
1032 TInt r=DeleteForwardEntry(aName,aIsDir); |
1026 test(r==KErrNone||r==KErrNotFound); |
1033 test_Value(r, r==KErrNone||r==KErrNotFound); |
1027 RFile file1,file2,entry; |
1034 RFile file1,file2,entry; |
1028 r=file1.Create(TheFs,_L("\\fat\\file1"),EFileShareAny); |
1035 r=file1.Create(TheFs,_L("\\fat\\file1"),EFileShareAny); |
1029 test(r==KErrNone); |
1036 test_KErrNone(r); |
1030 r=file1.SetSize(EntriesPerFatSector()*gBytesPerCluster); |
1037 r=file1.SetSize(EntriesPerFatSector()*gBytesPerCluster); |
1031 test(r==KErrNone); |
1038 test_KErrNone(r); |
1032 r=file2.Create(TheFs,_L("\\fat\\file2"),EFileShareAny); |
1039 r=file2.Create(TheFs,_L("\\fat\\file2"),EFileShareAny); |
1033 test(r==KErrNone); |
1040 test_KErrNone(r); |
1034 r=file2.SetSize(EntriesPerFatSector()*gBytesPerCluster); |
1041 r=file2.SetSize(EntriesPerFatSector()*gBytesPerCluster); |
1035 test(r==KErrNone); |
1042 test_KErrNone(r); |
1036 if(aIsDir) |
1043 if(aIsDir) |
1037 { |
1044 { |
1038 r=TheFs.MkDir(aName); |
1045 r=TheFs.MkDir(aName); |
1039 if(r!=KErrNone) |
1046 if(r!=KErrNone) |
1040 return(r); |
1047 return(r); |
1043 { |
1050 { |
1044 r=entry.Create(TheFs,aName,EFileShareAny); |
1051 r=entry.Create(TheFs,aName,EFileShareAny); |
1045 if(r!=KErrNone) |
1052 if(r!=KErrNone) |
1046 return(r); |
1053 return(r); |
1047 r=entry.SetSize(1); // ensure entry has start cluster allocated |
1054 r=entry.SetSize(1); // ensure entry has start cluster allocated |
1048 test(r==KErrNone); |
1055 test_KErrNone(r); |
1049 } |
1056 } |
1050 CreateAlternate(_L("\\fat\\file3"),_L("\\fat\\file4")); |
1057 CreateAlternate(_L("\\fat\\file3"),_L("\\fat\\file4")); |
1051 RFile file5; |
1058 RFile file5; |
1052 r=file5.Create(TheFs,_L("\\fat\\file5"),EFileShareAny); |
1059 r=file5.Create(TheFs,_L("\\fat\\file5"),EFileShareAny); |
1053 test(r==KErrNone); |
1060 test_KErrNone(r); |
1054 r=file5.SetSize(EntriesPerFatSector()*gBytesPerCluster*2); |
1061 r=file5.SetSize(EntriesPerFatSector()*gBytesPerCluster*2); |
1055 test(r==KErrNone); |
1062 test_KErrNone(r); |
1056 file1.Close(); |
1063 file1.Close(); |
1057 file2.Close(); |
1064 file2.Close(); |
1058 file5.Close(); |
1065 file5.Close(); |
1059 r=TheFs.Delete(_L("\\fat\\file1")); |
1066 r=TheFs.Delete(_L("\\fat\\file1")); |
1060 test(r==KErrNone); |
1067 test_KErrNone(r); |
1061 r=TheFs.Delete(_L("\\fat\\file3")); |
1068 r=TheFs.Delete(_L("\\fat\\file3")); |
1062 test(r==KErrNone); |
1069 test_KErrNone(r); |
1063 if(aIsDir) |
1070 if(aIsDir) |
1064 ExpandDirectory(aName,aSize); |
1071 ExpandDirectory(aName,aSize); |
1065 else |
1072 else |
1066 { |
1073 { |
1067 r=entry.SetSize(aSize); |
1074 r=entry.SetSize(aSize); |
1068 test(r==KErrNone); |
1075 test_KErrNone(r); |
1069 entry.Close(); |
1076 entry.Close(); |
1070 } |
1077 } |
1071 return(KErrNone); |
1078 return(KErrNone); |
1072 } |
1079 } |
1073 |
1080 |
1216 test.Start(_L("TestRFsDelete")); |
1223 test.Start(_L("TestRFsDelete")); |
1217 FOREVER |
1224 FOREVER |
1218 { |
1225 { |
1219 test.Printf(_L("failCount=%d\n"),failCount); |
1226 test.Printf(_L("failCount=%d\n"),failCount); |
1220 r=CreateEntry(aName,EFalse,aChain,aFileSize); |
1227 r=CreateEntry(aName,EFalse,aChain,aFileSize); |
1221 test(r==KErrNone||r==KErrAlreadyExists); |
1228 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1222 if(IsReset) |
1229 if(IsReset) |
1223 { |
1230 { |
1224 ++TheFailCount; |
1231 ++TheFailCount; |
1225 WriteLogFile(); |
1232 WriteLogFile(); |
1226 } |
1233 } |
1227 r=SetWriteFailOn(failCount); |
1234 r=SetWriteFailOn(failCount); |
1228 test(r==KErrNone); |
1235 test_KErrNone(r); |
1229 r=TheFs.Delete(aName); |
1236 r=TheFs.Delete(aName); |
1230 if(r==KErrNone) |
1237 if(r==KErrNone) |
1231 break; |
1238 break; |
1232 test(r==WriteFailValue); |
1239 test_Equal(WriteFailValue,r); |
1233 r=TheFs.ScanDrive(gSessionPath); |
1240 r=TheFs.ScanDrive(gSessionPath); |
1234 test(r==KErrNone); |
1241 test_KErrNone(r); |
1235 r=TheFs.CheckDisk(gSessionPath); |
1242 r=TheFs.CheckDisk(gSessionPath); |
1236 test(r==KErrNone); |
1243 test_KErrNone(r); |
1237 ++failCount; |
1244 ++failCount; |
1238 } |
1245 } |
1239 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1246 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1240 test(r==KErrNone); |
1247 test_KErrNone(r); |
1241 r=TheFs.CheckDisk(gSessionPath); |
1248 r=TheFs.CheckDisk(gSessionPath); |
1242 test(r==KErrNone); |
1249 test_KErrNone(r); |
1243 test(!EntryExists(aName)); |
1250 test(!EntryExists(aName)); |
1244 ++TheOpNumber; |
1251 ++TheOpNumber; |
1245 TheFailCount=0; |
1252 TheFailCount=0; |
1246 } |
1253 } |
1247 |
1254 |
1272 } |
1279 } |
1273 FOREVER |
1280 FOREVER |
1274 { |
1281 { |
1275 test.Printf(_L("failCount=%d\n"),failCount); |
1282 test.Printf(_L("failCount=%d\n"),failCount); |
1276 r=CreateEntry(aName,ETrue,aChain,aDirSize); |
1283 r=CreateEntry(aName,ETrue,aChain,aDirSize); |
1277 test(r==KErrNone||r==KErrAlreadyExists); |
1284 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1278 if(IsReset) |
1285 if(IsReset) |
1279 { |
1286 { |
1280 ++TheFailCount; |
1287 ++TheFailCount; |
1281 WriteLogFile(); |
1288 WriteLogFile(); |
1282 } |
1289 } |
1283 r=SetWriteFailOn(failCount); |
1290 r=SetWriteFailOn(failCount); |
1284 test(r==KErrNone); |
1291 test_KErrNone(r); |
1285 r=TheFs.RmDir(aName); |
1292 r=TheFs.RmDir(aName); |
1286 if(r==KErrNone) |
1293 if(r==KErrNone) |
1287 break; |
1294 break; |
1288 test(r==WriteFailValue); |
1295 test_Equal(WriteFailValue,r); |
1289 r=TheFs.ScanDrive(gSessionPath); |
1296 r=TheFs.ScanDrive(gSessionPath); |
1290 RDebug::Print(_L("%6d: ScanDrive = %d"), __LINE__, r); |
1297 RDebug::Print(_L("%6d: ScanDrive = %d"), __LINE__, r); |
1291 if (r != KErrNone) |
1298 if (r != KErrNone) |
1292 { |
1299 { |
1293 RDebug::Print(_L("ScanDrive fail %d"), r); |
1300 RDebug::Print(_L("ScanDrive fail %d"), r); |
1294 DumpFat(); |
1301 DumpFat(); |
1295 DumpData(NULL, 0, 200); |
1302 DumpData(NULL, 0, 200); |
1296 } |
1303 } |
1297 test(r==KErrNone); |
1304 test_KErrNone(r); |
1298 r=TheFs.CheckDisk(gSessionPath); |
1305 r=TheFs.CheckDisk(gSessionPath); |
1299 RDebug::Print(_L("%6d: CheckDisk = %d"), __LINE__, r); |
1306 RDebug::Print(_L("%6d: CheckDisk = %d"), __LINE__, r); |
1300 test(r==KErrNone); |
1307 test_KErrNone(r); |
1301 ++failCount; |
1308 ++failCount; |
1302 } |
1309 } |
1303 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1310 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1304 test(r==KErrNone); |
1311 test_KErrNone(r); |
1305 r=TheFs.CheckDisk(gSessionPath); |
1312 r=TheFs.CheckDisk(gSessionPath); |
1306 test(r==KErrNone); |
1313 test_KErrNone(r); |
1307 test(!EntryExists(aName)); |
1314 test(!EntryExists(aName)); |
1308 ++TheOpNumber; |
1315 ++TheOpNumber; |
1309 TheFailCount=0; |
1316 TheFailCount=0; |
1310 } |
1317 } |
1311 |
1318 |
1319 test.Next(_L("TestRFsMkDir")); |
1326 test.Next(_L("TestRFsMkDir")); |
1320 FOREVER |
1327 FOREVER |
1321 { |
1328 { |
1322 test.Printf(_L("failCount=%d\n"),failCount); |
1329 test.Printf(_L("failCount=%d\n"),failCount); |
1323 r=DeleteEntry(aName,ETrue,EChainStd); |
1330 r=DeleteEntry(aName,ETrue,EChainStd); |
1324 test(r==KErrNone||r==KErrNotFound); |
1331 test_Value(r, r==KErrNone||r==KErrNotFound); |
1325 if(IsReset) |
1332 if(IsReset) |
1326 { |
1333 { |
1327 ++TheFailCount; |
1334 ++TheFailCount; |
1328 WriteLogFile(); |
1335 WriteLogFile(); |
1329 } |
1336 } |
1330 r=SetWriteFailOn(failCount); |
1337 r=SetWriteFailOn(failCount); |
1331 test(r==KErrNone); |
1338 test_KErrNone(r); |
1332 r=TheFs.MkDir(aName); |
1339 r=TheFs.MkDir(aName); |
1333 if(r==KErrNone) |
1340 if(r==KErrNone) |
1334 break; |
1341 break; |
1335 test(r==WriteFailValue); |
1342 test_Equal(WriteFailValue,r); |
1336 r=TheFs.ScanDrive(gSessionPath); |
1343 r=TheFs.ScanDrive(gSessionPath); |
1337 test(r==KErrNone); |
1344 test_KErrNone(r); |
1338 r=TheFs.CheckDisk(gSessionPath); |
1345 r=TheFs.CheckDisk(gSessionPath); |
1339 test(r==KErrNone); |
1346 test_KErrNone(r); |
1340 ++failCount; |
1347 ++failCount; |
1341 } |
1348 } |
1342 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1349 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1343 test(r==KErrNone); |
1350 test_KErrNone(r); |
1344 r=TheFs.CheckDisk(gSessionPath); |
1351 r=TheFs.CheckDisk(gSessionPath); |
1345 test(r==KErrNone); |
1352 test_KErrNone(r); |
1346 test(EntryExists(aName)); |
1353 test(EntryExists(aName)); |
1347 r=DeleteEntry(aName,ETrue,EChainStd); |
1354 r=DeleteEntry(aName,ETrue,EChainStd); |
1348 test(r==KErrNone); |
1355 test_KErrNone(r); |
1349 ++TheOpNumber; |
1356 ++TheOpNumber; |
1350 TheFailCount=0; |
1357 TheFailCount=0; |
1351 } |
1358 } |
1352 |
1359 |
1353 LOCAL_C void TestRFsRename(const TDesC& aOldName,const TDesC& aNewName,TBool aIsDir,TFatChain aChain,TInt aSize) |
1360 LOCAL_C void TestRFsRename(const TDesC& aOldName,const TDesC& aNewName,TBool aIsDir,TFatChain aChain,TInt aSize) |
1361 TEntry oldEntryInfo,newEntryInfo; |
1368 TEntry oldEntryInfo,newEntryInfo; |
1362 FOREVER |
1369 FOREVER |
1363 { |
1370 { |
1364 test.Printf(_L("failCount=%d\n"),failCount); |
1371 test.Printf(_L("failCount=%d\n"),failCount); |
1365 r=CreateEntry(aOldName,aIsDir,aChain,aSize); |
1372 r=CreateEntry(aOldName,aIsDir,aChain,aSize); |
1366 test(r==KErrNone||r==KErrAlreadyExists); |
1373 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1367 r=DeleteEntry(aNewName,aIsDir,aChain); |
1374 r=DeleteEntry(aNewName,aIsDir,aChain); |
1368 test(r==KErrNone||r==KErrNotFound); |
1375 test_Value(r, r==KErrNone||r==KErrNotFound); |
1369 GetEntryDetails(aOldName,oldEntryInfo); |
1376 GetEntryDetails(aOldName,oldEntryInfo); |
1370 if(IsReset) |
1377 if(IsReset) |
1371 { |
1378 { |
1372 ++TheFailCount; |
1379 ++TheFailCount; |
1373 WriteLogFile(); |
1380 WriteLogFile(); |
1374 } |
1381 } |
1375 r=SetWriteFailOn(failCount); |
1382 r=SetWriteFailOn(failCount); |
1376 test(r==KErrNone); |
1383 test_KErrNone(r); |
1377 r=TheFs.Rename(aOldName,aNewName); |
1384 r=TheFs.Rename(aOldName,aNewName); |
1378 if(r==KErrNone) |
1385 if(r==KErrNone) |
1379 break; |
1386 break; |
1380 if(r!=WriteFailValue) |
1387 test_Equal(WriteFailValue,r); |
1381 { |
|
1382 test.Printf(_L("r=%d\n"),r); |
|
1383 test(EFalse); |
|
1384 } |
|
1385 test(r==WriteFailValue); |
|
1386 r=TheFs.ScanDrive(gSessionPath); |
1388 r=TheFs.ScanDrive(gSessionPath); |
1387 test(r==KErrNone); |
1389 test_KErrNone(r); |
1388 r=TheFs.CheckDisk(gSessionPath); |
1390 r=TheFs.CheckDisk(gSessionPath); |
1389 test(r==KErrNone); |
1391 test_KErrNone(r); |
1390 // no start cluster if aSize==0 |
1392 // no start cluster if aSize==0 |
1391 if(aSize!=0) |
1393 if(aSize!=0) |
1392 test(OneEntryExists(aOldName,aNewName)); |
1394 test(OneEntryExists(aOldName,aNewName)); |
1393 ++failCount; |
1395 ++failCount; |
1394 } |
1396 } |
1395 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1397 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1396 test(r==KErrNone); |
1398 test_KErrNone(r); |
1397 r=TheFs.CheckDisk(gSessionPath); |
1399 r=TheFs.CheckDisk(gSessionPath); |
1398 test(r==KErrNone); |
1400 test_KErrNone(r); |
1399 test(EntryExists(aNewName) && !EntryExists(aOldName)); |
1401 test(EntryExists(aNewName) && !EntryExists(aOldName)); |
1400 GetEntryDetails(aNewName,newEntryInfo); |
1402 GetEntryDetails(aNewName,newEntryInfo); |
1401 test(IsSameEntryDetails(oldEntryInfo,newEntryInfo)); |
1403 test(IsSameEntryDetails(oldEntryInfo,newEntryInfo)); |
1402 r=DeleteEntry(aNewName,aIsDir,aChain); |
1404 r=DeleteEntry(aNewName,aIsDir,aChain); |
1403 test(r==KErrNone); |
1405 test_KErrNone(r); |
1404 ++TheOpNumber; |
1406 ++TheOpNumber; |
1405 TheFailCount=0; |
1407 TheFailCount=0; |
1406 } |
1408 } |
1407 |
1409 |
1408 LOCAL_C void TestRFsReplace(const TDesC& aOldName, const TDesC& aNewName,TBool aBothExist,TFatChain aChain,TInt aFileSize) |
1410 LOCAL_C void TestRFsReplace(const TDesC& aOldName, const TDesC& aNewName,TBool aBothExist,TFatChain aChain,TInt aFileSize) |
1420 TEntry oldEntryInfo,newEntryInfo; |
1422 TEntry oldEntryInfo,newEntryInfo; |
1421 FOREVER |
1423 FOREVER |
1422 { |
1424 { |
1423 test.Printf(_L("failCount=%d\n"),failCount); |
1425 test.Printf(_L("failCount=%d\n"),failCount); |
1424 r=CreateEntry(aOldName,EFalse,aChain,aFileSize); |
1426 r=CreateEntry(aOldName,EFalse,aChain,aFileSize); |
1425 test(r==KErrNone||r==KErrAlreadyExists); |
1427 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1426 if(aBothExist) |
1428 if(aBothExist) |
1427 { |
1429 { |
1428 r=CreateEntry(aNewName,EFalse,aChain,aFileSize); |
1430 r=CreateEntry(aNewName,EFalse,aChain,aFileSize); |
1429 test(r==KErrNone||r==KErrAlreadyExists); |
1431 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1430 } |
1432 } |
1431 else |
1433 else |
1432 { |
1434 { |
1433 r=DeleteEntry(aNewName,EFalse,aChain); |
1435 r=DeleteEntry(aNewName,EFalse,aChain); |
1434 test(r==KErrNone||r==KErrNotFound); |
1436 test_Value(r, r==KErrNone||r==KErrNotFound); |
1435 } |
1437 } |
1436 GetEntryDetails(aOldName,oldEntryInfo); |
1438 GetEntryDetails(aOldName,oldEntryInfo); |
1437 if(IsReset) |
1439 if(IsReset) |
1438 { |
1440 { |
1439 ++TheFailCount; |
1441 ++TheFailCount; |
1440 WriteLogFile(); |
1442 WriteLogFile(); |
1441 } |
1443 } |
1442 r=SetWriteFailOn(failCount); |
1444 r=SetWriteFailOn(failCount); |
1443 test(r==KErrNone); |
1445 test_KErrNone(r); |
1444 r=TheFs.Replace(aOldName,aNewName); |
1446 r=TheFs.Replace(aOldName,aNewName); |
1445 if(r==KErrNone) |
1447 if(r==KErrNone) |
1446 break; |
1448 break; |
1447 test(r==WriteFailValue); |
1449 test_Equal(WriteFailValue,r); |
1448 r=TheFs.ScanDrive(gSessionPath); |
1450 r=TheFs.ScanDrive(gSessionPath); |
1449 test(r==KErrNone); |
1451 test_KErrNone(r); |
1450 r=TheFs.CheckDisk(gSessionPath); |
1452 r=TheFs.CheckDisk(gSessionPath); |
1451 test(r==KErrNone); |
1453 test_KErrNone(r); |
1452 if(!aBothExist && aFileSize!=0) |
1454 if(!aBothExist && aFileSize!=0) |
1453 test(OneEntryExists(aOldName,aNewName)); |
1455 test(OneEntryExists(aOldName,aNewName)); |
1454 else if(aBothExist) |
1456 else if(aBothExist) |
1455 test(EntryExists(aOldName)||EntryExists(aNewName)); |
1457 test(EntryExists(aOldName)||EntryExists(aNewName)); |
1456 ++failCount; |
1458 ++failCount; |
1457 } |
1459 } |
1458 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1460 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1459 test(r==KErrNone); |
1461 test_KErrNone(r); |
1460 r=TheFs.CheckDisk(gSessionPath); |
1462 r=TheFs.CheckDisk(gSessionPath); |
1461 test(r==KErrNone); |
1463 test_KErrNone(r); |
1462 test(EntryExists(aNewName) && !EntryExists(aOldName)); |
1464 test(EntryExists(aNewName) && !EntryExists(aOldName)); |
1463 GetEntryDetails(aNewName,newEntryInfo); |
1465 GetEntryDetails(aNewName,newEntryInfo); |
1464 test(IsSameEntryDetails(oldEntryInfo,newEntryInfo)); |
1466 test(IsSameEntryDetails(oldEntryInfo,newEntryInfo)); |
1465 r=DeleteEntry(aNewName,EFalse,aChain); |
1467 r=DeleteEntry(aNewName,EFalse,aChain); |
1466 test(r==KErrNone); |
1468 test_KErrNone(r); |
1467 ++TheOpNumber; |
1469 ++TheOpNumber; |
1468 TheFailCount=0; |
1470 TheFailCount=0; |
1469 } |
1471 } |
1470 |
1472 |
1471 LOCAL_C void TestRFileCreate(const TDesC& aName) |
1473 LOCAL_C void TestRFileCreate(const TDesC& aName) |
1478 test.Next(_L("TestRFileCreate")); |
1480 test.Next(_L("TestRFileCreate")); |
1479 FOREVER |
1481 FOREVER |
1480 { |
1482 { |
1481 test.Printf(_L("failCount=%d\n"),failCount); |
1483 test.Printf(_L("failCount=%d\n"),failCount); |
1482 r=DeleteEntry(aName,EFalse,EChainStd); |
1484 r=DeleteEntry(aName,EFalse,EChainStd); |
1483 test(r==KErrNone||r==KErrNotFound); |
1485 test_Value(r, r==KErrNone||r==KErrNotFound); |
1484 if(IsReset) |
1486 if(IsReset) |
1485 { |
1487 { |
1486 ++TheFailCount; |
1488 ++TheFailCount; |
1487 WriteLogFile(); |
1489 WriteLogFile(); |
1488 } |
1490 } |
1489 r=SetWriteFailOn(failCount); |
1491 r=SetWriteFailOn(failCount); |
1490 test(r==KErrNone); |
1492 test_KErrNone(r); |
1491 RFile file; |
1493 RFile file; |
1492 r=file.Create(TheFs,aName,EFileShareAny); |
1494 r=file.Create(TheFs,aName,EFileShareAny); |
1493 if(r==KErrNone) |
1495 if(r==KErrNone) |
1494 { |
1496 { |
1495 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1497 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1496 test(r==KErrNone); |
1498 test_KErrNone(r); |
1497 file.Close(); |
1499 file.Close(); |
1498 break; |
1500 break; |
1499 } |
1501 } |
1500 test(r==WriteFailValue); |
1502 test_Equal(WriteFailValue,r); |
1501 r=TheFs.ScanDrive(gSessionPath); |
1503 r=TheFs.ScanDrive(gSessionPath); |
1502 test(r==KErrNone); |
1504 test_KErrNone(r); |
1503 r=TheFs.CheckDisk(gSessionPath); |
1505 r=TheFs.CheckDisk(gSessionPath); |
1504 test(r==KErrNone); |
1506 test_KErrNone(r); |
1505 ++failCount; |
1507 ++failCount; |
1506 } |
1508 } |
1507 r=TheFs.CheckDisk(gSessionPath); |
1509 r=TheFs.CheckDisk(gSessionPath); |
1508 test(r==KErrNone); |
1510 test_KErrNone(r); |
1509 test(EntryExists(aName)); |
1511 test(EntryExists(aName)); |
1510 r=DeleteEntry(aName,EFalse,EChainStd); |
1512 r=DeleteEntry(aName,EFalse,EChainStd); |
1511 test(r==KErrNone); |
1513 test_KErrNone(r); |
1512 ++TheOpNumber; |
1514 ++TheOpNumber; |
1513 TheFailCount=0; |
1515 TheFailCount=0; |
1514 } |
1516 } |
1515 |
1517 |
1516 LOCAL_C void TestRFileTemp(const TDesC& aPath) |
1518 LOCAL_C void TestRFileTemp(const TDesC& aPath) |
1529 { |
1531 { |
1530 ++TheFailCount; |
1532 ++TheFailCount; |
1531 WriteLogFile(); |
1533 WriteLogFile(); |
1532 } |
1534 } |
1533 r=SetWriteFailOn(failCount); |
1535 r=SetWriteFailOn(failCount); |
1534 test(r==KErrNone); |
1536 test_KErrNone(r); |
1535 RFile file; |
1537 RFile file; |
1536 r=file.Temp(TheFs,aPath,temp,EFileShareAny); |
1538 r=file.Temp(TheFs,aPath,temp,EFileShareAny); |
1537 if(r==KErrNone) |
1539 if(r==KErrNone) |
1538 { |
1540 { |
1539 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1541 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1540 test(r==KErrNone); |
1542 test_KErrNone(r); |
1541 file.Close(); |
1543 file.Close(); |
1542 break; |
1544 break; |
1543 } |
1545 } |
1544 test(r==WriteFailValue); |
1546 test(r==WriteFailValue); |
1545 r=TheFs.ScanDrive(gSessionPath); |
1547 r=TheFs.ScanDrive(gSessionPath); |
1546 test(r==KErrNone); |
1548 test_KErrNone(r); |
1547 r=TheFs.CheckDisk(gSessionPath); |
1549 r=TheFs.CheckDisk(gSessionPath); |
1548 test(r==KErrNone); |
1550 test_KErrNone(r); |
1549 ++failCount; |
1551 ++failCount; |
1550 } |
1552 } |
1551 r=TheFs.CheckDisk(gSessionPath); |
1553 r=TheFs.CheckDisk(gSessionPath); |
1552 test(r==KErrNone); |
1554 test_KErrNone(r); |
1553 test(EntryExists(temp)); |
1555 test(EntryExists(temp)); |
1554 r=DeleteEntry(temp,EFalse,EChainStd); |
1556 r=DeleteEntry(temp,EFalse,EChainStd); |
1555 test(r==KErrNone); |
1557 test_KErrNone(r); |
1556 ++TheOpNumber; |
1558 ++TheOpNumber; |
1557 TheFailCount=0; |
1559 TheFailCount=0; |
1558 } |
1560 } |
1559 |
1561 |
1560 LOCAL_C void TestRFileRename(const TDesC& aOldName, const TDesC& aNewName,TFatChain aChain,TInt aFileSize) |
1562 LOCAL_C void TestRFileRename(const TDesC& aOldName, const TDesC& aNewName,TFatChain aChain,TInt aFileSize) |
1568 TEntry oldEntryInfo,newEntryInfo; |
1570 TEntry oldEntryInfo,newEntryInfo; |
1569 FOREVER |
1571 FOREVER |
1570 { |
1572 { |
1571 test.Printf(_L("failCount=%d\n"),failCount); |
1573 test.Printf(_L("failCount=%d\n"),failCount); |
1572 r=CreateEntry(aOldName,EFalse,aChain,aFileSize); |
1574 r=CreateEntry(aOldName,EFalse,aChain,aFileSize); |
1573 test(r==KErrNone||r==KErrAlreadyExists); |
1575 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1574 r=DeleteEntry(aNewName,EFalse,aChain); |
1576 r=DeleteEntry(aNewName,EFalse,aChain); |
1575 test(r==KErrNone||r==KErrNotFound); |
1577 test_Value(r, r==KErrNone||r==KErrNotFound); |
1576 GetEntryDetails(aOldName,oldEntryInfo); |
1578 GetEntryDetails(aOldName,oldEntryInfo); |
1577 if(IsReset) |
1579 if(IsReset) |
1578 { |
1580 { |
1579 ++TheFailCount; |
1581 ++TheFailCount; |
1580 WriteLogFile(); |
1582 WriteLogFile(); |
1581 } |
1583 } |
1582 RFile file; |
1584 RFile file; |
1583 r=file.Open(TheFs,aOldName,EFileShareExclusive|EFileWrite); |
1585 r=file.Open(TheFs,aOldName,EFileShareExclusive|EFileWrite); |
1584 test(r==KErrNone); |
1586 test_KErrNone(r); |
1585 r=SetWriteFailOn(failCount); |
1587 r=SetWriteFailOn(failCount); |
1586 test(r==KErrNone); |
1588 test_KErrNone(r); |
1587 r=file.Rename(aNewName); |
1589 r=file.Rename(aNewName); |
1588 if(r==KErrNone) |
1590 if(r==KErrNone) |
1589 { |
1591 { |
1590 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1592 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1591 test(r==KErrNone); |
1593 test_KErrNone(r); |
1592 file.Close(); |
1594 file.Close(); |
1593 break; |
1595 break; |
1594 } |
1596 } |
1595 test(r==WriteFailValue); |
1597 test_Equal(WriteFailValue,r); |
1596 file.Close(); |
1598 file.Close(); |
1597 r=TheFs.ScanDrive(gSessionPath); |
1599 r=TheFs.ScanDrive(gSessionPath); |
1598 test(r==KErrNone); |
1600 test_KErrNone(r); |
1599 r=TheFs.CheckDisk(gSessionPath); |
1601 r=TheFs.CheckDisk(gSessionPath); |
1600 test(r==KErrNone); |
1602 test_KErrNone(r); |
1601 if(aFileSize) |
1603 if(aFileSize) |
1602 test(OneEntryExists(aOldName,aNewName)); |
1604 test(OneEntryExists(aOldName,aNewName)); |
1603 ++failCount; |
1605 ++failCount; |
1604 } |
1606 } |
1605 r=TheFs.CheckDisk(gSessionPath); |
1607 r=TheFs.CheckDisk(gSessionPath); |
1606 test(r==KErrNone); |
1608 test_KErrNone(r); |
1607 test(EntryExists(aNewName) && !EntryExists(aOldName)); |
1609 test(EntryExists(aNewName) && !EntryExists(aOldName)); |
1608 GetEntryDetails(aNewName,newEntryInfo); |
1610 GetEntryDetails(aNewName,newEntryInfo); |
1609 test(IsSameEntryDetails(oldEntryInfo,newEntryInfo)); |
1611 test(IsSameEntryDetails(oldEntryInfo,newEntryInfo)); |
1610 r=DeleteEntry(aNewName,EFalse,aChain); |
1612 r=DeleteEntry(aNewName,EFalse,aChain); |
1611 test(r==KErrNone); |
1613 test_KErrNone(r); |
1612 ++TheOpNumber; |
1614 ++TheOpNumber; |
1613 TheFailCount=0; |
1615 TheFailCount=0; |
1614 } |
1616 } |
1615 |
1617 |
1616 LOCAL_C void TestRFileReplace(const TDesC& aName,TBool aAlreadyExists,TFatChain aChain,TInt aFileSize) |
1618 LOCAL_C void TestRFileReplace(const TDesC& aName,TBool aAlreadyExists,TFatChain aChain,TInt aFileSize) |
1625 { |
1627 { |
1626 test.Printf(_L("failCount=%d\n"),failCount); |
1628 test.Printf(_L("failCount=%d\n"),failCount); |
1627 if(aAlreadyExists) |
1629 if(aAlreadyExists) |
1628 { |
1630 { |
1629 r=CreateEntry(aName,EFalse,aChain,aFileSize); |
1631 r=CreateEntry(aName,EFalse,aChain,aFileSize); |
1630 test(r==KErrNone||r==KErrAlreadyExists); |
1632 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1631 } |
1633 } |
1632 else |
1634 else |
1633 { |
1635 { |
1634 r=DeleteEntry(aName,EFalse,aChain); |
1636 r=DeleteEntry(aName,EFalse,aChain); |
1635 test(r==KErrNone||r==KErrNotFound); |
1637 test_Value(r, r==KErrNone||r==KErrNotFound); |
1636 } |
1638 } |
1637 if(IsReset) |
1639 if(IsReset) |
1638 { |
1640 { |
1639 ++TheFailCount; |
1641 ++TheFailCount; |
1640 WriteLogFile(); |
1642 WriteLogFile(); |
1641 } |
1643 } |
1642 r=SetWriteFailOn(failCount); |
1644 r=SetWriteFailOn(failCount); |
1643 test(r==KErrNone); |
1645 test_KErrNone(r); |
1644 RFile file; |
1646 RFile file; |
1645 r=file.Replace(TheFs,aName,EFileShareAny); |
1647 r=file.Replace(TheFs,aName,EFileShareAny); |
1646 if(r==KErrNone) |
1648 if(r==KErrNone) |
1647 { |
1649 { |
1648 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1650 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1649 test(r==KErrNone); |
1651 test_KErrNone(r); |
1650 file.Close(); |
1652 file.Close(); |
1651 break; |
1653 break; |
1652 } |
1654 } |
1653 test(r==WriteFailValue); |
1655 test_Equal(WriteFailValue,r); |
1654 r=TheFs.ScanDrive(gSessionPath); |
1656 r=TheFs.ScanDrive(gSessionPath); |
1655 test(r==KErrNone); |
1657 test_KErrNone(r); |
1656 r=TheFs.CheckDisk(gSessionPath); |
1658 r=TheFs.CheckDisk(gSessionPath); |
1657 test(r==KErrNone); |
1659 test_KErrNone(r); |
1658 ++failCount; |
1660 ++failCount; |
1659 } |
1661 } |
1660 r=TheFs.CheckDisk(gSessionPath); |
1662 r=TheFs.CheckDisk(gSessionPath); |
1661 test(r==KErrNone); |
1663 test_KErrNone(r); |
1662 test(EntryExists(aName)); |
1664 test(EntryExists(aName)); |
1663 r=DeleteEntry(aName,EFalse,aChain); |
1665 r=DeleteEntry(aName,EFalse,aChain); |
1664 test(r==KErrNone); |
1666 test_KErrNone(r); |
1665 if(!aAlreadyExists) |
1667 if(!aAlreadyExists) |
1666 { |
1668 { |
1667 ++TheOpNumber; |
1669 ++TheOpNumber; |
1668 TheFailCount=0; |
1670 TheFailCount=0; |
1669 } |
1671 } |
1685 test.Printf(_L("old size=%d new size=%d\n"),aOldFileSize,aNewFileSize); |
1687 test.Printf(_L("old size=%d new size=%d\n"),aOldFileSize,aNewFileSize); |
1686 FOREVER |
1688 FOREVER |
1687 { |
1689 { |
1688 test.Printf(_L("failCount=%d\n"),failCount); |
1690 test.Printf(_L("failCount=%d\n"),failCount); |
1689 r=CreateEntry(aName,EFalse,aChain,aOldFileSize); |
1691 r=CreateEntry(aName,EFalse,aChain,aOldFileSize); |
1690 test(r==KErrNone||r==KErrAlreadyExists); |
1692 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1691 if(IsReset) |
1693 if(IsReset) |
1692 { |
1694 { |
1693 ++TheFailCount; |
1695 ++TheFailCount; |
1694 WriteLogFile(); |
1696 WriteLogFile(); |
1695 } |
1697 } |
1696 r=SetWriteFailOn(failCount); |
1698 r=SetWriteFailOn(failCount); |
1697 test(r==KErrNone); |
1699 test_KErrNone(r); |
1698 RFile file; |
1700 RFile file; |
1699 r=file.Open(TheFs,aName,EFileShareAny|EFileWrite); |
1701 r=file.Open(TheFs,aName,EFileShareAny|EFileWrite); |
1700 test(r==KErrNone); |
1702 test_KErrNone(r); |
1701 r=file.SetSize(aNewFileSize); |
1703 r=file.SetSize(aNewFileSize); |
1702 // close the file before testing the return value! |
1704 // close the file before testing the return value! |
1703 file.Close(); |
1705 file.Close(); |
1704 if(r==KErrNone) |
1706 if(r==KErrNone) |
1705 { |
1707 { |
1706 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1708 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1707 test(r==KErrNone); |
1709 test_KErrNone(r); |
1708 file.Close(); |
1710 file.Close(); |
1709 break; |
1711 break; |
1710 } |
1712 } |
1711 file.Close(); |
1713 file.Close(); |
1712 test(r==WriteFailValue); |
1714 test_Equal(WriteFailValue,r); |
1713 r=TheFs.ScanDrive(gSessionPath); |
1715 r=TheFs.ScanDrive(gSessionPath); |
1714 test(r==KErrNone); |
1716 test_KErrNone(r); |
1715 r=TheFs.CheckDisk(gSessionPath); |
1717 r=TheFs.CheckDisk(gSessionPath); |
1716 test(r==KErrNone); |
1718 test_KErrNone(r); |
1717 r=file.Open(TheFs,aName,EFileShareAny|EFileWrite); |
1719 r=file.Open(TheFs,aName,EFileShareAny|EFileWrite); |
1718 test(r==KErrNone); |
1720 test_KErrNone(r); |
1719 TInt size; |
1721 TInt size; |
1720 r=file.Size(size); |
1722 r=file.Size(size); |
1721 test(r==KErrNone); |
1723 test_KErrNone(r); |
1722 test(size==aNewFileSize||size==aOldFileSize); |
1724 test_Value(size, size==aNewFileSize||size==aOldFileSize); |
1723 file.Close(); |
1725 file.Close(); |
1724 ++failCount; |
1726 ++failCount; |
1725 } |
1727 } |
1726 r=TheFs.CheckDisk(gSessionPath); |
1728 r=TheFs.CheckDisk(gSessionPath); |
1727 test(r==KErrNone); |
1729 test_KErrNone(r); |
1728 RFile file; |
1730 RFile file; |
1729 r=file.Open(TheFs,aName,EFileShareAny); |
1731 r=file.Open(TheFs,aName,EFileShareAny); |
1730 test(r==KErrNone); |
1732 test_KErrNone(r); |
1731 TInt fileSize; |
1733 TInt fileSize; |
1732 r=file.Size(fileSize); |
1734 r=file.Size(fileSize); |
1733 test(r==KErrNone); |
1735 test_KErrNone(r); |
1734 test(aNewFileSize==fileSize); |
1736 test_Equal(aNewFileSize,fileSize); |
1735 file.Close(); |
1737 file.Close(); |
1736 r=DeleteEntry(aName,EFalse,aChain); |
1738 r=DeleteEntry(aName,EFalse,aChain); |
1737 test(r==KErrNone); |
1739 test_KErrNone(r); |
1738 ++TheFunctionNumber; |
1740 ++TheFunctionNumber; |
1739 TheFailCount=0; |
1741 TheFailCount=0; |
1740 } |
1742 } |
1741 |
1743 |
1742 LOCAL_C void TestRFileWrite(const TDesC& aName,TFatChain aChain,TInt aFileSize,TInt aPos,TInt aLength) |
1744 LOCAL_C void TestRFileWrite(const TDesC& aName,TFatChain aChain,TInt aFileSize,TInt aPos,TInt aLength) |
1749 test.Next(_L("TestRFileWrite")); |
1751 test.Next(_L("TestRFileWrite")); |
1750 test.Printf(_L("aFileSize=%d,aPos=%d,aLength=%d\n"),aFileSize,aPos,aLength); |
1752 test.Printf(_L("aFileSize=%d,aPos=%d,aLength=%d\n"),aFileSize,aPos,aLength); |
1751 TInt newSize=(aFileSize>=aPos+aLength)?aFileSize:aPos+aLength; |
1753 TInt newSize=(aFileSize>=aPos+aLength)?aFileSize:aPos+aLength; |
1752 HBufC8* desPtr; |
1754 HBufC8* desPtr; |
1753 desPtr=HBufC8::New(aLength); |
1755 desPtr=HBufC8::New(aLength); |
1754 test(desPtr!=NULL); |
1756 test_NotNull(desPtr); |
1755 TPtr8 des=desPtr->Des(); |
1757 TPtr8 des=desPtr->Des(); |
1756 des.SetLength(aLength); |
1758 des.SetLength(aLength); |
1757 InitialiseWriteBuffer(des); |
1759 InitialiseWriteBuffer(des); |
1758 FOREVER |
1760 FOREVER |
1759 { |
1761 { |
1760 test.Printf(_L("failCount=%d\n"),failCount); |
1762 test.Printf(_L("failCount=%d\n"),failCount); |
1761 r=CreateEntry(aName,EFalse,aChain,aFileSize); |
1763 r=CreateEntry(aName,EFalse,aChain,aFileSize); |
1762 test(r==KErrNone||r==KErrAlreadyExists); |
1764 test_Value(r, r==KErrNone||r==KErrAlreadyExists); |
1763 if(IsReset) |
1765 if(IsReset) |
1764 { |
1766 { |
1765 ++TheFailCount; |
1767 ++TheFailCount; |
1766 WriteLogFile(); |
1768 WriteLogFile(); |
1767 } |
1769 } |
1768 r=SetWriteFailOn(failCount); |
1770 r=SetWriteFailOn(failCount); |
1769 test(r==KErrNone); |
1771 test_KErrNone(r); |
1770 RFile file; |
1772 RFile file; |
1771 r=file.Open(TheFs,aName,EFileShareAny|EFileWrite); |
1773 r=file.Open(TheFs,aName,EFileShareAny|EFileWrite); |
1772 test(r==KErrNone); |
1774 test_KErrNone(r); |
1773 r=file.Write(aPos,des,aLength); |
1775 r=file.Write(aPos,des,aLength); |
1774 if(r==KErrNone) |
1776 if(r==KErrNone) |
1775 { |
1777 { |
1776 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1778 r=TheFs.ControlIo(gSessionPath[0]-'A',KControlIoWriteFailOff); |
1777 test(r==KErrNone); |
1779 test_KErrNone(r); |
1778 file.Close(); |
1780 file.Close(); |
1779 break; |
1781 break; |
1780 } |
1782 } |
1781 test(r==WriteFailValue); |
1783 test_Equal(WriteFailValue,r); |
1782 file.Close(); |
1784 file.Close(); |
1783 r=TheFs.ScanDrive(gSessionPath); |
1785 r=TheFs.ScanDrive(gSessionPath); |
1784 test(r==KErrNone); |
1786 test_KErrNone(r); |
1785 r=TheFs.CheckDisk(gSessionPath); |
1787 r=TheFs.CheckDisk(gSessionPath); |
1786 test(r==KErrNone); |
1788 test_KErrNone(r); |
1787 file.Open(TheFs,aName,EFileShareAny); |
1789 file.Open(TheFs,aName,EFileShareAny); |
1788 test(r==KErrNone); |
1790 test_KErrNone(r); |
1789 TInt fileSize; |
1791 TInt fileSize; |
1790 r=file.Size(fileSize); |
1792 r=file.Size(fileSize); |
1791 // with fair scheduling enabled it's possible for the file |
1793 // with fair scheduling enabled it's possible for the file |
1792 // size to grow even if the write appears to have failed... |
1794 // size to grow even if the write appears to have failed... |
1793 // test(fileSize==aFileSize||fileSize==newSize); |
1795 // test_Value(fileSize, fileSize==aFileSize||fileSize==newSize); |
1794 test(fileSize>=aFileSize && fileSize <= newSize); |
1796 test_Value(fileSize, fileSize>=aFileSize && fileSize <= newSize); |
1795 |
1797 |
1796 file.Close(); |
1798 file.Close(); |
1797 ++failCount; |
1799 ++failCount; |
1798 } |
1800 } |
1799 r=TheFs.CheckDisk(gSessionPath); |
1801 r=TheFs.CheckDisk(gSessionPath); |
1800 test(r==KErrNone); |
1802 test_KErrNone(r); |
1801 RFile file; |
1803 RFile file; |
1802 r=file.Open(TheFs,aName,EFileShareAny); |
1804 r=file.Open(TheFs,aName,EFileShareAny); |
1803 test(r==KErrNone); |
1805 test_KErrNone(r); |
1804 TInt fileSize; |
1806 TInt fileSize; |
1805 r=file.Size(fileSize); |
1807 r=file.Size(fileSize); |
1806 test(r==KErrNone); |
1808 test_KErrNone(r); |
1807 test(newSize==fileSize); |
1809 test_Equal(newSize,fileSize); |
1808 HBufC8* desPtr2; |
1810 HBufC8* desPtr2; |
1809 desPtr2=HBufC8::New(aLength); |
1811 desPtr2=HBufC8::New(aLength); |
1810 test(desPtr2!=NULL); |
1812 test_NotNull(desPtr2); |
1811 TPtr8 des2=desPtr2->Des(); |
1813 TPtr8 des2=desPtr2->Des(); |
1812 des2.SetLength(aLength); |
1814 des2.SetLength(aLength); |
1813 r=file.Read(aPos,des2,des2.Length()); |
1815 r=file.Read(aPos,des2,des2.Length()); |
1814 test(r==KErrNone); |
1816 test_KErrNone(r); |
1815 r=des2.Compare(des); |
1817 r=des2.Compare(des); |
1816 test(r==0); |
1818 test_KErrNone(r); |
1817 file.Close(); |
1819 file.Close(); |
1818 r=DeleteEntry(aName,EFalse,aChain); |
1820 r=DeleteEntry(aName,EFalse,aChain); |
1819 test(r==KErrNone); |
1821 test_KErrNone(r); |
1820 delete desPtr; |
1822 delete desPtr; |
1821 delete desPtr2; |
1823 delete desPtr2; |
1822 ++TheFunctionNumber; |
1824 ++TheFunctionNumber; |
1823 TheFailCount=0; |
1825 TheFailCount=0; |
1824 } |
1826 } |
1983 DoReadBootSector(); |
1985 DoReadBootSector(); |
1984 DumpBootSector(); |
1986 DumpBootSector(); |
1985 ClearDiskData(); |
1987 ClearDiskData(); |
1986 |
1988 |
1987 r=TheFs.SetSessionPath(gSessionPath); |
1989 r=TheFs.SetSessionPath(gSessionPath); |
1988 test(r==KErrNone); |
1990 test_KErrNone(r); |
1989 |
1991 |
1990 switch(TheFunctionNumber) |
1992 switch(TheFunctionNumber) |
1991 { |
1993 { |
1992 case(0):TestOperation0(); |
1994 case(0):TestOperation0(); |
1993 case(1):{ |
1995 case(1):{ |
1994 TestOperation1(); |
1996 TestOperation1(); |
1995 r=TheFs.MkDir(_L("\\fat\\")); |
1997 r=TheFs.MkDir(_L("\\fat\\")); |
1996 test(r==KErrNone); |
1998 test_KErrNone(r); |
1997 r=TheFs.MkDir(_L("\\test\\")); |
1999 r=TheFs.MkDir(_L("\\test\\")); |
1998 test(r==KErrNone); |
2000 test_KErrNone(r); |
1999 r=TheFs.MkDir(_L("\\ANother\\")); |
2001 r=TheFs.MkDir(_L("\\ANother\\")); |
2000 test(r==KErrNone); |
2002 test_KErrNone(r); |
2001 r=TheFs.MkDir(_L("\\test\\subdir1\\")); |
2003 r=TheFs.MkDir(_L("\\test\\subdir1\\")); |
2002 test(r==KErrNone); |
2004 test_KErrNone(r); |
2003 r=TheFs.MkDir(_L("\\test\\subdir2\\")); |
2005 r=TheFs.MkDir(_L("\\test\\subdir2\\")); |
2004 test(r==KErrNone);} |
2006 test_KErrNone(r);} |
2005 case(2):{ |
2007 case(2):{ |
2006 TestOperation2(); |
2008 TestOperation2(); |
2007 // add some filler files |
2009 // add some filler files |
2008 CreateEntry(_L("\\test\\subdir1\\FillerOne"),EFalse,EChainStd,512); |
2010 CreateEntry(_L("\\test\\subdir1\\FillerOne"),EFalse,EChainStd,512); |
2009 CreateEntry(_L("\\test\\subdir1\\FillerTwo"),EFalse,EChainStd,1024);} |
2011 CreateEntry(_L("\\test\\subdir1\\FillerTwo"),EFalse,EChainStd,1024);} |
2047 DeleteEntry(_L("\\test\\subdir1\\FillerFour"),EFalse,EChainStd); |
2049 DeleteEntry(_L("\\test\\subdir1\\FillerFour"),EFalse,EChainStd); |
2048 DeleteEntry(_L("\\ANother\\FillerThree"),EFalse,EChainStd); |
2050 DeleteEntry(_L("\\ANother\\FillerThree"),EFalse,EChainStd); |
2049 DeleteEntry(_L("\\test\\subdir1\\FillerTwo"),EFalse,EChainStd); |
2051 DeleteEntry(_L("\\test\\subdir1\\FillerTwo"),EFalse,EChainStd); |
2050 DeleteEntry(_L("\\test\\subdir1\\FillerOne"),EFalse,EChainStd); |
2052 DeleteEntry(_L("\\test\\subdir1\\FillerOne"),EFalse,EChainStd); |
2051 r=TheFs.RmDir(_L("\\test\\subdir2\\")); |
2053 r=TheFs.RmDir(_L("\\test\\subdir2\\")); |
2052 test(r==KErrNone); |
2054 test_KErrNone(r); |
2053 r=TheFs.RmDir(_L("\\test\\subdir1\\")); |
2055 r=TheFs.RmDir(_L("\\test\\subdir1\\")); |
2054 test(r==KErrNone); |
2056 test_KErrNone(r); |
2055 r=TheFs.RmDir(_L("\\ANother\\")); |
2057 r=TheFs.RmDir(_L("\\ANother\\")); |
2056 test(r==KErrNone); |
2058 test_KErrNone(r); |
2057 r=TheFs.RmDir(_L("\\test\\")); |
2059 r=TheFs.RmDir(_L("\\test\\")); |
2058 test(r==KErrNone); |
2060 test_KErrNone(r); |
2059 r=TheFs.RmDir(_L("\\fat\\")); |
2061 r=TheFs.RmDir(_L("\\fat\\")); |
2060 test(r==KErrNone); |
2062 test_KErrNone(r); |
2061 if (gFatBuf) |
2063 if (gFatBuf) |
2062 { |
2064 { |
2063 delete gFatBuf; |
2065 delete gFatBuf; |
2064 gFatBuf = NULL; |
2066 gFatBuf = NULL; |
2065 } |
2067 } |