| author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> | 
| Sat, 20 Feb 2010 00:10:51 +0200 | |
| branch | RCL_3 | 
| changeset 19 | 4a8fed1c0ef6 | 
| parent 0 | a41df078684a | 
| child 43 | c1f20ce4abcf | 
| permissions | -rw-r--r-- | 
| 0 | 1 | // Copyright (c) 1996-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 | // | |
| 15 | ||
| 16 | #include <f32file.h> | |
| 17 | #include <e32test.h> | |
| 18 | #include <e32math.h> | |
| 19 | #include <e32hal.h> | |
| 20 | #include "t_server.h" | |
| 21 | #include "t_chlffs.h" | |
| 22 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 23 | #include "f32_test_utils.h" | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 24 | using namespace F32_Test_Utils; | 
| 0 | 25 | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 26 | RTest test(_L("B_GEN"));
 | 
| 0 | 27 | // | 
| 28 | // File test - general test of local filing system routines | |
| 29 | // (finishes with formating current device). | |
| 30 | // Modified from BB's epoc test code | |
| 31 | ||
| 32 | #define MINIMUM_DATE (315532800L) | |
| 33 | #define DateTests 10 | |
| 34 | ||
| 35 | // GLREF_D P_DEVICE p_file; | |
| 36 | // GLREF_D P_DEVICE p_wind,p_screen,p_cons; | |
| 37 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 38 | TBuf<0x100> gNameBuf; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 39 | TBuf<0x100> gNameOut; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 40 | RFile gFile; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 41 | RFile gFileErr; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 42 | RFile gFile2; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 43 | RDir gDir; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 44 | RFormat gFormat; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 45 | TFileName fBuf; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 46 | TInt gDriveNum = -1; | 
| 0 | 47 | |
| 48 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 49 | static TBuf8<0x4000> gDataBuf; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 50 | static TEntry gFileEntry; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 51 | static TVolumeInfo volInfo; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 52 | static TFileName pathBuf; | 
| 0 | 53 | |
| 54 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 55 | const TInt NameErr=KErrBadName; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 56 | const TInt DirErr=KErrPathNotFound; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 57 | const TInt AccessErr=KErrAccessDenied; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 58 | const TInt LockedErr=KErrInUse; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 59 | const TInt ExistsErr=KErrAlreadyExists; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 60 | const TInt NotExistsErr=KErrNotFound; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 61 | const TInt EofErr=KErrEof; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 62 | const TInt DeviceErr=KErrNotReady; | 
| 0 | 63 | //LOCAL_D TInt NoFileSystemErr=KErrNotReady; | 
| 64 | //LOCAL_D TInt NotSupportedErr=KErrNotSupported; | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 65 | const TInt ReadOnlyErr=KErrAccessDenied; | 
| 0 | 66 | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 67 | const TInt P_FASTREAM=EFileStream; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 68 | const TInt P_FAEXEC=0; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 69 | const TInt P_FAMOD=KEntryAttArchive; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 70 | const TInt P_FAREAD=KEntryAttReadOnly; | 
| 0 | 71 | //LOCAL_D TInt P_FAHIDDEN=KEntryAttHidden; | 
| 72 | //LOCAL_D TInt P_FASYSTEM=KEntryAttSystem; | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 73 | //static TInt P_FAVOLUME=KEntryAttVolume; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 74 | const TInt P_FADIR=KEntryAttDir; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 75 | const TInt P_FRANDOM=0; | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 76 | const TInt P_FABS=ESeekStart; | 
| 0 | 77 | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 78 | const TInt P_FUPDATE=EFileWrite; | 
| 0 | 79 | |
| 80 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 81 | static void doError(const TDesC &aMess, TInt anErr, TInt line) | 
| 0 | 82 | 	{ 
 | 
| 83 |     test.Printf(_L("%S failed at line %d. Error %d\n"),&aMess, line, anErr);
 | |
| 84 | test(0); | |
| 85 | } | |
| 86 | #define Error(aMess, anErr) doError(aMess, anErr, __LINE__) | |
| 87 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 88 | static void doError2(const TDesC &aMess, TInt anErr, TInt line, TInt callLine) | 
| 0 | 89 | 	{ 
 | 
| 90 |     test.Printf(_L("%S failed at line %d. Error %d. Called from line %d\n"),&aMess, line, anErr, callLine); \
 | |
| 91 | test(0); | |
| 92 | } | |
| 93 | #define Error2(aMess, anErr, line) doError2(aMess, anErr, __LINE__, line) | |
| 94 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 95 | static void testWrite(const TDesC& aName,TInt aLen,TInt32 aSize,TBool aShouldChange) | 
| 0 | 96 | // | 
| 97 | // Write to a file | |
| 98 | // | |
| 99 |     {
 | |
| 100 | ||
| 101 | TTime saveTime; | |
| 102 | TInt c; | |
| 103 | 	test.Printf(_L("Write %u bytes %u\n"),aLen,aShouldChange);
 | |
| 104 | if ((c=TheFs.Entry(aName,gFileEntry))!=KErrNone) | |
| 105 | 		Error(_L("File info 600"),c);
 | |
| 106 | saveTime=gFileEntry.iModified; | |
| 107 | User::After(3000000L); // 30 tenths of a sec = 30 00000 micro seconds | |
| 108 | if ((c=gFile.Open(TheFs,aName,EFileWrite))!=KErrNone) | |
| 109 | 		Error(_L("Open 50"),c);
 | |
| 110 | if ((c=gFile.Write(gDataBuf,aLen))!=KErrNone) | |
| 111 | 		Error(_L("Write"),c);
 | |
| 112 | gFile.Close(); | |
| 113 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 114 | 		Error(_L("File info 601"),c);
 | |
| 115 | if ((saveTime!=gFileEntry.iModified)!=aShouldChange) | |
| 116 | 		Error(_L("Change flag check 6"),0);
 | |
| 117 | if (gFileEntry.iSize!=aSize) | |
| 118 | 		Error(_L("Size check 602"),0);
 | |
| 119 | } | |
| 120 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 121 | static void testSetEof(const TDesC& aName,TUint32 aPos,TBool aShouldChange) | 
| 0 | 122 | // | 
| 123 | // Set the end of a file | |
| 124 | // | |
| 125 | 	{
 | |
| 126 | ||
| 127 | TTime saveTime; | |
| 128 | TInt c; | |
| 129 | 	test.Printf(_L("Set EOF to %u %u\n"),aPos,aShouldChange);
 | |
| 130 | if ((c=TheFs.Entry(aName,gFileEntry))!=KErrNone) | |
| 131 | 		Error(_L("File info 500"),c);
 | |
| 132 | saveTime=gFileEntry.iModified; | |
| 133 | User::After(3000000L); | |
| 134 | if ((c=gFile.Open(TheFs,aName,EFileWrite))!=KErrNone) | |
| 135 | 		Error(_L("Open 50"),c);
 | |
| 136 | if ((c=gFile.SetSize(aPos))!=KErrNone) | |
| 137 | 		Error(_L("Set EOF 50"),c);
 | |
| 138 | gFile.Close(); | |
| 139 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 140 | 		Error(_L("File info 501"),c);
 | |
| 141 | if ((saveTime!=gFileEntry.iModified)!=aShouldChange) | |
| 142 | 		Error(_L("Change flag check 5"),0);
 | |
| 143 | } | |
| 144 | ||
| 145 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 146 | static void testDir(const TDesC& aDirName) | 
| 0 | 147 | // | 
| 148 | // Create a directory | |
| 149 | // | |
| 150 |     {
 | |
| 151 | ||
| 152 | TInt c; | |
| 153 | 	test.Printf(_L("Test dir %S\n"),&aDirName);
 | |
| 154 | c=gDir.Open(TheFs,aDirName,KEntryAttNormal); | |
| 155 | ||
| 156 | if (c!=KErrNone) | |
| 157 | 		Error(_L("Directory open 1000"),c);
 | |
| 158 | ||
| 159 | gDir.Close(); | |
| 160 | ||
| 161 | TChar drive(aDirName[0]); | |
| 162 | TInt driveNo; | |
| 163 | c=RFs::CharToDrive(drive,driveNo); | |
| 164 | test(c==KErrNone); | |
| 165 | if ((c=TheFs.Volume(volInfo,driveNo))!=KErrNone) | |
| 166 | 		Error(_L("Device info 1000"),c);
 | |
| 167 | } | |
| 168 | ||
| 169 | ||
| 170 | /* | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 171 | static void testNodeInfo(const TDesC& aName,TInt type,TInt anErr) | 
| 0 | 172 | // | 
| 173 | // Test p_ninfo. | |
| 174 | // | |
| 175 |     {
 | |
| 176 | ||
| 177 | // TInt c; | |
| 178 | 	test.Printf(_L("Node info: %S\n"),&aName);
 | |
| 179 | // if ((c=p_ninfo(aDirName,&nInfo))!=anErr) | |
| 180 | //		Error(_L("Device info"),c);
 | |
| 181 | if (anErr==0) | |
| 182 | 		{
 | |
| 183 | // if (!(nInfo.version==2 || nInfo.version==3)) | |
| 184 | //			Error(_L("Node version check"),0);
 | |
| 185 | // if (nInfo.type!=type) | |
| 186 | //			Error(_L("Node type check"),0);
 | |
| 187 | } | |
| 188 | } | |
| 189 | */ | |
| 190 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 191 | static void testDeviceInfo(const TDesC& aDeviceName,TInt anErr) | 
| 0 | 192 | // | 
| 193 | // Test p_dinfo. | |
| 194 | // | |
| 195 |     {
 | |
| 196 | ||
| 197 | TInt c; | |
| 198 | 	test.Printf(_L("Device info: %S\n"),&aDeviceName);
 | |
| 199 | TInt drive=KDefaultDrive; | |
| 200 | if (aDeviceName.Length()) | |
| 201 | 		{
 | |
| 202 | c=RFs::CharToDrive(aDeviceName[0],drive); | |
| 203 | test(c==KErrNone); | |
| 204 | } | |
| 205 | if ((c=TheFs.Volume(volInfo,drive))!=anErr) | |
| 206 | 		Error(_L("Device info"),c);
 | |
| 207 | if (anErr==0) | |
| 208 | 		{
 | |
| 209 | // if (!(volInfo.version==2 || volInfo.version==3)) ********* version is not a member of TVolumeInfo | |
| 210 | //			Error(_L("Device version check"),0);
 | |
| 211 | if (volInfo.iFree>volInfo.iSize) | |
| 212 | 			Error(_L("Free greater than size check"),0);
 | |
| 213 | } | |
| 214 | } | |
| 215 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 216 | static void testFileInfo(const TDesC& aFileName,TInt anErr) | 
| 0 | 217 | // | 
| 218 | // Test entry info | |
| 219 | // | |
| 220 | 	{
 | |
| 221 | ||
| 222 | TInt c; | |
| 223 | 	test.Printf(_L("File info: %S\n"),&aFileName);
 | |
| 224 | if ((c=TheFs.Entry(aFileName,gFileEntry))!=anErr) | |
| 225 | 		Error(_L("Get info 100"),c);
 | |
| 226 | if (anErr==0) | |
| 227 | 		{
 | |
| 228 | if (aFileName.Length()>=2 && aFileName[0]=='Z' && aFileName[1]==':') | |
| 229 | 			{
 | |
| 230 | if ((gFileEntry.iAtt&(P_FAREAD|P_FAEXEC|P_FASTREAM)) != (TUint32)(P_FAREAD|P_FAEXEC|P_FASTREAM) && gFileEntry.iAtt!=KEntryAttDir) | |
| 231 | 				Error(_L("Info status check Z:\\"),0);
 | |
| 232 | } | |
| 233 | else | |
| 234 | 			{
 | |
| 235 | if (gFileEntry.iAtt&KEntryAttDir) | |
| 236 | return; // Found directory entry | |
| 237 | if (gFileEntry.iAtt!=(TUint32)(P_FASTREAM|P_FAMOD)) | |
| 238 | 				Error(_L("Info status check"),0);
 | |
| 239 | if (gFileEntry.iSize!=0L) | |
| 240 | 				Error(_L("Info size check"),0);
 | |
| 241 | } | |
| 242 | } | |
| 243 | } | |
| 244 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 245 | static void testRenameFromRoot(const TDesC& aRName,const TDesC& aDName) | 
| 0 | 246 | // | 
| 247 | // | |
| 248 | // | |
| 249 | 	{
 | |
| 250 | ||
| 251 | TInt c; | |
| 252 | if ((c=TheFs.Rename(aRName,aDName))!=KErrNone) | |
| 253 | 		Error(_L("Rename 92"),c);
 | |
| 254 | if ((c=gFile.Open(TheFs,aDName,EFileStream))!=KErrNone) | |
| 255 | 		Error(_L("Open 92"),c);
 | |
| 256 | gFile.Close(); | |
| 257 | if ((c=TheFs.Delete(aRName))!=NotExistsErr) | |
| 258 | 		Error(_L("Delete 92"),c);
 | |
| 259 | } | |
| 260 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 261 | static void testRenameToRoot(const TDesC& pName,const TDesC& rName) | 
| 0 | 262 | // | 
| 263 | // | |
| 264 | // | |
| 265 | 	{
 | |
| 266 | ||
| 267 | TInt c; | |
| 268 | if ((c=gFile.Replace(TheFs,pName,EFileStream))!=KErrNone) | |
| 269 | 		Error(_L("Create 91"),c);
 | |
| 270 | gFile.Close(); | |
| 271 | if ((c=TheFs.Rename(pName,rName))!=KErrNone) | |
| 272 | 		Error(_L("Rename 91"),c);
 | |
| 273 | if ((c=gFile.Open(TheFs,rName,EFileStream))!=KErrNone) | |
| 274 | 		Error(_L("Open 91"),c);
 | |
| 275 | gFile.Close(); | |
| 276 | if ((c=TheFs.Delete(pName))!=NotExistsErr) | |
| 277 | 		Error(_L("Delete 91"),c);
 | |
| 278 | } | |
| 279 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 280 | static void verifyTestPat1() | 
| 0 | 281 | // | 
| 282 | // | |
| 283 | // | |
| 284 | 	{
 | |
| 285 | ||
| 286 | TInt i; | |
| 287 | TInt c; | |
| 288 | 	if ((c=gFile.Open(TheFs,_L("\\TESTPAT1.DAT"),EFileStream))!=KErrNone)
 | |
| 289 | 		Error(_L("Create testpat1"),c);
 | |
| 290 | gDataBuf.SetLength(0); | |
| 291 | if ((c=gFile.Read(gDataBuf,512))!=KErrNone || gDataBuf.Length()!=512) | |
| 292 | 		Error(_L("Read 90"),c);
 | |
| 293 | gFile.Close(); | |
| 294 | for (i=0;i<512;i++) | |
| 295 | 		{
 | |
| 296 | if (gDataBuf[i]!='X') | |
| 297 | 			Error(_L("Data check"),0);
 | |
| 298 | } | |
| 299 | } | |
| 300 | ||
| 301 | void TestINC103141() // PDEF104017 | |
| 302 | 	{
 | |
| 303 | 	test.Printf(_L("Test INC103141\n"));
 | |
| 304 | _LIT(KDir1, "\\INC103141\\TEST"); | |
| 305 | _LIT(KDir2, "\\INC103141\\test"); | |
| 306 | TBuf<32> dirname; | |
| 307 | dirname.Copy(KDir1); | |
| 308 | dirname.Append(KPathDelimiter); | |
| 309 | MakeDir(dirname); | |
| 310 | TInt err = TheFs.Rename(KDir1, KDir2); | |
| 311 | test(err == KErrNone); | |
| 312 | err = TheFs.RmDir(dirname); | |
| 313 | test(err == KErrNone); | |
| 314 | err = TheFs.RmDir(KDir1); | |
| 315 | test(err == KErrNone); | |
| 316 | } | |
| 317 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 318 | static void testRename() | 
| 0 | 319 | // | 
| 320 | // Test TheFs.Rename function. | |
| 321 | // | |
| 322 | 	{
 | |
| 323 | ||
| 324 | TBuf<32> xName; | |
| 325 | TInt i; | |
| 326 | TInt c; | |
| 327 | 	test.Printf(_L("Test TheFs.Rename\n"));
 | |
| 328 | ||
| 329 | 	test.Printf(_L("Test rename into root\n"));
 | |
| 330 | 	if ((c=gFile.Replace(TheFs,_L("\\TESTPAT1.DAT"),EFileStream|P_FUPDATE))!=KErrNone)
 | |
| 331 | 		Error(_L("Create testpat1"),c);
 | |
| 332 | 	gDataBuf.Fill('X',512);
 | |
| 333 | if ((c=gFile.Write(gDataBuf,512))!=KErrNone) | |
| 334 | 		Error(_L("Write 90"),c);
 | |
| 335 | gFile.Close(); | |
| 336 | 	if ((c=TheFs.MkDir(_L("\\DIRX\\")))!=KErrNone)
 | |
| 337 | 		Error(_L("Make dir 90"),c);
 | |
| 338 | for (i=0;i<32;i++) | |
| 339 | 		{
 | |
| 340 | 		xName.Format(_L("\\DIRX\\FILEX%u"),i);
 | |
| 341 | TPtrC rootName(xName.Ptr()+5,xName.Length()-5); | |
| 342 | testRenameToRoot(xName,rootName); | |
| 343 | verifyTestPat1(); | |
| 344 | } | |
| 345 | ||
| 346 | 	test.Printf(_L("Test rename from root\n"));
 | |
| 347 | for (i=0;i<32;i++) | |
| 348 | 		{
 | |
| 349 | 		xName.Format(_L("\\DIRX\\FILEX%u"),i);
 | |
| 350 | TPtrC rootName(xName.Ptr()+5,xName.Length()-5); | |
| 351 | testRenameFromRoot(rootName,xName); | |
| 352 | verifyTestPat1(); | |
| 353 | } | |
| 354 | for (i=0;i<32;i++) | |
| 355 | 		{
 | |
| 356 | 		xName.Format(_L("\\DIRX\\FILEX%u"),i);
 | |
| 357 | if ((c=TheFs.Delete(xName))!=KErrNone) | |
| 358 | 			Error(_L("Delete 93"),c);
 | |
| 359 | } | |
| 360 | 	if ((c=TheFs.RmDir(_L("\\DIRX\\")))!=KErrNone)
 | |
| 361 | 		Error(_L("Delete DIRX"),c);
 | |
| 362 | verifyTestPat1(); | |
| 363 | 	if ((c=TheFs.Delete(_L("\\TESTPAT1.DAT")))!=KErrNone)
 | |
| 364 | 		Error(_L("Delete 80"),c);
 | |
| 365 | ||
| 366 | 	test.Printf(_L("Test rename with wild cards\n"));
 | |
| 367 | 	if ((c=TheFs.Rename(_L("*.*"),_L("FRED")))!=NameErr)
 | |
| 368 | 		Error(_L("Rename 100"),c);
 | |
| 369 | 	if ((c=TheFs.Rename(_L("?"),_L("FRED")))!=NameErr)
 | |
| 370 | 		Error(_L("Rename 101"),c);
 | |
| 371 | 	if ((c=TheFs.Rename(_L(""),_L("FRED")))!=KErrBadName) // NameErr)
 | |
| 372 | 		Error(_L("Rename 101.11"),c);
 | |
| 373 | 	if ((c=TheFs.Rename(_L("."),_L("FRED")))!=NameErr)
 | |
| 374 | 		Error(_L("Rename 101.12"),c);
 | |
| 375 | 	if ((c=TheFs.Rename(_L("NOEXIST"),_L("*")))!=NameErr)
 | |
| 376 | 		Error(_L("Rename 101.1"),c);
 | |
| 377 | 	if ((c=gFile.Create(TheFs,_L("FILE1"),EFileStream))!=KErrNone)
 | |
| 378 | 		Error(_L("Create 101.2"),c);
 | |
| 379 | gFile.Close(); | |
| 380 | 	if ((c=TheFs.Rename(_L("FILE1"),_L("AAA?")))!=NameErr)
 | |
| 381 | 		Error(_L("Rename 101.3"),c);
 | |
| 382 | 	if ((c=TheFs.Rename(_L("FILE1"),_L("")))!=KErrBadName) // NameErr)
 | |
| 383 | 		Error(_L("Rename 101.41"),c);
 | |
| 384 | 	if ((c=TheFs.Rename(_L(""),_L("")))!=KErrBadName) // NameErr)
 | |
| 385 | 		Error(_L("Rename 101.42"),c);
 | |
| 386 | 	if ((c=TheFs.Delete(_L("FILE1")))!=KErrNone)
 | |
| 387 | 		Error(_L("Delete 101.5"),c);
 | |
| 388 | 	if ((c=TheFs.Rename(_L("\\"),_L("FRED")))!=NameErr)
 | |
| 389 | 		Error(_L("Rename 101.6"),c);
 | |
| 390 | ||
| 391 | 	test.Printf(_L("Test rename of directories\n"));
 | |
| 392 | 	if ((c=TheFs.MkDir(_L("\\DIR1\\")))!=KErrNone)
 | |
| 393 | 		Error(_L("Make dir 102"),c);
 | |
| 394 | 	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\A2345678.123")))!=KErrNone)
 | |
| 395 | 		Error(_L("Rename 103.1"),c);
 | |
| 396 | 	if ((c=TheFs.Rename(_L("\\A2345678.123"),_L("\\DIR2")))!=KErrNone)
 | |
| 397 | 		Error(_L("Rename 103.2"),c);
 | |
| 398 | 	if ((c=TheFs.Rename(_L("\\DIR2"),_L("\\A234567.1234")))!=KErrNone) // ****** NameErr) Long filenames are supported
 | |
| 399 | 		Error(_L("Rename 103.3"),c);
 | |
| 400 | 	if ((c=TheFs.Rename(_L("\\A234567.1234"),_L("\\DIR2")))!=KErrNone)
 | |
| 401 | 		Error(_L("Rename 103.3"),c);
 | |
| 402 | 	if ((c=TheFs.MkDir(_L("\\DIR1\\")))!=KErrNone)
 | |
| 403 | 		Error(_L("Make dir 104"),c);
 | |
| 404 | ||
| 405 | 	test.Printf(_L("Test rename of open files\n"));
 | |
| 406 | 	if ((c=gFile.Create(TheFs,_L("\\DIR1\\FILE1"),EFileStreamText))!=KErrNone)
 | |
| 407 | 		Error(_L("Create 105"),c);
 | |
| 408 | 	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE1")))!=LockedErr)
 | |
| 409 | 		Error(_L("Rename 106"),c);
 | |
| 410 | 	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR2\\FILE1")))!=LockedErr)
 | |
| 411 | 		Error(_L("Rename 106.1"),c);
 | |
| 412 | 	if ((c=gFile2.Open(TheFs,_L("\\DIR2\\FILE1"),EFileStream))!=NotExistsErr)
 | |
| 413 | 		Error(_L("Create 105"),c);
 | |
| 414 | gFile.Close(); | |
| 415 | ||
| 416 | 	test.Printf(_L("Test rename to same name\n"));
 | |
| 417 | 	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE1")))!=KErrNone) // !=ExistsErr)
 | |
| 418 | 		Error(_L("Rename 105.1"),c);
 | |
| 419 | 	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\DIR1")))!=KErrNone) // !=ExistsErr)
 | |
| 420 | 		Error(_L("Rename 105.2"),c);
 | |
| 421 | ||
| 422 | 	test.Printf(_L("Test rename of read-only files\n"));     // IS ALLOWED //
 | |
| 423 | 	if ((c=TheFs.SetAtt(_L("\\DIR1\\FILE1"),KEntryAttReadOnly,0))!=KErrNone)
 | |
| 424 | 		Error(_L("Att 106"),c);
 | |
| 425 | 	if ((c=TheFs.Entry(_L("\\DIR1\\FILE1"),gFileEntry))!=KErrNone)
 | |
| 426 | 		Error(_L("File info 106.1"),c);
 | |
| 427 | 	test.Printf(_L("STATUS=%04x\n"),gFileEntry.iAtt);
 | |
| 428 | if (gFileEntry.iAtt!=(TUint32)(P_FAREAD|P_FASTREAM|P_FAMOD)) | |
| 429 | 		Error(_L("Status check 106.2"),0);
 | |
| 430 | 	if ((c=TheFs.Entry(_L("\\DIR1"),gFileEntry))!=KErrNone)
 | |
| 431 | 		Error(_L("File info 106.3"),c);
 | |
| 432 | 	test.Printf(_L("STATUS=%04x\n"),gFileEntry.iAtt);
 | |
| 433 | if (gFileEntry.iAtt!=(TUint32)(P_FASTREAM|P_FADIR)) | |
| 434 | 		Error(_L("Status check 106.4"),0);
 | |
| 435 | ||
| 436 | 	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE1")))!=KErrNone) // !=ExistsErr)
 | |
| 437 | 		Error(_L("Rename 107"),c);
 | |
| 438 | 	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE2")))!=KErrNone)
 | |
| 439 | 		Error(_L("Rename 108"),c);
 | |
| 440 | 	if ((c=TheFs.Rename(_L("\\DIR1\\FILE2"),_L("\\DIR2\\FILE2")))!=KErrNone)
 | |
| 441 | 		Error(_L("Rename 109"),c);
 | |
| 442 | 	if ((c=gFile2.Open(TheFs,_L("\\DIR2\\FILE2"),EFileStream))!=KErrNone)
 | |
| 443 | 		Error(_L("Create 110"),c);
 | |
| 444 | gFile2.Close(); | |
| 445 | 	if ((c=TheFs.Rename(_L("\\DIR2\\FILE2"),_L("\\DIR1\\FILE1")))!=KErrNone)
 | |
| 446 | 		Error(_L("Rename 110.1"),c);
 | |
| 447 | 	if ((c=TheFs.SetAtt(_L("\\DIR1\\FILE1"),0,KEntryAttReadOnly))!=KErrNone)
 | |
| 448 | 		Error(_L("Att 111"),c);
 | |
| 449 | ||
| 450 | 	test.Printf(_L("Test rename of files across directories\n"));
 | |
| 451 | 	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR2\\FILE1")))!=KErrNone)
 | |
| 452 | 		Error(_L("Rename 112"),c);
 | |
| 453 | 	if ((c=gFile.Open(TheFs,_L("\\DIR2\\FILE1"),EFileStream))!=KErrNone)
 | |
| 454 | 		Error(_L("Exist 113"),c);
 | |
| 455 | gFile.Close(); | |
| 456 | ||
| 457 | 	test.Printf(_L("Test rename of directories across directories\n"));
 | |
| 458 | 	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\DIR2\\DIR1")))!=KErrNone) // ******** AccessErr)
 | |
| 459 | 		Error(_L("Rename 114"),c);
 | |
| 460 | 	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\")))!=NameErr)
 | |
| 461 | 		Error(_L("Rename 114.1"),c);
 | |
| 462 | ||
| 463 | 	if ((c=TheFs.Delete(_L("\\DIR2\\FILE1")))!=KErrNone)
 | |
| 464 | 		Error(_L("Delete 115"),c);
 | |
| 465 | 	if ((c=TheFs.RmDir(_L("\\DIR2\\DIR1\\")))!=KErrNone)
 | |
| 466 | 		Error(_L("Delete 115"),c);
 | |
| 467 | 	if ((c=TheFs.RmDir(_L("\\DIR2\\")))!=KErrNone)
 | |
| 468 | 		Error(_L("Delete 115"),c);
 | |
| 469 | ||
| 470 | TestINC103141(); // PDEF104017 | |
| 471 | } | |
| 472 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 473 | static void testDelete() | 
| 0 | 474 | // | 
| 475 | // Test RFs::Delete function. | |
| 476 | // | |
| 477 | 	{
 | |
| 478 | ||
| 479 | TInt c; | |
| 480 | 	test.Printf(_L("Test RFs::Delete\n"));
 | |
| 481 | 	test.Printf(_L("Test delete non-empty directories\n"));
 | |
| 482 | 	if ((c=TheFs.MkDir(_L("\\TESTDIR\\")))!=KErrNone)
 | |
| 483 | 		Error(_L("Make dir 500"),c);
 | |
| 484 | 	if ((c=gFile.Create(TheFs,_L("\\TESTDIR\\NAME.EXT"),EFileStream))!=KErrNone)
 | |
| 485 | 		Error(_L("Create"),c);
 | |
| 486 | 	if ((c=TheFs.Delete(_L("\\TESTDIR\\")))!=KErrBadName) // ******* AccessErr)
 | |
| 487 | 		Error(_L("Delete 501"),c);
 | |
| 488 | ||
| 489 | 	test.Printf(_L("Test delete open file\n"));
 | |
| 490 | 	if ((c=TheFs.Delete(_L("\\TESTDIR\\NAME.EXT")))!=LockedErr)
 | |
| 491 | 		Error(_L("Delete 502"),c);
 | |
| 492 | gFile.Close(); | |
| 493 | 	if ((c=TheFs.Delete(_L("\\TESTDIR\\NAME.EXT")))!=KErrNone)
 | |
| 494 | 		Error(_L("Delete 503"),c);
 | |
| 495 | 	if ((c=TheFs.RmDir(_L("\\TESTDIR\\")))!=KErrNone)
 | |
| 496 | 		Error(_L("Delete 504"),c);
 | |
| 497 | } | |
| 498 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 499 | static void testUnique(TUint fileFormat) | 
| 0 | 500 | // | 
| 501 | // Test RFile::Temp | |
| 502 | // | |
| 503 | 	{
 | |
| 504 | ||
| 505 | TInt pos; | |
| 506 | TInt c; | |
| 507 | 	test.Printf(_L("Test RFile::Temp\n"));
 | |
| 508 | gDataBuf.SetLength(1); | |
| 509 | 	if ((c=gFile.Temp(TheFs,_L(""),gNameBuf,fileFormat))!=KErrNone)
 | |
| 510 | 		Error(_L("Directory open 2000"),c);
 | |
| 511 | if ((c=gFile.Write(gDataBuf,0))!=KErrNone) | |
| 512 | 		Error(_L("Write 2000"),c);
 | |
| 513 | if ((c=gFile.Write(gDataBuf,1))!=KErrNone) | |
| 514 | 		Error(_L("Write 2000"),c);
 | |
| 515 | pos=0L; | |
| 516 | if ((c=gFile.Seek(ESeekStart,pos))!=KErrNone) // !=E_FILE_INV) Temp file is random access | |
| 517 | 		Error(_L("Seek 2000"),c);
 | |
| 518 | gFile.Close(); | |
| 519 | if ((c=TheFs.Delete(gNameBuf))!=KErrNone) | |
| 520 | 		Error(_L("Delete"),c);
 | |
| 521 | } | |
| 522 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 523 | static void testFileName(const TDesC& aFileName,TInt res) | 
| 0 | 524 | // | 
| 525 | // | |
| 526 | // | |
| 527 | 	{
 | |
| 528 | ||
| 529 | TInt c; | |
| 530 | if ((c=aFileName.Length())>20) | |
| 531 | 		test.Printf(_L("%u char name\n"),c);
 | |
| 532 | else | |
| 533 | 		test.Printf(_L("\"%S\"\n"),&aFileName);
 | |
| 534 | if ((c=gFile.Create(TheFs,aFileName,EFileStream))!=res) | |
| 535 | 		Error(_L("Create 200"),c);
 | |
| 536 | if (res==KErrNone) | |
| 537 | 		{
 | |
| 538 | gFile.Close(); | |
| 539 | if ((c=gFile.Open(TheFs,aFileName,EFileStream))!=KErrNone) | |
| 540 | 			Error(_L("Open 200"),c);
 | |
| 541 | gFile.Close(); | |
| 542 | if ((c=TheFs.Delete(aFileName))!=KErrNone) | |
| 543 | 			Error(_L("Delete 200"),c);
 | |
| 544 | } | |
| 545 | else | |
| 546 | 		{
 | |
| 547 | if ((c=gFile.Open(TheFs,aFileName,EFileStream))!=res) // test eg *.* // | |
| 548 | 			Error(_L("Open 201"),c);
 | |
| 549 | if ((c=gFile.Replace(TheFs,aFileName,EFileStream))!=res) | |
| 550 | 			Error(_L("Replace 202"),c);
 | |
| 551 | } | |
| 552 | } | |
| 553 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 554 | static void testFileName(const TDesC8& aFileName,TInt res) | 
| 0 | 555 | // | 
| 556 | // Defined to cope with all the instances of testFileName(gDataBuf,...) | |
| 557 | // | |
| 558 | 	{
 | |
| 559 | TPtrC gDataBuf16((TText*)aFileName.Ptr(),gDataBuf.Size()/sizeof(TText8)); | |
| 560 | testFileName(gDataBuf16,res); | |
| 561 | } | |
| 562 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 563 | static void testVolumeName(const TDesC& aVolumeName,TInt aResultExpected) | 
| 0 | 564 | // | 
| 565 | // | |
| 566 | // | |
| 567 | 	{
 | |
| 568 | ||
| 569 | TInt result; | |
| 570 | 	test.Printf(_L("\"%S\"\n"),&aVolumeName);
 | |
| 571 | TInt drive=KDefaultDrive; | |
| 572 | if (aVolumeName.Length()>=2 && aVolumeName[0]=='Z' && aVolumeName[1]==':') | |
| 573 | 		{
 | |
| 574 | drive=25; | |
| 575 | TPtr volName((TText*)&aVolumeName[2],(aVolumeName.Length()-2),(aVolumeName.Length()-2)); | |
| 576 | result=TheFs.SetVolumeLabel(volName,drive); | |
| 577 | } | |
| 578 | else | |
| 579 | result=TheFs.SetVolumeLabel(aVolumeName,drive); | |
| 580 | ||
| 581 | if (result==KErrGeneral) | |
| 582 | 		{
 | |
| 583 | 		test.Printf(_L("KErrGeneral: Cannot set volume label on a substed drive!\n"));
 | |
| 584 | return; | |
| 585 | } | |
| 586 | if (result!=aResultExpected) | |
| 587 | 		Error(_L("Set volume name returned"),result);
 | |
| 588 | ||
| 589 | /* if (aResultExpected==FALSE) | |
| 590 | 		{
 | |
| 591 | if ((result=TheFs.Volume(volInfo))!=KErrNone) | |
| 592 | 			Error(_L("Volume Info failed"),result);
 | |
| 593 | TPtrC vol(aVolumeName); | |
| 594 | if (vol!=volInfo.iName) | |
| 595 | 			Error(_L("Check volume name failed"),0);
 | |
| 596 | } | |
| 597 | */ | |
| 598 | } | |
| 599 | ||
| 600 | #define testMakeDir(aDirName, res) TestMakeDirLine(aDirName, res, __LINE__) | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 601 | static void TestMakeDirLine(const TDesC& aDirName,TInt res, TInt line) | 
| 0 | 602 | // | 
| 603 | // | |
| 604 | // | |
| 605 | 	{
 | |
| 606 | ||
| 607 | TInt c; | |
| 608 | TUint l; | |
| 609 | TFileName buf; | |
| 610 | if ((c=aDirName.Length())>20) | |
| 611 |         test.Printf(_L("%u char name\n"),c);
 | |
| 612 | else | |
| 613 |         test.Printf(_L("\"%S\"\n"),&aDirName);
 | |
| 614 | if ((c=TheFs.MkDirAll(aDirName))!=res) | |
| 615 |         Error2(_L("Make directory 1"),c, line);
 | |
| 616 | if (res==FALSE) | |
| 617 | 		{
 | |
| 618 | TParse parse; | |
| 619 | c=TheFs.Parse(aDirName,parse); | |
| 620 | test(c==KErrNone); | |
| 621 | buf=parse.Path(); | |
| 622 |         buf.Append(_L("*"));
 | |
| 623 | if (buf.Length()<=64) | |
| 624 | 			{
 | |
| 625 |             test.Printf(_L("Open dir...\n"));
 | |
| 626 | if ((c=gDir.Open(TheFs,buf,KEntryAttMaskSupported))!=KErrNone) | |
| 627 |                 Error2(_L("Directory open 1"),c, line);
 | |
| 628 | gDataBuf[0]=0; | |
| 629 | if ((c=gDir.Read(gFileEntry))!=EofErr) | |
| 630 |             	{
 | |
| 631 |                 test.Printf(_L("buf=\"%S\"\n"),&gFileEntry.iName);
 | |
| 632 |                 Error2(_L("Directory read"),c, line);
 | |
| 633 | } | |
| 634 | gDir.Close(); | |
| 635 | } | |
| 636 | buf=aDirName; | |
| 637 | l=buf.Length(); | |
| 638 | FOREVER | |
| 639 | 			{
 | |
| 640 |             test.Printf(_L("Delete \"%S\"\n"),&buf);
 | |
| 641 | if ((c=TheFs.RmDir(buf))!=KErrNone) | |
| 642 |                 Error2(_L("Delete directory"),c, line);
 | |
| 643 | while (--l) | |
| 644 | 				{
 | |
| 645 | if (buf[l]=='\\') | |
| 646 | 					{
 | |
| 647 | buf.SetLength(l); | |
| 648 |                     if (buf.LocateReverse('\\')==0)
 | |
| 649 | return; | |
| 650 | break; | |
| 651 | } | |
| 652 | } | |
| 653 | if (l == 0) | |
| 654 | break; | |
| 655 | } | |
| 656 | } | |
| 657 | } | |
| 658 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 659 | |
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 660 | static void TestMakeDirLine(const TDesC8& aDirName, TInt res, TInt line) | 
| 0 | 661 | // | 
| 662 | // Defined to cope with all the instances of testMakeDir(gDataBuf,...) | |
| 663 | // | |
| 664 | {
 | |
| 665 | ||
| 666 | TPtrC gDataBuf16((TText*)aDirName.Ptr(),gDataBuf.Size()/sizeof(TText8)); | |
| 667 | // Not sizeof(TText16) since gDataBuf is a TBuf*! | |
| 668 | TestMakeDirLine(gDataBuf16, res, line); | |
| 669 | } | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 670 | |
| 0 | 671 | |
| 672 | #ifdef TEST_MEDIA | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 673 | static void testMedia(const TDesC& instructions,TInt anErr) | 
| 0 | 674 | // | 
| 675 | // | |
| 676 | // | |
| 677 | 	{
 | |
| 678 | ||
| 679 | TBuf<0x40> errBuf; | |
| 680 | TInt openErr; | |
| 681 | TInt c; | |
| 682 | // p_errs(&errBuf[0],anErr); | |
| 683 | pathBuf=fBuf; | |
| 684 | pathBuf.SetLength(7); | |
| 685 | 	test.Printf(_L("Test %S\n"),&errBuf);
 | |
| 686 | 	test.Printf(_L("%S %S\n"),&instructions,&pathBuf);
 | |
| 687 | p_getch(); | |
| 688 | openErr=anErr; | |
| 689 | if (anErr==WriteProtectErr) | |
| 690 | openErr=0; | |
| 691 | if ((c=gFile.Open(TheFs,fBuf,P_FDIR))!=openErr) | |
| 692 | 		Error(_L("Directory open 100"),c);
 | |
| 693 | if (openErr==KErrNone) | |
| 694 | 		{
 | |
| 695 | if (c=gFile.Close()) | |
| 696 | 			Error(_L("Close 100"),c);
 | |
| 697 | } | |
| 698 | gNameBuf.SetLength(0); | |
| 699 | if ((c=gFile.Open(TheFs,gNameBuf,P_FUNIQUE|EFileStream))!=anErr) | |
| 700 | 		Error(_L("Create unique 100"),c);
 | |
| 701 | if (anErr==0) | |
| 702 | 		{
 | |
| 703 | if (c=gFile.Close()) | |
| 704 | 			Error(_L("Close 100"),c);
 | |
| 705 | } | |
| 706 | } | |
| 707 | #endif | |
| 708 | ||
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 709 | void CallTestsL() | 
| 0 | 710 |     {
 | 
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 711 | |
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 712 | //-- set up console output | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 713 | F32_Test_Utils::SetConsole(test.Console()); | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 714 | |
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 715 | TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum); | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 716 | test(nRes==KErrNone); | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 717 | |
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 718 | PrintDrvInfo(TheFs, gDriveNum); | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 719 | |
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 720 | //-- quick format the drive, if it isn't the emulator's C: | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 721 | if(!Is_Win32(TheFs, gDriveNum)) | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 722 |     {
 | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 723 | nRes = FormatDrive(TheFs, gDriveNum, ETrue); | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 724 | test(nRes==KErrNone); | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 725 | } | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 726 | |
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 727 | //----------------------------------- | 
| 0 | 728 | TInt c; | 
| 729 | TInt i,count; | |
| 730 | TInt pos; | |
| 731 | TInt64 seed; | |
| 732 | TInt attrib,mask; | |
| 733 | TTime saveTime; | |
| 734 | TInt testSize; | |
| 735 | ||
| 736 | 	CreateTestDirectory(_L("\\F32-TST\\BGEN\\"));
 | |
