// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// A very boring piece of test code that tests a few filenames in various
// languages to make sure that support exists.
// Current languages:
// Polish, Czech, Hungarian, Greek.
//
//
#ifdef __VC32__
// Solve compilation problem caused by non-English locale
#pragma setlocale("english")
#endif
// Need to define this macro to use error-code macros in e32test.h
#define __E32TEST_EXTENSION__
#include <e32test.h>
#include <f32file.h>
#include "f32_test_utils.h"
using namespace F32_Test_Utils;
#include "t_server.h"
_LIT(KPolish1, "Jugos\x142\x61wii");
_LIT(KPolish1Match1, "jUGOS\x141\x41WII");
_LIT(KPolish1Match2, "jUGOS\x141\x41*WII");
_LIT(KPolish1Match3, "jUGOS\x141*i");
_LIT(KPolish1Match4, "Ju*wIi");
_LIT(KPolish1Match5, "jugos?awii");
_LIT(KPolish1NonMatch1, "jugoslawii");
_LIT(KPolish1NonMatch2, "jugosl*awii");
_LIT(KPolish1NonMatch3, "jugosl?awii");
_LIT(KPolish2, "KSI\x104Z\x307KI");
_LIT(KPolish2Match1, "ksia\x328z\x307ki");
_LIT(KPolish2Match2, "ksi?z\x307ki");
_LIT(KPolish2Match3, "ksia\x328?ki");
_LIT(KPolish2Match4, "ksi\x105\x17Cki");
_LIT(KPolish2NonMatch1, "ksiazki");
_LIT(KPolish2NonMatch2, "ksia*z\x307ki");
_LIT(KPolish2NonMatch3, "ksia\x328z*ki");
_LIT(KCzech1, "VY\x301KAZU\x30A");
_LIT(KCzech1Match1, "V\xDDKAZ\x16E");
_LIT(KCzech1Match2, "v\xFDkaz\x16F");
_LIT(KCzech1Match3, "*\x16F");
_LIT(KCzech1NonMatch1, "VY?KAZU??");
_LIT(KCzech2, "\x10Dtvrtlet\xED");
_LIT(KCzech2Match1, "c\x30Ctvrtleti\x301");
_LIT(KCzech2Match2, "?tvrtlet?");
_LIT(KHungarian1, "KO\x308ZE\x301RDEKU\x30B");
_LIT(KHungarian1Match1, "K\xD6Z\xC9RDEK\x170");
_LIT(KHungarian1Match2, "k\xF6z\xE9rdek\x171");
_LIT(KHungarian1Match3, "k?z?rdek?");
_LIT(KGreek1, "\x39B\x395\x3A6\x39A\x391\x3A3");
_LIT(KGreek1Match1, "\x3BB\x3B5\x3C6\x3BA\x3B1\x3C2");
_LIT(KGreek1Match2, "\x3BB\x3B5\x3C6\x3BA\x3B1\x3C3");
_LIT(KGreek1Match3, "??????");
CTrapCleanup* TrapCleanup;
RTest test(_L("T_FileMatch: testing file names in various languages."));
_LIT(KPath, "\\T_FileMatch\\");
TInt gDriveNum = -1;
void Begin()
{
TInt r = TheFs.MkDirAll(KPath);
test_Assert(r == KErrNone || r == KErrAlreadyExists, test.Printf(_L("MkDirAll returned %d\n"),r));
}
void CreateFile(const TDesC& aFileName)
{
TInt r;
TFileName name;
name = KPath;
name.Append(aFileName);
RFile file;
r = file.Create(TheFs, name, EFileShareAny);
test_KErrNone(r);
file.Close();
}
void DeleteFile(const TDesC& aFileName)
{
TInt r;
TFileName name;
name = KPath;
name.Append(aFileName);
r = TheFs.Delete(name);
test_KErrNone(r);
}
void CheckMatch(const TDesC& aFileName)
{
TInt r;
RDir dir;
TFileName name;
name = KPath;
name.Append(aFileName);
r = dir.Open(TheFs, name, KEntryAttNormal);
test_KErrNone(r);
TEntry entry;
test(dir.Read(entry) == KErrNone);
dir.Close();
}
void CheckNonMatch(const TDesC& aFileName)
{
TInt r;
RDir dir;
TFileName name;
name = KPath;
name.Append(aFileName);
r = dir.Open(TheFs, name, KEntryAttNormal);
test_KErrNone(r);
TEntry entry;
test(dir.Read(entry) == KErrEof);
dir.Close();
}
void TestFilenameMatches()
{
test.Next(_L("TestFilenameMatches()"));
Begin();
CreateFile(KPolish1);
CheckMatch(KPolish1Match1);
CheckMatch(KPolish1Match2);
CheckMatch(KPolish1Match3);
CheckMatch(KPolish1Match4);
CheckMatch(KPolish1Match5);
CheckNonMatch(KPolish1NonMatch1);
CheckNonMatch(KPolish1NonMatch2);
CheckNonMatch(KPolish1NonMatch3);
DeleteFile(KPolish1);
CreateFile(KPolish2);
CheckMatch(KPolish2Match1);
CheckMatch(KPolish2Match2);
CheckMatch(KPolish2Match3);
CheckMatch(KPolish2Match4);
CheckNonMatch(KPolish2NonMatch1);
CheckNonMatch(KPolish2NonMatch2);
CheckNonMatch(KPolish2NonMatch3);
DeleteFile(KPolish2);
CreateFile(KCzech1);
CheckMatch(KCzech1Match1);
CheckMatch(KCzech1Match2);
CheckMatch(KCzech1Match3);
CheckNonMatch(KCzech1NonMatch1);
DeleteFile(KCzech1);
CreateFile(KCzech2);
CheckMatch(KCzech2Match1);
CheckMatch(KCzech2Match2);
DeleteFile(KCzech2);
CreateFile(KHungarian1);
CheckMatch(KHungarian1Match1);
CheckMatch(KHungarian1Match2);
CheckMatch(KHungarian1Match3);
DeleteFile(KHungarian1);
CreateFile(KGreek1);
CheckMatch(KGreek1Match1);
CheckMatch(KGreek1Match2);
CheckMatch(KGreek1Match3);
DeleteFile(KGreek1);
}
void CallTestsL(void)
{
//-- set up console output
F32_Test_Utils::SetConsole(test.Console());
TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum);
test(nRes==KErrNone);
PrintDrvInfo(TheFs, gDriveNum);
if(Is_Win32(TheFs, gDriveNum) || Is_Fat(TheFs, gDriveNum) || Is_Lffs(TheFs, gDriveNum))
{
TestFilenameMatches();
}
else
{
test.Printf(_L("This test can't be performed on this file system. Skipping.\n"));
}
}