--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lowlevellibsandfws/apputils/tsrc/T_BaflDefect.cpp Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,892 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <f32file.h>
+#include <e32test.h>
+#include <bautils.h>
+#include <hal.h>
+#include <e32std.h>
+#include <e32math.h>
+
+#include "backup_std.h"
+
+LOCAL_D CTrapCleanup* TheTrapCleanup=NULL;
+LOCAL_D CActiveScheduler* TheActiveScheduler=NULL;
+
+LOCAL_D RTest TheTest (_L("T_BaflDefect"));
+LOCAL_D RFs TheFs;
+
+_LIT(KServerLauncherProcess, "T_BackupServerLauncher");
+_LIT(KServerName, "!BackupServer");
+_LIT(KBURServerName,"baksrvs");
+
+class RIpcServerCloseTest : public RSessionBase
+{
+public: // Constructors and destructor
+
+ /**
+ * Constructor for performing 1st stage construction
+ */
+ RIpcServerCloseTest();
+
+ /**
+ * Destructor.
+ */
+ ~RIpcServerCloseTest();
+
+ /**
+ * Performs test steps
+ */
+ void RunTestL(const TDesC& aTargetSrvName, TInt aNumber, TInt aArgCount);
+};
+
+RIpcServerCloseTest::RIpcServerCloseTest()
+ {
+ // No implementation required
+ }
+
+RIpcServerCloseTest::~RIpcServerCloseTest()
+ {
+ Close();
+ }
+
+void RIpcServerCloseTest::RunTestL(const TDesC& aTargetSrvName, TInt aNumber, TInt aArgCount)
+ {
+ TVersion version(0,0,0);
+ TInt err = KErrNotFound;
+ TInt numberOfAttempts = 3;
+
+ while(err!=KErrNone && numberOfAttempts>0)
+ {
+ err = CreateSession(aTargetSrvName, version, 200);
+
+ if(err!=KErrNone)
+ {
+ // wait then try again if err!=0
+ TheTest.Printf(_L("CreateSession returned: %d"), err);
+ User::After(1000000);
+ numberOfAttempts--;
+ }
+ }
+
+ TheTest(err == KErrNone);
+
+ HBufC8* buf = HBufC8::NewLC(255);
+ TPtr8 ptr = buf->Des();
+ ptr.Fill(Math::Random(),255);
+
+ TIpcArgs args;
+
+ for(TInt i = 0; i < aArgCount ;i++)
+ {
+ args.Set(i,&ptr);
+ }
+
+ TheTest.Printf(_L("Sending request to: %d with %d args"), aNumber, aArgCount);
+
+ TRequestStatus status;
+
+ SendReceive(aNumber, args, status);
+
+ User::WaitForRequest(status);
+
+ TheTest.Printf(_L("Status value from sending request: %d with %d args"), status.Int(), aArgCount);
+
+ TheTest(status.Int() == KErrNotSupported);
+
+ CleanupStack::PopAndDestroy(buf);
+ }
+
+//This function is used in the test code to kill backupSrv or the backuplauncher process.
+// It creates a separate process to do this as killing a process requires
+// PwrMgmt capability which we don't want to grant to all test exes.
+TInt KillProcess(const TDesC& aProcessName)
+ {
+ _LIT(KProcessKiller, "t_processkiller");
+ TRequestStatus stat;
+ RProcess p;
+ TInt result = p.Create(KProcessKiller, aProcessName);
+
+ if(result == KErrNone)
+ {
+ // Asynchronous logon: completes when process terminates with process exit code
+ p.Logon(stat);
+ p.Resume();
+
+ User::WaitForRequest(stat);
+ result = p.ExitReason();
+ p.Close();
+ }
+
+ return result;
+ }
+
+TInt LaunchServer(RProcess& aServer)
+ {
+ TheTest.Printf(_L("Launching BackupServer...\n"));
+
+ TInt err = aServer.Create(KServerLauncherProcess, _L(""));
+ TheTest(err == KErrNone);
+
+ //Start server and wait until it is running
+ TRequestStatus serverStat;
+ aServer.SetJustInTime(false);
+ aServer.Resume();
+
+ aServer.Rendezvous(serverStat);
+ User::WaitForRequest(serverStat);
+
+ err = serverStat.Int();
+
+ return err;
+ }
+
+/**
+@SYMTestCaseID SYSLIB-BAFL-UT-4052
+@SYMTestCaseDesc Tests BackupServer crashes under IPC fuzzing and freezes phone
+@SYMTestPriority High
+@SYMTestActions Calls BackupServer with EBakOpCodeCloseServer with 0-4 args. Verifies that server returns KErrNotSupported.
+@SYMTestExpectedResults Server should not process the CloseServer message and should return KErrNotSupported
+*/
+LOCAL_C void Defect_INC120743L()
+ {
+ TheTest.Next (_L ("Defect_INC120743L"));
+
+ __UHEAP_MARK;
+
+ RProcess server;
+ TInt messageToTest = EBakOpCodeCloseServer;
+
+ //Clean up any chance of launcher or baksrvs still running
+ TInt err = KillProcess(KServerLauncherProcess);
+ if((err != KErrNotFound)&&(err != KErrDied))
+ {
+ User::LeaveIfError(err);
+ }
+
+ err = KillProcess(KBURServerName);
+ if((err != KErrNotFound)&&(err != KErrDied))
+ {
+ User::LeaveIfError(err);
+ }
+
+ TInt startedFlag = LaunchServer(server);
+
+ TheTest.Printf(_L("LaunchServer has returned: %d"), startedFlag);
+
+ TheTest(startedFlag == 0 || startedFlag == KErrAlreadyExists);
+
+ CTrapCleanup* cleanup=CTrapCleanup::New();
+ err=KErrNoMemory;
+
+ if (cleanup)
+ {
+ //Carry out each test with number of arguments 1 - 4
+ for(TInt argCount = 0; argCount <= 4; argCount++)
+ {
+ RIpcServerCloseTest closeTest;
+
+ TRAP(err,closeTest.RunTestL(KServerName, messageToTest, argCount));
+
+ closeTest.Close();
+ }
+
+ delete cleanup;
+ }
+
+ __UHEAP_MARKEND;
+ }
+
+/**
+@SYMTestCaseID SYSLIB-BAFL-CT-1390
+@SYMTestCaseDesc Tests BaflUtils::PersistScreenCalibration
+@SYMTestPriority Medium
+@SYMTestActions Deletes screen calibration file, calls PersistScreenCalibration()
+and checks that file now exists
+@SYMTestExpectedResults Test must not fail
+@SYMREQ REQ0000
+*/
+void Defect_DEF068052L()
+ {
+ TheTest.Next (_L (" @SYMTestCaseID:SYSLIB-BAFL-CT-1390 Defect_DEF068052L "));
+
+ __UHEAP_MARK;
+
+ User::LeaveIfError (TheFs.Connect ());
+ ::CleanupClosePushL (TheFs);
+
+ const TInt KDriveLength = 2;
+ const TInt KScreenPathLength = 26;
+ const TInt KScreenPathLengthTemp = 30;
+
+ _LIT (KDriveColon, ":");
+ _LIT (KScreen, "\\System\\Data\\Screen.DAT");
+ _LIT (KScreenTemp, "\\System\\Data\\ScreenTemp.DAT");
+
+ // Find the system drive
+ TDriveNumber systemDrive = TheFs.GetSystemDrive();
+
+ // Set up a full file path name incorporating the system drive
+ // (for example if system drive is EDriveC pathname will be:
+ // C:\System\Data\Screen.DAT)
+ TBuf<KDriveLength+KScreenPathLength> screenFilePath;
+ screenFilePath.Append(systemDrive + 'A');
+ screenFilePath.Append(KDriveColon);
+ screenFilePath.Append(KScreen);
+
+ // Set up a full file path name to make a copy of the screen.dat
+ // file.
+ TBuf<KDriveLength+KScreenPathLengthTemp> screenFilePathTemp;
+ screenFilePathTemp.Append(systemDrive + 'A');
+ screenFilePathTemp.Append(KDriveColon);
+ screenFilePathTemp.Append(KScreenTemp);
+
+ // Make a copy of the screen.dat file (if it exists)
+ BaflUtils::CopyFile(TheFs, screenFilePath, screenFilePathTemp);
+
+ // Delete the Screen.DAT file (if it exists)
+ BaflUtils::DeleteFile(TheFs, screenFilePath);
+
+ // Saving Screen settings - call API to write the screen
+ // calibration to file
+ TDigitizerCalibration calib;
+ BaflUtils::PersistScreenCalibration(calib);
+
+ // Check if screen.dat file now exists
+ TBool exists = BaflUtils::FileExists(TheFs, screenFilePath);
+ TheTest(exists);
+
+ TheTest.Printf(_L("Screen settings were saved in %S\n"), &screenFilePath);
+
+ // Cleaning up, restore files to original state
+ User::LeaveIfError(BaflUtils::DeleteFile(TheFs, screenFilePath));
+ BaflUtils::CopyFile(TheFs, screenFilePathTemp, screenFilePath);
+ BaflUtils::DeleteFile(TheFs, screenFilePathTemp);
+ CleanupStack::PopAndDestroy (&::TheFs);
+
+ __UHEAP_MARKEND;
+ }
+
+/**
+@SYMTestCaseID SYSLIB-BAFL-CT-0487
+@SYMTestCaseDesc Tests for defect number INC045169L
+@SYMTestPriority High
+@SYMTestActions Tests for creation of files
+@SYMTestExpectedResults Tests must not fail
+@SYMREQ REQ0000
+*/
+void Defect_INC045169L()
+ {
+ TheTest.Next (_L (" @SYMTestCaseID:SYSLIB-BAFL-CT-0487 Defect_INC045169L "));
+
+ __UHEAP_MARK;
+
+ // find out the number of open handles
+ TInt startProcessHandleCount;
+ TInt startThreadHandleCount;
+ RThread ().HandleCount (startProcessHandleCount, startThreadHandleCount);
+
+ //
+ // The Test Setup
+
+ User::LeaveIfError (TheFs.Connect ());
+ ::CleanupClosePushL (TheFs);
+
+ //
+ // The Test Begins...
+
+
+ // Our test diectory and files...
+ _LIT (KDirectory, "C:\\System\\Data\\");
+
+ // ++++++++++++++
+
+ // When creating test file names be careful to use different
+ // combinations of charaters as you may get ambiguity!
+ // i.e. '.aaa' will find files '.a' or 'a' if on disk.
+ // similarly, 'abc158' will find files 'abc' or 'abc.'.
+ // Also, file name ending in a period will have them
+ // stripped off by the Fs, so 'abcd.' will give you 'abcd'
+ // Finally, don't have like names like 'abc.rsc' and 'abc.r'
+
+ // Failure cases
+ _LIT (KFilename1, "c:"); // not supported
+ _LIT (KFilename2, "x"); // not supported
+ _LIT (KFilename3, "C:\\System\\Data\\a"); // not supported
+ _LIT (KFilename4, "C:\\System\\Data\\ab"); // not supported
+ _LIT (KFilename5, "C:\\System\\Data\\i.j"); // no 'i.01' available
+ _LIT (KFilename6, "C:\\System\\Data\\abc.r12345678901234567890"); // suffix too large
+ _LIT (KFilename7, "C:\\System\\Data\\"); // not supported
+
+ // Successful cases
+ _LIT (KFilename10, "C:\\System\\Data\\cde");
+ _LIT (KFilename11, "C:\\System\\Data\\abc158");
+ _LIT (KFilename12, "C:\\System\\Data\\C01abc001");
+ _LIT (KFilename13, "C:\\System\\Data\\0123456789.012");
+ _LIT (KFilename14, "C:\\System\\Data\\0123");
+ _LIT (KFilename15, "C:\\System\\Data\\0123456789012");
+ _LIT (KFilename16, "C:\\System\\Data\\C.01a1");
+ _LIT (KFilename17, "C:\\System\\Data\\C.a0a1");
+ _LIT (KFilename18, "C:\\System\\Data\\.b");
+ _LIT (KFilename19, "C:\\System\\Data\\.ccc");
+ _LIT (KFilename20, "C:\\System\\Data\\rfg.3a");
+ _LIT (KFilename21, "C:\\System\\Data\\abc.r158");
+ _LIT (KFilename22, "C:\\System\\Data\\abc.rsc");
+ _LIT (KFilename23, "C:\\System\\Data\\efg.r");
+ _LIT (KFilename24, "C:\\System\\Data\\klmn.");
+ _LIT (KFilename25, "C:\\System\\Data\\jhgdfgd.123456789abc");
+ _LIT (KFilename26, "\\abc.r158");
+ _LIT (KFilename27, "abc.r158");
+ _LIT (KFilename28, "c:abc.r158");
+
+ // ++++++++++++++
+
+ // ELangAmerican
+ _LIT (KLocale, "ELOCL.10");
+ _LIT (KNearestLang, "C:\\System\\Data\\abc.r10");
+
+ // Tidy the files if there...
+ // KFilename1 can't be created
+ BaflUtils::DeleteFile (TheFs, KFilename2);
+ BaflUtils::DeleteFile (TheFs, KFilename3);
+ BaflUtils::DeleteFile (TheFs, KFilename4);
+ BaflUtils::DeleteFile (TheFs, KFilename5);
+ BaflUtils::DeleteFile (TheFs, KFilename6);
+
+ // Do not delete KFileName7, there may be other
+ // files in this directory unrelated to this test
+ // which are required by other tests.
+ // See defect DEF108808
+ // BaflUtils::DeleteFile (TheFs, KFilename7);
+
+ BaflUtils::DeleteFile (TheFs, KFilename10);
+ BaflUtils::DeleteFile (TheFs, KFilename11);
+ BaflUtils::DeleteFile (TheFs, KFilename12);
+ BaflUtils::DeleteFile (TheFs, KFilename13);
+ BaflUtils::DeleteFile (TheFs, KFilename14);
+ BaflUtils::DeleteFile (TheFs, KFilename15);
+ BaflUtils::DeleteFile (TheFs, KFilename16);
+ BaflUtils::DeleteFile (TheFs, KFilename17);
+ BaflUtils::DeleteFile (TheFs, KFilename18);
+ BaflUtils::DeleteFile (TheFs, KFilename19);
+ BaflUtils::DeleteFile (TheFs, KFilename20);
+ BaflUtils::DeleteFile (TheFs, KFilename21);
+ BaflUtils::DeleteFile (TheFs, KFilename22);
+ BaflUtils::DeleteFile (TheFs, KFilename23);
+#ifdef __EPOC32__
+ BaflUtils::DeleteFile (TheFs, KFilename24);
+#else
+ // Windows strips off trailing periods
+ BaflUtils::DeleteFile (TheFs, _L("C:\\System\\Data\\klmn"));
+#endif
+ BaflUtils::DeleteFile (TheFs, KFilename25);
+ BaflUtils::DeleteFile (TheFs, KFilename26);
+ BaflUtils::DeleteFile (TheFs, KFilename27);
+ BaflUtils::DeleteFile (TheFs, KFilename28);
+ BaflUtils::DeleteFile (TheFs, KNearestLang);
+
+ // Confirm the prerequisites for this test...
+ if (!BaflUtils::PathExists (TheFs, KDirectory))
+ {
+ BaflUtils::EnsurePathExistsL(TheFs, KDirectory);
+ }
+
+ // KFilename1 can't be created
+ TheTest (BaflUtils::FileExists (TheFs, KFilename2) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename3) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename4) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename5) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename6) == EFalse);
+ // KFilename7 can't be created, not a file
+
+ TheTest (BaflUtils::FileExists (TheFs, KFilename10) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename11) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename12) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename13) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename14) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename15) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename16) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename17) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename18) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename19) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename20) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename21) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename22) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename23) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename24) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename25) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename26) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename27) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KFilename28) == EFalse);
+ TheTest (BaflUtils::FileExists (TheFs, KNearestLang) == EFalse);
+
+ // Create the files...
+ RFile rFile;
+ // KFilename1 can't be created
+ rFile.Create (TheFs, KFilename2, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename3, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename4, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename5, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename6, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename7, EFileRead);
+ rFile.Close ();
+
+ rFile.Create (TheFs, KFilename10, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename11, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename12, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename13, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename14, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename15, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename16, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename17, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename18, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename19, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename20, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename21, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename22, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename23, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename24, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename25, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename26, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename27, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KFilename28, EFileRead);
+ rFile.Close ();
+ rFile.Create (TheFs, KNearestLang, EFileRead);
+ rFile.Close ();
+
+ TBuf <256> filename (KFilename1);
+
+ // Test the defect...
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename1, &filename);
+ TheTest(filename == KFilename1);
+
+ filename.Copy (KFilename2);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename2, &filename);
+ TheTest(filename == _L("x"));
+
+ filename.Copy (KFilename3);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename3, &filename);
+ TheTest(filename == KFilename3);
+
+ filename.Copy (KFilename4);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename4, &filename);
+ TheTest(filename == KFilename4);
+
+ filename.Copy (KFilename5);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename5, &filename);
+ TheTest(filename == KFilename5);
+
+ filename.Copy (KFilename6);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename6, &filename);
+ TheTest(filename == KFilename6);
+
+ filename.Copy (KFilename7);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename7, &filename);
+ TheTest(filename == KFilename7);
+
+
+
+ filename.Copy (KFilename10);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename10, &filename);
+ TheTest(filename == KFilename10);
+
+ filename.Copy (KFilename11);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename11, &filename);
+ TheTest(filename == KFilename11);
+
+ filename.Copy (KFilename12);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename12, &filename);
+ TheTest(filename == KFilename12);
+
+ filename.Copy (KFilename13);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename13, &filename);
+ TheTest(filename == KFilename13);
+
+ filename.Copy (KFilename14);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename14, &filename);
+ TheTest(filename == KFilename14);
+
+ filename.Copy (KFilename15);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename15, &filename);
+ TheTest(filename == KFilename15);
+
+ filename.Copy (KFilename16);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename16, &filename);
+ TheTest(filename == KFilename16);
+
+ filename.Copy (KFilename17);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename17, &filename);
+ TheTest(filename == KFilename17);
+
+ filename.Copy (KFilename18);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename18, &filename);
+ TheTest(filename == KFilename18);
+
+ filename.Copy (KFilename19);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename19, &filename);
+ TheTest(filename == KFilename19);
+
+ filename.Copy (KFilename20);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename20, &filename);
+ TheTest(filename == KFilename20);
+
+ filename.Copy (KFilename21);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename21, &filename);
+ TheTest(filename == KFilename21);
+
+ filename.Copy (KFilename22);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename22, &filename);
+ TheTest(filename == KFilename22);
+
+ filename.Copy (KFilename23);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename23, &filename);
+ TheTest(filename == KFilename23);
+
+ filename.Copy (KFilename24);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename24, &filename);
+ TheTest(filename == KFilename24);
+
+ filename.Copy (KFilename25);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename25, &filename);
+ TheTest(filename == KFilename25);
+
+ filename.Copy (KFilename26);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename26, &filename);
+ TheTest(filename == KFilename26);
+
+ filename.Copy (KFilename27);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename27, &filename);
+ TheTest(filename == KFilename27);
+
+ filename.Copy (KFilename28);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename28, &filename);
+ TheTest(filename == KFilename28);
+
+
+ // Store the original locale settings so they can be restored at the
+ // end of the test.
+
+ TExtendedLocale originalLocale;
+ originalLocale.LoadSystemSettings();
+
+ // Change locale
+ TExtendedLocale newLocale;
+ TBuf<50> libraryName;
+
+ libraryName.Format(KLocale);
+
+ TInt err = newLocale.LoadLocale(libraryName);
+ User::LeaveIfError (err);
+
+ newLocale.SaveSystemSettings();
+ User::After (5000000);
+
+ filename.Copy (KFilename1);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename1, &filename);
+ TheTest(filename == KFilename1);
+
+ filename.Copy (KFilename2);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename2, &filename);
+ TheTest(filename == _L("x"));
+
+ filename.Copy (KFilename3);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename3, &filename);
+ TheTest(filename == KFilename3);
+
+ filename.Copy (KFilename4);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename4, &filename);
+ TheTest(filename == KFilename4);
+
+ filename.Copy (KFilename5);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename5, &filename);
+ TheTest(filename == KFilename5);
+
+ filename.Copy (KFilename6);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename6, &filename);
+ TheTest(filename == KFilename6);
+
+ filename.Copy (KFilename7);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename7, &filename);
+ TheTest(filename == KFilename7);
+
+
+
+ filename.Copy (KFilename10);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename10, &filename);
+ TheTest(filename == KFilename10);
+
+ filename.Copy (KFilename11);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename11, &filename);
+ TheTest(filename == KFilename11);
+
+ filename.Copy (KFilename12);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename12, &filename);
+ TheTest(filename == KFilename12);
+
+ filename.Copy (KFilename13);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename13, &filename);
+ TheTest(filename == KFilename13);
+
+ filename.Copy (KFilename14);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename14, &filename);
+ TheTest(filename == KFilename14);
+
+ filename.Copy (KFilename15);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename15, &filename);
+ TheTest(filename == KFilename15);
+
+ filename.Copy (KFilename16);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename16, &filename);
+ TheTest(filename == KFilename16);
+
+ filename.Copy (KFilename17);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename17, &filename);
+ TheTest(filename == KFilename17);
+
+ filename.Copy (KFilename18);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename18, &filename);
+ TheTest(filename == KFilename18);
+
+ filename.Copy (KFilename19);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename19, &filename);
+ TheTest(filename == KFilename19);
+
+ filename.Copy (KFilename20);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename20, &filename);
+ TheTest(filename == KFilename20);
+
+ filename.Copy (KFilename21);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename21, &filename);
+ TheTest(filename == KNearestLang);
+
+ filename.Copy (KFilename22);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename22, &filename);
+ TheTest(filename == KNearestLang);
+
+ filename.Copy (KFilename23);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename23, &filename);
+ TheTest(filename == KFilename23);
+
+ filename.Copy (KFilename24);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename24, &filename);
+ TheTest(filename == KFilename24);
+
+ filename.Copy (KFilename25);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename25, &filename);
+ TheTest(filename == KFilename25);
+
+ filename.Copy (KFilename26);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename26, &filename);
+ TheTest(filename == KFilename26);
+
+ filename.Copy (KFilename27);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename27, &filename);
+ TheTest(filename == KFilename27);
+
+ filename.Copy (KFilename28);
+ BaflUtils::NearestLanguageFile (TheFs, filename);
+ TheTest.Printf (_L ("The NearestLanguageFile for %S is %S\n"), &KFilename28, &filename);
+ TheTest(filename == KFilename28);
+
+ // Tidy the files...
+ // KFilename1 can't be created
+ BaflUtils::DeleteFile (TheFs, KFilename2);
+ BaflUtils::DeleteFile (TheFs, KFilename3);
+ BaflUtils::DeleteFile (TheFs, KFilename4);
+ BaflUtils::DeleteFile (TheFs, KFilename5);
+ BaflUtils::DeleteFile (TheFs, KFilename6);
+
+ // Do not delete KFileName7, there may be other
+ // files in this directory unrelated to this test
+ // which are required by other tests.
+ // See defect DEF108808
+ // BaflUtils::DeleteFile (TheFs, KFilename7);
+
+ BaflUtils::DeleteFile (TheFs, KFilename10);
+ BaflUtils::DeleteFile (TheFs, KFilename11);
+ BaflUtils::DeleteFile (TheFs, KFilename12);
+ BaflUtils::DeleteFile (TheFs, KFilename13);
+ BaflUtils::DeleteFile (TheFs, KFilename14);
+ BaflUtils::DeleteFile (TheFs, KFilename15);
+ BaflUtils::DeleteFile (TheFs, KFilename16);
+ BaflUtils::DeleteFile (TheFs, KFilename17);
+ BaflUtils::DeleteFile (TheFs, KFilename18);
+ BaflUtils::DeleteFile (TheFs, KFilename19);
+ BaflUtils::DeleteFile (TheFs, KFilename20);
+ BaflUtils::DeleteFile (TheFs, KFilename21);
+ BaflUtils::DeleteFile (TheFs, KFilename22);
+ BaflUtils::DeleteFile (TheFs, KFilename23);
+#ifdef __EPOC32__
+ BaflUtils::DeleteFile (TheFs, KFilename24);
+#else
+ // Windows strips off trailing periods
+ BaflUtils::DeleteFile (TheFs, _L("C:\\System\\Data\\klmn"));
+#endif
+ BaflUtils::DeleteFile (TheFs, KFilename25);
+ BaflUtils::DeleteFile (TheFs, KFilename26);
+ BaflUtils::DeleteFile (TheFs, KFilename27);
+ BaflUtils::DeleteFile (TheFs, KFilename28);
+ BaflUtils::DeleteFile (TheFs, KNearestLang);
+
+ // Restore the original locale settings.
+ originalLocale.SaveSystemSettings();
+
+ CleanupStack::PopAndDestroy (&::TheFs);
+
+ // The Test Ends...
+ //
+
+ // check that no handles have leaked
+ TInt endProcessHandleCount;
+ TInt endThreadHandleCount;
+ RThread ().HandleCount (endProcessHandleCount, endThreadHandleCount);
+
+ TheTest (startThreadHandleCount == endThreadHandleCount);
+
+ __UHEAP_MARKEND;
+ }
+
+//===============================================================================
+
+/**
+Initialise the cleanup stack and active scheduler
+*/
+LOCAL_C void SetupL ()
+ {
+ TheTrapCleanup = CTrapCleanup::New ();
+ User::LeaveIfNull (TheTrapCleanup);
+
+ // Construct and install the active scheduler
+ TheActiveScheduler = new (ELeave) CActiveScheduler;
+ CActiveScheduler::Install (TheActiveScheduler);
+ }
+
+/**
+Cleanup
+*/
+LOCAL_C void CleanupL ()
+ {
+ delete TheActiveScheduler;
+ delete TheTrapCleanup;
+ }
+
+
+/**
+Invoke the tests
+*/
+LOCAL_C void DoTestsL ()
+ {
+ Defect_INC045169L ();
+ Defect_DEF068052L ();
+
+ Defect_INC120743L ();
+ }
+
+GLDEF_C TInt E32Main ()
+ {
+ __UHEAP_MARK;
+
+ TheTest.Printf (_L ("\n"));
+ TheTest.Title ();
+ TheTest.Start (_L("Defect Tests "));
+
+ TRAPD (err, SetupL ());
+ TheTest (err == KErrNone);
+
+ TRAP (err, DoTestsL ());
+ TheTest (err == KErrNone);
+
+ CleanupL ();
+
+ TheTest.End ();
+ TheTest.Close ();
+
+ __UHEAP_MARKEND;
+ return (KErrNone);
+ }