| 737 | // if (p_date()<MINIMUM_DATE) | |
| 738 | // p_sdate(MINIMUM_DATE); | |
| 739 | ||
| 740 | seed=(TInt64)1732; | |
| 741 | fBuf=gSessionPath; | |
| 742 | pathBuf=fBuf; | |
| 743 | 	pathBuf.Append('*');
 | |
| 744 | testDir(pathBuf); | |
| 745 | //	testDir(_L("Z:")); // Session Path gets added -> KErrPathNotFound
 | |
| 746 | //	testDir(_L("Z:*"));  // Session Path gets added -> KErrPathNotFound
 | |
| 747 | //	testDir(_L("Z:*.*")); // Session Path gets added -> KErrPathNotFound
 | |
| 748 | 	testDir(_L("Z:\\"));
 | |
| 749 | 	testDir(_L("Z:\\*"));
 | |
| 750 | 	testDir(_L("Z:\\*.*"));
 | |
| 751 | ||
| 752 | 	test.Printf(_L("Test names containing '\\'\n"));
 | |
| 753 | 	if ((c=gFile.Create(TheFs,_L("Q\\ZZZ"),EFileWrite))!=NameErr)
 | |
| 754 | 		Error(_L("Create 1"),c);
 | |
| 755 | ||
| 756 | 	test.Printf(_L("Test create in non-exist directory\n"));
 | |
| 757 | 	if ((c=gFile.Create(TheFs,_L("\\Q1DDX\\ZZZ"),EFileWrite))!=DirErr)
 | |
| 758 | 		Error(_L("Create 2"),c);
 | |
| 759 | ||
| 760 | 	test.Printf(_L("Test filenames starting with '.'\n"));
 | |
| 761 | 	if ((c=gFile.Create(TheFs,_L("\\.ZZZ"),EFileWrite))!=KErrNone) // ****** NameErr)
 | |
| 762 | 		Error(_L("Create 3"),c);
 | |
| 763 | gFile.Close(); | |
| 764 | 	if ((c=TheFs.Delete(_L("\\.ZZZ")))!=KErrNone)
 | |
| 765 | 		Error(_L("Delete 3"),c);
 | |
| 766 | ||
| 767 | 	test.Printf(_L("Test filenames starting with 05/E5\n"));
 | |
| 768 | gNameBuf.SetLength(5); | |
| 769 | gNameBuf[0]=0xE5; | |
| 770 | gNameBuf[1]='X'; | |
| 771 | gNameBuf[2]='X'; | |
| 772 | gNameBuf[3]='X'; | |
| 773 | gNameBuf[4]=0x00; | |
| 774 | gNameBuf.SetLength(4); | |
| 775 | if ((c=gFile.Replace(TheFs,gNameBuf,EFileWrite))!=KErrNone) | |
| 776 | 		Error(_L("Replace 4"),c);
 | |
| 777 | gFile.Close(); | |
| 778 | if ((c=gFile.Open(TheFs,gNameBuf,EFileRead))!=KErrNone) | |
| 779 | 		Error(_L("Open 4"),c);
 | |
| 780 | gFile.Close(); | |
| 781 | ||
| 782 | // *************** Silly filename stuff rightly disallowed by NT | |
| 783 | // gNameBuf.SetLength(5); | |
| 784 | // gNameBuf[0]=0x05; | |
| 785 | // gNameBuf[1]='Y'; | |
| 786 | // gNameBuf[2]='Y'; | |
| 787 | // gNameBuf[3]='Y'; | |
| 788 | // gNameBuf[4]=0x00; // Zero terminator gets lost by VFAT | |
| 789 | // if ((c=gFile.Replace(TheFs,gNameBuf,EFileWrite))!=KErrNone) | |
| 790 | //		Error(_L("Create 5"),c);
 | |
| 791 | // gFile.Close(); | |
| 792 | // gNameBuf[0]=0xE5; | |
| 793 | // if ((c=gFile.Open(TheFs,gNameBuf,EFileRead))!=KErrNone) | |
| 794 | //		Error(_L("Open 5"),c);
 | |
| 795 | // gFile.Close(); | |
| 796 | // | |
| 797 | ||
| 798 | // | |
| 799 | //#ifdef TEST_MEDIA | |
| 800 | // if (fBuf[5]!='B') | |
| 801 | // goto skipMediaTest; | |
| 802 | //	testMedia(_L("OPEN DOOR ON"),NotReadyErr);
 | |
| 803 | //	testMedia(_L("INSERT CORRUPT RAM PACK (WRITE ENABLED) INTO"),CorruptMediaErr);
 | |
| 804 | //	testMedia(_L("INSERT CORRUPT RAM PACK (WRITE PROTECTED) INTO"),CorruptMediaErr);
 | |
| 805 | //	testMedia(_L("INSERT CORRUPT FLASH PACK (WRITE ENABLED) INTO"),CorruptMediaErr);
 | |
| 806 | //	testMedia(_L("INSERT CORRUPT FLASH PACK (WRITE PROTECTED) INTO"),CorruptMediaErr);
 | |
| 807 | //#ifdef FULL_TEST | |
| 808 | //	testMedia(_L("INSERT UNKNOWN MEDIA INTO"),UnknownErr);
 | |
| 809 | //#endif | |
| 810 | //	testMedia(_L("INSERT GOOD RAM PACK (WRITE PROTECTED) INTO"),WriteProtectErr);
 | |
| 811 | // if ((c=gFile.Open(TheFs,fBuf,P_FFORMAT))!=WriteProtectErr) | |
| 812 | //		Error(_L("Format RAM write protect"),c);
 | |
| 813 | //	testMedia(_L("INSERT GOOD FLASH PACK (WRITE PROTECTED) INTO"),WriteProtectErr);
 | |
| 814 | // if ((c=gFile.Open(TheFs,fBuf,P_FFORMAT))!=WriteProtectErr) | |
| 815 | //		Error(_L("Format FLASH write protect"),c);
 | |
| 816 | //	testMedia(_L("INSERT GOOD PACK (WRITE ENABLED) INTO"),0);
 | |
| 817 | // | |
| 818 | //skipMediaTest: | |
| 819 | //#endif // TEST_MEDIA // | |
| 820 | // | |
| 821 | ||
| 822 | // Test update is assumed for unique // | |
| 823 | ||
| 824 | testUnique(EFileStream); | |
| 825 | testUnique(EFileStreamText); | |
| 826 | testDelete(); | |
| 827 | testRename(); | |
| 828 | 	test.Printf(_L("Test get file info\n"));
 | |
| 829 | //	testFileInfo(_L("*.*"),NameErr); ********** Allowed (?)
 | |
| 830 | 	testFileInfo(_L(""),KErrNone); // NameErr);
 | |
| 831 | 	testFileInfo(_L("\\"),NameErr);
 | |
| 832 | 	testFileInfo(_L("."),NameErr);
 | |
| 833 | 	testFileInfo(_L(".."),NameErr);
 | |
| 834 | 	testFileInfo(_L("a.1234"),KErrNotFound); // ********* NameErr);
 | |
| 835 | 	testFileInfo(_L("a23456789"),KErrNotFound); // ********* NameErr);
 | |
| 836 | 	testFileInfo(_L(".a"),KErrNotFound); // ********** NameErr);
 | |
| 837 | 	testFileInfo(_L("?"),NameErr);
 | |
| 838 | 	testFileInfo(_L("NOEXIST"),NotExistsErr);
 | |
| 839 | 	testFileInfo(_L("\\NODIR\\NAME"),DirErr);
 | |
| 840 | 	testFileInfo(_L("L:\\NAME"),DeviceErr);
 | |
| 841 | gNameBuf.SetLength(0); | |
| 842 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone) | |
| 843 | 		Error(_L("Open 1.1"),c);
 | |
| 844 | testFileInfo(gNameOut,FALSE); // Not locked // | |
| 845 | gFile.Close(); | |
| 846 | testFileInfo(gNameOut,FALSE); | |
| 847 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 848 | 		Error(_L("Delete"),c);
 | |
| 849 | ||
| 850 | 	test.Printf(_L("Test get device info\n"));
 | |
| 851 | 	testDeviceInfo(_L(""),FALSE);           // NULL is current device //
 | |
| 852 | 	testDeviceInfo(_L("L:"),DeviceErr);
 | |
| 853 | 	testDeviceInfo(_L("Z:"),FALSE);
 | |
| 854 | testDeviceInfo(fBuf,FALSE); | |
| 855 | ||
| 856 | ||
| 857 | //	test.Printf(_L("Test get node info\n"));
 | |
| 858 | //	testNodeInfo(_L("LOC::"),P_FSYSTYPE_HIER,FALSE);
 | |
| 859 | //	testNodeInfo(_L("Z:"),P_FSYSTYPE_FLAT,FALSE);
 | |
| 860 | //	testNodeInfo(_L("LOC:"),P_FSYSTYPE_HIER,FALSE);
 | |
| 861 | //	testNodeInfo(_L("LOC"),P_FSYSTYPE_HIER,FALSE);
 | |
| 862 | //	testNodeInfo(_L("*"),P_FSYSTYPE_HIER,FALSE);
 | |
| 863 | //	testNodeInfo(_L(""),P_FSYSTYPE_HIER,FALSE);
 | |
| 864 | //	testNodeInfo(_L("?"),P_FSYSTYPE_HIER,FALSE);
 | |
| 865 | //	testNodeInfo(_L("FRED"),P_FSYSTYPE_HIER,FALSE);
 | |
| 866 | //	testNodeInfo(_L("FRED::"),P_FSYSTYPE_HIER,FALSE);
 | |
| 867 | //	testNodeInfo(_L("....."),P_FSYSTYPE_HIER,FALSE);
 | |
| 868 | //	testNodeInfo(_L("LOC::zzzzzzzzzzzzzzzzzzzzzzzzz"),P_FSYSTYPE_HIER,FALSE);
 | |
| 869 | //	testNodeInfo(_L("LOC::\\"),P_FSYSTYPE_HIER,FALSE);
 | |
| 870 | //	testNodeInfo(_L("XXX::"),0,E_GEN_FSYS);
 | |
| 871 | //	testNodeInfo(_L("REM::"),0,E_GEN_FSYS);
 | |
| 872 | //	testNodeInfo(_L("...::"),0,E_GEN_FSYS);
 | |
| 873 | ||
| 874 | //	testFileInfo(_L("Z:SYS$WSRV.IMG"),FALSE);
 | |
| 875 | //	testFileInfo(_L("Z:\\SYS$WSRV.IMG"),NameErr);    // \ not allowed  - no path //
 | |
| 876 | //	testFileInfo(_L("Z:*"),FALSE);               // Z: allows *'s ! //
 | |
| 877 | //	testFileInfo(_L("Z:SYS$WSRV."),NotExistsErr);
 | |
| 878 | //	testFileInfo(_L("XXX::"),NoFileSystemErr);
 | |
| 879 | if(PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin)) | |
| 880 | 		testFileInfo(_L("Z:\\Sys\\Bin\\ESHELL.EXE"),FALSE);    // we now have paths //
 | |
| 881 | else | |
| 882 | 		testFileInfo(_L("Z:\\System\\Bin\\ESHELL.EXE"),FALSE);    // we now have paths //
 | |
| 883 | //	testFileInfo(_L("Z:*"),KErrPathNotFound); // session path gets inserted ,FALSE);
 | |
| 884 | //	testFileInfo(_L("Z:SYS$WSRV."),NotExistsErr);
 | |
| 885 | //	testFileInfo(_L("H:"),KErrBadName); // ************** NoFileSystemErr);
 | |
| 886 | ||
| 887 | 	test.Printf(_L("Test weird filenames\n"));
 | |
| 888 | // Test SPACES // | |
| 889 | ||
| 890 | 	testFileName(_L("A B"),KErrNone); // ******* NameErr);
 | |
| 891 | 	testFileName(_L(" AB"),KErrNone); // ******* NameErr);
 | |
| 892 | 	testFileName(_L(" AB      "),KErrNone); // ******* NameErr);
 | |
| 893 | 	testFileName(_L("    AB"),KErrNone);
 | |
| 894 | 	testFileName(_L(" AB  . cdef"),KErrNone);
 | |
| 895 | 	testFileName(_L(" AB  .  cdef  "),KErrNone);
 | |
| 896 | 	testFileName(_L("A2345678 "),KErrNone); // ******* NameErr);
 | |
| 897 | 	testFileName(_L("A2345678.XY "),KErrNone); // ******* NameErr);
 | |
| 898 | 	testFileName(_L("A2345678.XYZ "),KErrNone); // ******* NameErr);
 | |
| 899 | 	testFileName(_L("A2345678 XYZ"),KErrNone); // ******* NameErr);
 | |
| 900 | 	testFileName(_L(" "),NameErr);
 | |
| 901 | 	testFileName(_L("\\A B\\NAME"),KErrPathNotFound); // ******* NameErr);
 | |
| 902 | 	testFileName(_L("\\ \\NAME"),NameErr);
 | |
| 903 | 	testFileName(_L("\\asdf\\qer\\   \\asdf\\NAME"),NameErr);
 | |
| 904 | 	testFileName(_L("     "),NameErr);
 | |
| 905 | 	testFileName(_L("C:\\asdf\\     "),NameErr);
 | |
| 906 | // Test short names // | |
| 907 | 	testFileName(_L(""),NameErr);
 | |
| 908 | 	testFileName(_L("\\"),NameErr);
 | |
| 909 | 	testFileName(_L("1"),FALSE);
 | |
| 910 | 	testFileName(_L(".1"),KErrNone); // ******* NameErr);
 | |
| 911 | 	testFileName(_L(".1"),KErrNone); // ******* NameErr);
 | |
| 912 | 	testFileName(_L("\\.1"),KErrNone); // ******* NameErr);
 | |
| 913 | 	testFileName(_L("1.1"),FALSE);
 | |
| 914 | // Test long names // | |
| 915 | 	testFileName(_L("12345678.123"),FALSE);
 | |
| 916 | 	testFileName(_L("123456789.123"),KErrNone); // ******* NameErr);
 | |
| 917 | 	testFileName(_L("12345678.1234"),KErrNone); // ******* NameErr);
 | |
| 918 | 	testFileName(_L("1.1234"),KErrNone); // ******* NameErr);
 | |
| 919 | 	testFileName(_L("123456789"),KErrNone); // ******* NameErr);
 | |
| 920 | gDataBuf.SetLength(256); | |
| 921 | 	gDataBuf.Fill('A',255);
 | |
| 922 | testFileName(gDataBuf,NameErr); | |
| 923 | gDataBuf.SetLength(257); | |
| 924 | 	gDataBuf.Fill('B',256);
 | |
| 925 | testFileName(gDataBuf,NameErr); | |
| 926 | gDataBuf.SetLength(258); | |
| 927 | 	gDataBuf.Fill('C',257);
 | |
| 928 | testFileName(gDataBuf,NameErr); | |
| 929 | gDataBuf.SetLength(4096); | |
| 930 | 	gDataBuf.Fill('D',4095);
 | |
| 931 | testFileName(gDataBuf,NameErr); | |
| 932 | // Test DOTS // | |
| 933 | 	testFileName(_L("A.X"),FALSE);
 | |
| 934 | 	testFileName(_L("A..X"),KErrNone); // ******* NameErr);
 | |
| 935 | 	testFileName(_L("A.........X"),KErrNone); // ******* NameErr);
 | |
| 936 | 	testFileName(_L("A."),FALSE);
 | |
| 937 | 	testFileName(_L(".X"),KErrNone); // ******* NameErr);
 | |
| 938 | 	testFileName(_L("."),NameErr);
 | |
| 939 | 	testFileName(_L(".."),NameErr);
 | |
| 940 | //	testFileName(_L("..."),KErrNone); // NameErr); // !!! ********* NT error KErrAccessDenied (?)
 | |
| 941 | 	testFileName(_L("\\a.x\\NAME"),DirErr); // DirErr == KErrPathNotFound
 | |
| 942 | 	testFileName(_L("\\a..x\\NAME"),DirErr); // ******** NameErr);
 | |
| 943 | 	testFileName(_L("\\.\\NAME"),NameErr);
 | |
| 944 | 	testFileName(_L("\\..\\NAME"),NameErr);
 | |
| 945 | //	testFileName(_L("\\...\\NAME"),KErrPathNotFound); // ******** NameErr); // !! NT treats ... as .. ??
 | |
| 946 | // Test WILD CARDS // | |
| 947 | 	testFileName(_L("*.*"),NameErr);
 | |
| 948 | 	testFileName(_L("*"),NameErr);
 | |
| 949 | 	testFileName(_L("\\*"),NameErr);
 | |
| 950 | 	testFileName(_L("?"),NameErr);
 | |
| 951 | 	testFileName(_L("\\?"),NameErr);
 | |
| 952 | 	testFileName(_L("\\A?B\\NAME"),NameErr);
 | |
| 953 | 	testFileName(_L("\\A*B\\NAME"),NameErr);
 | |
| 954 | 	testFileName(_L("\\*\\NAME"),NameErr);
 | |
| 955 | 	testFileName(_L("\\********.***\\NAME"),NameErr);
 | |
| 956 | 	testFileName(_L("A?X"),NameErr);
 | |
| 957 | ||
| 958 | 	test.Printf(_L("Test set volume name\n"));
 | |
| 959 | // New behaviour: SetVolumeName accepts any string < 12 chars | |
| 960 | // No modifications are made on the string. | |
| 961 | #if defined(__WINS__) | |
| 962 | 	TInt ret=TheFs.SetVolumeLabel(_L("TEST"),KDefaultDrive);
 | |
| 963 | if(ret==KErrNotSupported||ret==KErrAccessDenied) | |
| 964 | 		{
 | |
| 965 | 		test.Printf(_L("Error: Cannot set volume label on substed drive\n"));
 | |
| 966 | //test.Getch(); | |
| 967 | } | |
| 968 | else | |
| 969 | #endif | |
| 970 | 	{
 | |
| 971 | 	testVolumeName(_L("TESTNAME.VOL"),KErrBadName);	//	12 chars - too long for volume label
 | |
| 972 | 	testVolumeName(_L("TESTNAME"),FALSE);			//	OK for 8 bit - too long for UNICODE
 | |
| 973 | 	testVolumeName(_L("PQRSTUVWXYZ"),FALSE);		//	just uses the first 5 characters
 | |
| 974 | 	testVolumeName(_L("ABCDE"),FALSE);
 | |
| 975 | 	testVolumeName(_L("FGHIJK"),FALSE);
 | |
| 976 | 	testVolumeName(_L(""),FALSE);
 | |
| 977 | 	testVolumeName(_L(""),FALSE);
 | |
| 978 | 	testVolumeName(_L("\\"),FALSE);
 | |
| 979 | gNameBuf.SetLength(0); | |
| 980 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone) | |
| 981 | 		Error(_L("Open 60"),c);
 | |
| 982 | 	testVolumeName(_L("TEST_NAME"),FALSE);	//	Check not locked 
 | |
| 983 | gFile.Close(); | |
| 984 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 985 | 		Error(_L("Delete"),c);
 | |
| 986 | 	testVolumeName(_L("voL1"),FALSE);
 | |
| 987 | 	testVolumeName(_L("\\vol1"),FALSE);
 | |
| 988 | 	testVolumeName(_L("\\12345678.123"),KErrBadName);
 | |
| 989 | 	testVolumeName(_L("\\123456.123"),FALSE);
 | |
| 990 | 	testVolumeName(_L("\\vol1\\"),KErrNone); 
 | |
| 991 | 	testVolumeName(_L("."),KErrBadName);	//	Bug fix SW1-728 to prevent illegal characters
 | |
| 992 | 	testVolumeName(_L(".."),KErrBadName);	//	in the volume name
 | |
| 993 | 	testVolumeName(_L("A."),KErrBadName);
 | |
| 994 | if (!IsTestingLFFS()) | |
| 995 | 		{ // ???
 | |
| 996 | 		testVolumeName(_L("!\"\x9C$%^&@.(){"),KErrBadName);
 | |
| 997 | 		testVolumeName(_L("!\"\x9C$%^&@("),KErrBadName);
 | |
| 998 | } | |
| 999 | 	testVolumeName(_L("*.*"),KErrBadName);	// Wild cards not allowed
 | |
| 1000 | 	testVolumeName(_L("?.?"),KErrBadName); 
 | |
| 1001 | 	testVolumeName(_L("????????.???"),KErrBadName);
 | |
| 1002 | 	testVolumeName(_L("????????.??"),KErrBadName);
 | |
| 1003 | 	testVolumeName(_L("ABC>DEF"),KErrBadName);
 | |
| 1004 | 	testVolumeName(_L("ABC<DEF"),KErrBadName);
 | |
| 1005 | 	testVolumeName(_L("ABC|DEF"),KErrBadName);
 | |
| 1006 | 	testVolumeName(_L("ABC/DEF"),KErrBadName);
 | |
| 1007 | 	testVolumeName(_L("ABC\"DEF"),KErrBadName);
 | |
| 1008 | 	testVolumeName(_L("ABC*DEF"),KErrBadName);
 | |
| 1009 | 	testVolumeName(_L("ABC:DEF"),KErrBadName);
 | |
| 1010 | 	testVolumeName(_L("ABC?DEF"),KErrBadName);
 | |
| 1011 | 	testVolumeName(_L("ABC\\DEF"),KErrBadName);
 | |
| 1012 | 	testVolumeName(_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),KErrBadName);	//	Too long
 | |
| 1013 | 	testVolumeName(_L("VOLUME1"),FALSE);							//	Too long in UNICODE
 | |
| 1014 | 	testVolumeName(_L("Z:VOLUME1"),KErrAccessDenied);
 | |
| 1015 | } | |
| 1016 | ||
| 1017 | 	test.Printf(_L("Test make directory\n"));
 | |
| 1018 | ||
| 1019 | // Test path | |
| 1020 | 	testMakeDir(_L("\\A2345678.A23\\NAME"),FALSE);
 | |
| 1021 | 	testMakeDir(_L("\\A23456789.A23\\NAME"),KErrNone); // ******** NameErr);
 | |
| 1022 | 	testMakeDir(_L("\\A2345678.A234\\NAME"),KErrNone); // ******** NameErr);
 | |
| 1023 | 	testMakeDir(_L("\\A.1234\\NAME"),KErrNone); // ********* NameErr);
 | |
| 1024 | 	testMakeDir(_L("\\A2345678\\NAME"),FALSE);
 | |
| 1025 | 	testMakeDir(_L("\\A23456789\\NAME"),KErrNone); // ******** NameErr);
 | |
| 1026 | 	testMakeDir(_L("\\A.X\\NAME"),FALSE);
 | |
| 1027 | 	testMakeDir(_L("\\A..X\\NAME"),KErrNone); // ******** NameErr);
 | |
| 1028 | 	testMakeDir(_L("\\A.\\NAME"),NameErr);
 | |
| 1029 | 	testMakeDir(_L("\\.X\\NAME"),KErrNone); // ******** NameErr);
 | |
| 1030 | 	testMakeDir(_L("\\.\\NAME"),NameErr);
 | |
| 1031 | 	testMakeDir(_L("\\..\\NAME"),NameErr);
 | |
| 1032 | 	testMakeDir(_L("\\\\NAME"),NameErr);
 | |
| 1033 | 	testMakeDir(_L("\\\\"),NameErr);
 | |
| 1034 | 	testMakeDir(_L("\\A\\A2\\A23\\a2345678\\a2345678.\\a2345678.1\\a2345678.123"),NameErr);
 | |
| 1035 | 	testMakeDir(_L("\\A\\A2\\A23\\a2345678\\a2345678.\\a2345678.1\\a2345678..123"),NameErr); // ******* NameErr);
 | |
| 1036 | 	testMakeDir(_L("\\A\\A2\\A23\\a2345678\\a2345678.\\a2345678.1\\a2345678.1234"),NameErr); // ******* NameErr);
 | |
| 1037 | gDataBuf.SetLength(256); | |
| 1038 | 	gDataBuf.Fill('V',255);
 | |
| 1039 | testMakeDir(gDataBuf,NameErr); | |
| 1040 | gDataBuf.SetLength(257); | |
| 1041 | 	gDataBuf.Fill('W',256);
 | |
| 1042 | testMakeDir(gDataBuf,NameErr); | |
| 1043 | gDataBuf.SetLength(258); | |
| 1044 | 	gDataBuf.Fill('X',257);
 | |
| 1045 | testMakeDir(gDataBuf,NameErr); | |
| 1046 | gDataBuf.SetLength(259); | |
| 1047 | 	gDataBuf.Fill('Y',258);
 | |
| 1048 | testMakeDir(gDataBuf,NameErr); | |
| 1049 | gDataBuf.SetLength(4096); | |
| 1050 | 	gDataBuf.Fill('Z',4095);
 | |
| 1051 | testMakeDir(gDataBuf,NameErr); | |
| 1052 | ||
| 1053 | // Test names | |
| 1054 | 	testMakeDir(_L("A..X"),KErrAlreadyExists); // ******* NameErr);
 | |
| 1055 | 	testMakeDir(_L("\\A\\"),FALSE);
 | |
| 1056 | 	testMakeDir(_L("\\12345678.123\\"),FALSE);
 | |
| 1057 | 	testMakeDir(_L("\\.\\"),NameErr);
 | |
| 1058 | 	testMakeDir(_L("\\..\\"),NameErr);
 | |
| 1059 | 	testMakeDir(_L("\\X\\"),FALSE);
 | |
| 1060 | 	testMakeDir(_L("\\12345678.1234\\"),KErrNone); // ******* NameErr);
 | |
| 1061 | 	testMakeDir(_L("\\123456789\\"),KErrNone); // ******** NameErr);
 | |
| 1062 | // Test max levels | |
| 1063 | 	testMakeDir(_L("\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z"),FALSE);
 | |
| 1064 | 	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.3"),FALSE);
 | |
| 1065 | 	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.34"),FALSE);
 | |
| 1066 | 	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.345"),FALSE);
 | |
| 1067 | 	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.3\\xxxxxxxx.xxx"),FALSE);
 | |
| 1068 | 	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.34\\xxxxxxxx.xxx"),KErrNone); // ******* NameErr);
 | |
| 1069 | 	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.345\\xxxxxxxx.xxx"),KErrNone); // ******* NameErr);
 | |
| 1070 | 	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23"),FALSE);
 | |
| 1071 | 	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23456789.123"),FALSE);
 | |
| 1072 | 	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23\\5"),FALSE);
 | |
| 1073 | 	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23\\56789012.456"),FALSE);
 | |
| 1074 | 	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\234\\6"),KErrNone); // ******** NameErr);
 | |
| 1075 | 	testMakeDir(_L("Z:\\ROMDIR\\"),KErrAccessDenied); // *********** NotSupportedErr);
 | |
| 1076 | 	test.Printf(_L("Test setEof to same length\n"));
 | |
| 1077 | gNameBuf.SetLength(0); | |
| 1078 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone) | |
| 1079 | 		Error(_L("Open 50"),c);
 | |
| 1080 | gFile.Close(); | |
| 1081 | testSetEof(gNameOut,0L,FALSE); // should be no change // | |
| 1082 | testSetEof(gNameOut,1L,TRUE); // should be change // | |
| 1083 | testSetEof(gNameOut,1L,FALSE); // should be no change // | |
| 1084 | testSetEof(gNameOut,1L,FALSE); | |
| 1085 | if (fBuf[5]=='M') | |
| 1086 | testSize=650L; // No room on M: for 65536 ! // | |
| 1087 | else | |
| 1088 | testSize=65536L; | |
| 1089 | testSetEof(gNameOut,testSize,TRUE); | |
| 1090 | testSetEof(gNameOut,testSize,FALSE); | |
| 1091 | testSetEof(gNameOut,testSize+1L,TRUE); | |
| 1092 | testSetEof(gNameOut,testSize,TRUE); | |
| 1093 | ||
| 1094 | testSetEof(gNameOut,0L,TRUE); | |
| 1095 | testSetEof(gNameOut,0L,FALSE); | |
| 1096 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 1097 | 		Error(_L("Delete"),c);
 | |
| 1098 | ||
| 1099 | 	test.Printf(_L("Test read of zero bytes\n"));
 | |
| 1100 | gNameBuf.SetLength(0); | |
| 1101 | ||
| 1102 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone) | |
| 1103 | 		Error(_L("Open 60"),c);
 | |
| 1104 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr) | |
| 1105 | 		Error(_L("Read 61"),c);
 | |
| 1106 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr) | |
| 1107 | 		Error(_L("Read 62"),c);
 | |
| 1108 | if ((c=gFile.Write(gDataBuf,0))!=KErrNone) | |
| 1109 | 		Error(_L("Write 63"),c);
 | |
| 1110 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr) | |
| 1111 | 		Error(_L("Read 64"),c);
 | |
| 1112 | gFile.Close(); | |
| 1113 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone) | |
| 1114 | 		Error(_L("Open 70"),c);
 | |
| 1115 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr) | |
| 1116 | 		Error(_L("Read 71"),c);
 | |
| 1117 | gDataBuf.SetLength(1); | |
| 1118 | gDataBuf[0]=0xf0; | |
| 1119 | if ((c=gFile.Write(gDataBuf,1))!=KErrNone) | |
| 1120 | 		Error(_L("Write 72"),c);
 | |
| 1121 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ********* EofErr) | |
| 1122 | 		Error(_L("Read 73"),c);
 | |
| 1123 | pos=0L; | |
| 1124 | if ((c=gFile.Seek((TSeek)P_FABS,pos))!=KErrNone) | |
| 1125 | 		Error(_L("Seek 74"),c);
 | |
| 1126 | gDataBuf.SetLength(1); | |
| 1127 | gDataBuf[0]=0x83; | |
| 1128 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) | |
| 1129 | 		Error(_L("Read 75"),c);
 | |
| 1130 | // if (gDataBuf[0]!=0x83) *********** Read zeros the length of a buffer after a zero length read | |
| 1131 | if (gDataBuf.Length()!=0) | |
| 1132 | 		Error(_L("buffer 1 check"),0);
 | |
| 1133 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) | |
| 1134 | 		Error(_L("Read 76"),c);
 | |
| 1135 | if ((c=gFile.Read(gDataBuf,1))!=KErrNone || gDataBuf.Length()!=1) | |
| 1136 | 		Error(_L("Read 77"),c);
 | |
| 1137 | if (gDataBuf[0]!=0xf0) | |
| 1138 | 		Error(_L("buffer 1 check"),0);
 | |
| 1139 | if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr) | |
| 1140 | 		Error(_L("Read 78"),c);
 | |
| 1141 | if ((c=gFile.Read(gDataBuf,16384))!=KErrNone) // ******* EofErr) | |
| 1142 | 		Error(_L("Read 79"),c);
 | |
| 1143 | gFile.Close(); | |
| 1144 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 1145 | 		Error(_L("Delete"),c);
 | |
| 1146 | ||
| 1147 |     test.Printf(_L("Test write of zero bytes\n"));
 | |
| 1148 | gNameBuf.SetLength(0); | |
| 1149 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone) | |
| 1150 |         Error(_L("Open 50"),c);
 | |
| 1151 | gFile.Close(); | |
| 1152 | //	********** Error(_L("Close"),c); close has no return value
 | |
| 1153 | gDataBuf.SetLength(16384); | |
| 1154 | ||
| 1155 | testWrite(gNameOut,0,0L,FALSE); // should be no change // | |
| 1156 | testWrite(gNameOut,1,1L,TRUE); // should be change // | |
| 1157 | testWrite(gNameOut,0,1L,FALSE); | |
| 1158 | testWrite(gNameOut,0,1L,FALSE); | |
| 1159 | testWrite(gNameOut,16384,16384L,TRUE); | |
| 1160 | testWrite(gNameOut,0,16384L,FALSE); | |
| 1161 | testWrite(gNameOut,16383,16384L,TRUE); | |
| 1162 | ||
| 1163 | ||
| 1164 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 1165 |         Error(_L("Delete"),c);
 | |
| 1166 | ||
| 1167 | 	test.Printf(_L("Test ReadOnly files\n"));
 | |
| 1168 | gNameBuf.SetLength(0); | |
| 1169 | 	if ((c=gFile.Create(TheFs,_L("TEST1.TMP"),EFileStream|P_FUPDATE))!=KErrNone)
 | |
| 1170 | 		Error(_L("Create 40"),c);
 | |
| 1171 | gFile.Close(); | |
| 1172 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone) | |
| 1173 | 		Error(_L("Open 40"),c);
 | |
| 1174 | mask=0; | |
| 1175 | attrib=KEntryAttReadOnly; // Remove writable // | |
| 1176 | if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=LockedErr) | |
| 1177 | 		Error(_L("TheFs.SetAtt not locked"),c);
 | |
| 1178 | gFile.Close(); | |
| 1179 | if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone) | |
| 1180 | 		Error(_L("Att 41"),c);
 | |
| 1181 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE))!=AccessErr) | |
| 1182 | 		Error(_L("Open 41"),c);
 | |
| 1183 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream))!=KErrNone) | |
| 1184 | 		Error(_L("Open 42"),c);
 | |
| 1185 | if ((c=gFileErr.Open(TheFs,gNameOut,EFileStream))!=LockedErr) | |
| 1186 | 		Error(_L("Open 43"),c);
 | |
| 1187 | 	if ((c=TheFs.Rename(_L("TEST1.TMP"),gNameOut))!=ExistsErr)
 | |
| 1188 | 		Error(_L("Rename 43.1"),c);
 | |
| 1189 | if ((c=gFileErr.Create(TheFs,gNameOut,EFileStream))!=ExistsErr) // LockedErr) | |
| 1190 | 		Error(_L("Open 44"),c);
 | |
| 1191 | if ((c=gFileErr.Replace(TheFs,gNameOut,EFileStream))!=LockedErr) | |
| 1192 | 		Error(_L("Open 45"),c);
 | |
| 1193 | gFile.Close(); | |
| 1194 | if ((c=gFile.Create(TheFs,gNameOut,EFileStream))!=ExistsErr) | |
| 1195 | 		Error(_L("Create 46"),c);
 | |
| 1196 | if ((c=gFile.Replace(TheFs,gNameOut,EFileStream))!=AccessErr) | |
| 1197 | 		Error(_L("Replace 47"),c);
 | |
| 1198 | 	if ((c=gFile.Create(TheFs,_L("FILE1.TMP"),EFileStream))!=KErrNone)
 | |
| 1199 | 		Error(_L("Create 48"),c);
 | |
| 1200 | 	if ((c=TheFs.Rename(_L("FILE1.TMP"),_L("FILE2.TMP")))!=LockedErr)
 | |
| 1201 | 		Error(_L("Rename 49"),c);
 | |
| 1202 | gFile.Close(); | |
| 1203 | 	if ((c=TheFs.Rename(_L("FILE1.TMP"),_L("FILE2.TMP")))!=KErrNone)
 | |
| 1204 | 		Error(_L("Rename 50"),c);
 | |
| 1205 | 	if ((c=TheFs.Rename(_L("FILE2.TMP"),gNameOut))!=ExistsErr)
 | |
| 1206 | 		Error(_L("Rename 51"),c);
 | |
| 1207 | if ((c=TheFs.Delete(gNameOut))!=AccessErr) | |
| 1208 | 		Error(_L("Delete"),c);
 | |
| 1209 | mask=KEntryAttReadOnly; | |
| 1210 | attrib=0; | |
| 1211 | if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone) | |
| 1212 | 		Error(_L("Att 42"),c);
 | |
| 1213 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 1214 | 		Error(_L("Delete 1"),c);
 | |
| 1215 | 	if ((c=TheFs.Delete(_L("TEST1.TMP")))!=KErrNone)
 | |
| 1216 | 		Error(_L("Delete 2"),c);
 | |
| 1217 | 	if ((c=TheFs.Delete(_L("FILE2.TMP")))!=KErrNone)
 | |
| 1218 | 		Error(_L("Delete 3"),c);
 | |
| 1219 | ||
| 1220 | 	test.Printf(_L("Test write/setEof without UPDATE\n"));
 | |
| 1221 | 	if ((c=gFile.Create(TheFs,_L("B_GEN.001"),EFileStream))!=KErrNone)
 | |
| 1222 | 		Error(_L("Open 30"),c);
 | |
| 1223 | gFile.Close(); | |
| 1224 | 	if ((c=gFile.Open(TheFs,_L("B_GEN.001"),EFileStream))!=KErrNone)
 | |
| 1225 | 		Error(_L("Open 30"),c);
 | |
| 1226 | pos=1L; | |
| 1227 | if ((c=gFile.SetSize(pos))!=ReadOnlyErr) | |
| 1228 | 		Error(_L("Set EOF 30"),c);
 | |
| 1229 | 	if ((c=TheFs.Entry(_L("B_GEN.001"),gFileEntry))!=KErrNone)
 | |
| 1230 | 		Error(_L("File info 30"),c);
 | |
| 1231 | if (gFileEntry.iSize!=0L) | |
| 1232 | 		Error(_L("Size check 30"),0);
 | |
| 1233 | if ((c=gFile.Write(gDataBuf,1))!=ReadOnlyErr) | |
| 1234 | 		Error(_L("Write 30"),c);
 | |
| 1235 | 	if ((c=TheFs.Entry(_L("B_GEN.001"),gFileEntry))!=KErrNone)
 | |
| 1236 | 		Error(_L("File info 31"),c);
 | |
| 1237 | if (gFileEntry.iSize!=0L) | |
| 1238 | 		Error(_L("Size check 31"),0);
 | |
| 1239 | gFile.Close(); | |
| 1240 | 	if ((c=TheFs.Entry(_L("B_GEN.001"),gFileEntry))!=KErrNone)
 | |
| 1241 | 		Error(_L("File info 32"),c);
 | |
| 1242 | if (gFileEntry.iSize!=0L) | |
| 1243 | 		Error(_L("Size check 32"),0);
 | |
| 1244 | 	if ((c=TheFs.Delete(_L("B_GEN.001")))!=KErrNone)
 | |
| 1245 | 		Error(_L("Delete"),c);
 | |
| 1246 | ||
| 1247 | ||
| 1248 | 	test.Printf(_L("Test dir entries are written out\n"));
 | |
| 1249 | gNameBuf.SetLength(0); | |
| 1250 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FRANDOM))!=KErrNone) | |
| 1251 | 		Error(_L("Open 20"),c); 
 | |
| 1252 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1253 | 		Error(_L("File info 0"),c);
 | |
| 1254 | if ((gFileEntry.iAtt & P_FAMOD)==0) | |
| 1255 | 		Error(_L("Status 20"),0);
 | |
| 1256 | 	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
 | |
| 1257 | if (gFileEntry.iSize!=0L) | |
| 1258 | 		Error(_L("Size check 0"),0);
 | |
| 1259 | saveTime=gFileEntry.iModified; | |
| 1260 | 	test.Printf(_L("Wait 3 seconds...\n"));
 | |
| 1261 | User::After(3000000L); | |
| 1262 | gDataBuf.SetLength(1); | |
| 1263 | if ((c=gFile.Write(gDataBuf,1))!=KErrNone) | |
| 1264 | 		Error(_L("Write 1"),c);
 | |
| 1265 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1266 | 		Error(_L("File info 1"),c);
 | |
| 1267 | 	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
 | |
| 1268 | if (gFileEntry.iSize!=1L) | |
| 1269 | 		Error(_L("Size check 1"),0);
 | |
| 1270 | if (gFileEntry.iModified==saveTime) | |
| 1271 | 		Error(_L("Time update"),0);
 | |
| 1272 | gDataBuf.SetLength(16384); | |
| 1273 | if ((c=gFile.Write(gDataBuf,16384))!=KErrNone) | |
| 1274 | 		Error(_L("Write 2"),c);
 | |
| 1275 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1276 | 		Error(_L("File info 2"),c);
 | |
| 1277 | 	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
 | |
| 1278 | if (gFileEntry.iSize!=16385L) | |
| 1279 | 		Error(_L("Size check 2"),0);
 | |
| 1280 | pos=0L; | |
| 1281 | if ((c=gFile.Seek((TSeek)P_FABS,pos))!=KErrNone) | |
| 1282 | 		Error(_L("Seek 0"),c);
 | |
| 1283 | if ((c=gFile.Write(gDataBuf,1))!=KErrNone) | |
| 1284 | 		Error(_L("Write 3"),c);
 | |
| 1285 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1286 | 		Error(_L("File info 3"),c);
 | |
| 1287 | 	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
 | |
| 1288 | if (gFileEntry.iSize!=16385L) | |
| 1289 | 		Error(_L("Size check 3"),0);
 | |
| 1290 | pos=0L; | |
| 1291 | if ((c=gFile.Seek((TSeek)P_FABS,pos))!=KErrNone) | |
| 1292 | 		Error(_L("Seek 1"),c);
 | |
| 1293 | if ((c=gFile.Write(gDataBuf,16384))!=KErrNone) | |
| 1294 | 		Error(_L("Write 4"),c);
 | |
| 1295 | if ((c=gFile.Write(gDataBuf,1))!=KErrNone) | |
| 1296 | 		Error(_L("Write 5"),c);
 | |
| 1297 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1298 | 		Error(_L("File info 4"),c);
 | |
| 1299 | 	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
 | |
| 1300 | if (gFileEntry.iSize!=16385L) | |
| 1301 | 		Error(_L("Size check 4"),0);
 | |
| 1302 | if ((c=gFile.Write(gDataBuf,1))!=KErrNone) | |
| 1303 | 		Error(_L("Write 6"),c);
 | |
| 1304 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1305 | 		Error(_L("File info 5"),c);
 | |
| 1306 | 	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
 | |
| 1307 | if (gFileEntry.iSize!=16386L) | |
| 1308 | 		Error(_L("Size check 5"),0);
 | |
| 1309 | for (i=0;i<50;i++) | |
| 1310 | 		{
 | |
| 1311 | TInt r=(Math::Rand(seed) & 0x7fff); | |
| 1312 | 		test.Printf(_L("%u) Set eof to %u\n"),i,r);
 | |
| 1313 | pos=r; | |
| 1314 | if ((c=gFile.SetSize(pos))!=KErrNone) | |
| 1315 | 			Error(_L("Set EOF 1"),c);
 | |
| 1316 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1317 | 			Error(_L("File info 6"),c);
 | |
| 1318 | if (gFileEntry.iSize!=r) | |
| 1319 | 			Error(_L("Size check 6"),i);
 | |
| 1320 | } | |
| 1321 | pos=0L; | |
| 1322 | if ((c=gFile.SetSize(pos))!=KErrNone) | |
| 1323 | 		Error(_L("Set EOF 2"),c);
 | |
| 1324 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1325 | 		Error(_L("File info 7"),c);
 | |
| 1326 | if (gFileEntry.iSize!=0L) | |
| 1327 | 		Error(_L("Size check 7"),0);
 | |
| 1328 | gFile.Close(); | |
| 1329 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1330 | 		Error(_L("File info 8"),c);
 | |
| 1331 | if (gFileEntry.iSize!=0L) | |
| 1332 | 		Error(_L("Size check 7"),0);
 | |
| 1333 | mask=P_FAMOD; | |
| 1334 | attrib=0; | |
| 1335 | if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone) | |
| 1336 | 		Error(_L("Att 20"),c);
 | |
| 1337 | ||
| 1338 | // | |
| 1339 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone) | |
| 1340 | 		Error(_L("Open 21"),c);
 | |
| 1341 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1342 | 		Error(_L("File info 9"),c);
 | |
| 1343 | if (gFileEntry.iAtt & P_FAMOD) | |
| 1344 | 		Error(_L("Status 21"),0);
 | |
| 1345 | if ((c=gFile.Write(gDataBuf,0))!=KErrNone) | |
| 1346 | 		Error(_L("Write 21"),c);
 | |
| 1347 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1348 | 		Error(_L("File info 9"),c);
 | |
| 1349 | if ((gFileEntry.iAtt & P_FAMOD)) // write 0 should not modify // | |
| 1350 | 		Error(_L("Status 22"),0);
 | |
| 1351 | gFile.Close(); | |
| 1352 | mask=P_FAMOD; | |
| 1353 | attrib=0; | |
| 1354 | if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone) | |
| 1355 | 		Error(_L("Att 20"),c);
 | |
| 1356 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone) | |
| 1357 | 		Error(_L("Open 22"),c);
 | |
| 1358 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1359 | 		Error(_L("File info 9"),c);
 | |
| 1360 | if (gFileEntry.iAtt & P_FAMOD) | |
| 1361 | 		Error(_L("Status 23"),0);
 | |
| 1362 | pos=0L; | |
| 1363 | if ((c=gFile.SetSize(pos))!=KErrNone) // no change // | |
| 1364 | 		Error(_L("Set EOF 21"),c);
 | |
| 1365 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1366 | 		Error(_L("File info 9"),c);
 | |
| 1367 | if ((gFileEntry.iAtt & P_FAMOD)) | |
| 1368 | 		Error(_L("Status 24"),0);
 | |
| 1369 | gFile.Close(); | |
| 1370 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1371 | 		Error(_L("File info 0"),c);
 | |
| 1372 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone) | |
| 1373 | 		Error(_L("Open 23"),c);
 | |
| 1374 | saveTime=gFileEntry.iModified; | |
| 1375 | 	test.Printf(_L("Wait 3 seconds...\n"));
 | |
| 1376 | User::After(3000000L); | |
| 1377 | if ((c=gFile.Flush())!=KErrNone) // Should not alter time // | |
| 1378 | 		Error(_L("Flush 0"),c);
 | |
| 1379 | if (gFileEntry.iModified!=saveTime) | |
| 1380 | 		Error(_L("Flush new time"),0);
 | |
| 1381 | gFile.Close(); | |
| 1382 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1383 | 		Error(_L("File info 61"),c);
 | |
| 1384 | if (gFileEntry.iModified!=saveTime) | |
| 1385 | 		Error(_L("Close new time"),0);
 | |
| 1386 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone) | |
| 1387 | 		Error(_L("Open 24"),c);
 | |
| 1388 | if ((c=gFile.Write(gDataBuf,1))!=KErrNone) | |
| 1389 | 		Error(_L("Write 60"),c);
 | |
| 1390 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1391 | 		Error(_L("File info 62"),c);
 | |
| 1392 | if (gFileEntry.iModified==saveTime) | |
| 1393 | 		Error(_L("Write new time 1"),0);
 | |
| 1394 | saveTime=gFileEntry.iModified; | |
| 1395 | 	test.Printf(_L("Wait 3 seconds...\n"));
 | |
| 1396 | User::After(3000000L); | |
| 1397 | if ((c=gFile.Flush())!=KErrNone) // Should alter time // | |
| 1398 | 		Error(_L("Flush 1"),c);
 | |
| 1399 | if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone) | |
| 1400 | 		Error(_L("File info 64"),c);
 | |
| 1401 | if (gFileEntry.iModified!=saveTime) // ==saveTime) // !!! Flush doesn't alter the time unless the file is modified | |
| 1402 | 		Error(_L("Flush new time 1"),0);
 | |
| 1403 | gFile.Close(); | |
| 1404 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 1405 | 		Error(_L("Delete"),c);
 | |
| 1406 | ||
| 1407 | 	test.Printf(_L("Test set file date\n"));
 | |
| 1408 | gNameOut.SetLength(0); | |
| 1409 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone) | |
| 1410 | 		Error(_L("Open 10"),c);
 | |
| 1411 | gFile.Close(); | |
| 1412 | if ((c=gFile.Open(TheFs,gNameOut,EFileStream))!=KErrNone) | |
| 1413 | 		Error(_L("Open 10"),c); // Temp file is created as writable. 
 | |
| 1414 | TTime fileTime(0); | |
| 1415 | if ((c=gFile.SetModified(fileTime))!=AccessErr) // LockedErr) | |
| 1416 | 		Error(_L("Set file date 10"),c);
 | |
| 1417 | gFile.Close(); | |
| 1418 | ||
| 1419 | ||
| 1420 | for (i=0;i<DateTests;i++) | |
| 1421 | 		{
 | |
| 1422 | // TUint32 testSeconds[] = | |
| 1423 | //          {
 | |
| 1424 | // 0L, | |
| 1425 | // 315532799L, 315532800L, 315532801L,315532802L, | |
| 1426 | // 0xfffffffeL,0xffffffffL,0x7fffffffL, | |
| 1427 | // 0x80000000L,0x80000001L | |
| 1428 | // }; | |
| 1429 | // TUint32 checkSeconds[] = | |
| 1430 | //	        { 
 | |
| 1431 | // 315532800L, 315532800L, 315532800L, 315532800L, 315532802L, | |
| 1432 | // 0xfffffffeL,0xfffffffeL,0x7ffffffeL, | |
| 1433 | // 0x80000000L,0x80000000L | |
| 1434 | // }; | |
| 1435 | // TInt64 num64((TReal)(testSeconds[i]*1000000)); // !!! NT fails on dates < 1601 | |
| 1436 | // TTime fileTime(num64); | |
| 1437 | // if ((c=TheFs.SetModified(gNameBuf,fileTime))!=KErrNone) | |
| 1438 | //			Error(_L("Set file date 0"),c);
 | |
| 1439 | // if ((c=TheFs.Entry(gNameBuf,gFileEntry))!=KErrNone) | |
| 1440 | //			Error(_L("File info 10"),c);
 | |
| 1441 | // num64=(TReal)checkSeconds[i]*1000000; | |
| 1442 | // if (gFileEntry.iModified.Int64()!=num64) | |
| 1443 | //			Error(_L("Date check 0"),i);
 | |
| 1444 | } | |
| 1445 | if ((c=TheFs.Delete(gNameOut))!=KErrNone) | |
| 1446 | 		Error(_L("Delete 1"),c);
 | |
| 1447 | 	test.Printf(_L("Test format\n"));
 | |
| 1448 | gNameOut.SetLength(0); | |
| 1449 | if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone) | |
| 1450 | 		Error(_L("Open 1"),c);
 | |
| 1451 | if ((c=gFormat.Open(TheFs,fBuf,EFullFormat,count))!=LockedErr) | |
| 1452 | 		Error(_L("Format lock check 1"),c);
 | |
| 1453 | if ((c=gFormat.Open(TheFs,fBuf,EQuickFormat,count))!=LockedErr) | |
| 1454 | 		Error(_L("Format lock check 2"),c);
 | |
| 1455 | gFile.Close(); | |
| 1456 | ||
| 1457 | if ((c=gFormat.Open(TheFs,fBuf,EFullFormat,count))!=KErrNone) | |
| 1458 | 		{
 | |
| 1459 | if (c==LockedErr || c==AccessErr) | |
| 1460 | 			{
 | |
| 1461 | 			test.Printf(_L("Format: locked, no test\n"));
 | |
| 1462 | } | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 1463 | else | 
| 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 1464 |             {
 | 
| 0 | 1465 | 		Error(_L("Format lock check"),c);
 | 
| 1466 | } | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 1467 | } | 
| 0 | 1468 | |
| 1469 | gFormat.Close(); | |
| 19 
4a8fed1c0ef6
Revision: 201007
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 1470 | |
| 0 | 1471 | DeleteTestDirectory(); | 
| 1472 | ||
| 1473 | } |