kerneltest/f32test/locl/t_filematch.cpp
changeset 0 a41df078684a
child 175 5af6c74cd793
equal deleted inserted replaced
-1:000000000000 0:a41df078684a
       
     1 // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // A very boring piece of test code that tests a few filenames in various
       
    15 // languages to make sure that support exists.
       
    16 // Current languages:
       
    17 // Polish, Czech, Hungarian, Greek.
       
    18 // 
       
    19 //
       
    20 
       
    21 #ifdef __VC32__
       
    22     // Solve compilation problem caused by non-English locale
       
    23     #pragma setlocale("english")
       
    24 #endif
       
    25 
       
    26 // Need to define this macro to use error-code macros in e32test.h
       
    27 #define __E32TEST_EXTENSION__
       
    28 
       
    29 #include <e32test.h>
       
    30 #include <f32file.h>
       
    31 
       
    32 #include "f32_test_utils.h"
       
    33 
       
    34 using namespace F32_Test_Utils;
       
    35 
       
    36 #include "t_server.h"
       
    37 
       
    38 _LIT(KPolish1, "Jugos\x142\x61wii");
       
    39 _LIT(KPolish1Match1, "jUGOS\x141\x41WII");
       
    40 _LIT(KPolish1Match2, "jUGOS\x141\x41*WII");
       
    41 _LIT(KPolish1Match3, "jUGOS\x141*i");
       
    42 _LIT(KPolish1Match4, "Ju*wIi");
       
    43 _LIT(KPolish1Match5, "jugos?awii");
       
    44 _LIT(KPolish1NonMatch1, "jugoslawii");
       
    45 _LIT(KPolish1NonMatch2, "jugosl*awii");
       
    46 _LIT(KPolish1NonMatch3, "jugosl?awii");
       
    47 _LIT(KPolish2, "KSI\x104Z\x307KI");
       
    48 _LIT(KPolish2Match1, "ksia\x328z\x307ki");
       
    49 _LIT(KPolish2Match2, "ksi?z\x307ki");
       
    50 _LIT(KPolish2Match3, "ksia\x328?ki");
       
    51 _LIT(KPolish2Match4, "ksi\x105\x17Cki");
       
    52 _LIT(KPolish2NonMatch1, "ksiazki");
       
    53 _LIT(KPolish2NonMatch2, "ksia*z\x307ki");
       
    54 _LIT(KPolish2NonMatch3, "ksia\x328z*ki");
       
    55 _LIT(KCzech1, "VY\x301KAZU\x30A");
       
    56 _LIT(KCzech1Match1, "V\xDDKAZ\x16E");
       
    57 _LIT(KCzech1Match2, "v\xFDkaz\x16F");
       
    58 _LIT(KCzech1Match3, "*\x16F");
       
    59 _LIT(KCzech1NonMatch1, "VY?KAZU??");
       
    60 _LIT(KCzech2, "\x10Dtvrtlet\xED");
       
    61 _LIT(KCzech2Match1, "c\x30Ctvrtleti\x301");
       
    62 _LIT(KCzech2Match2, "?tvrtlet?");
       
    63 _LIT(KHungarian1, "KO\x308ZE\x301RDEKU\x30B");
       
    64 _LIT(KHungarian1Match1, "K\xD6Z\xC9RDEK\x170");
       
    65 _LIT(KHungarian1Match2, "k\xF6z\xE9rdek\x171");
       
    66 _LIT(KHungarian1Match3, "k?z?rdek?");
       
    67 _LIT(KGreek1, "\x39B\x395\x3A6\x39A\x391\x3A3");
       
    68 _LIT(KGreek1Match1, "\x3BB\x3B5\x3C6\x3BA\x3B1\x3C2");
       
    69 _LIT(KGreek1Match2, "\x3BB\x3B5\x3C6\x3BA\x3B1\x3C3");
       
    70 _LIT(KGreek1Match3, "??????");
       
    71 
       
    72 CTrapCleanup* TrapCleanup;
       
    73 RTest test(_L("T_FileMatch: testing file names in various languages."));
       
    74 
       
    75 _LIT(KPath, "\\T_FileMatch\\");
       
    76 
       
    77 TInt gDriveNum = -1;
       
    78 
       
    79 void Begin()
       
    80 	{
       
    81 	TInt r = TheFs.MkDirAll(KPath);
       
    82 	test_Assert(r == KErrNone || r == KErrAlreadyExists, test.Printf(_L("MkDirAll returned %d\n"),r));
       
    83 	}
       
    84 
       
    85 void CreateFile(const TDesC& aFileName)
       
    86 	{
       
    87 	TInt r;
       
    88 	TFileName name;
       
    89 	name = KPath;
       
    90 	name.Append(aFileName);
       
    91 	RFile file;
       
    92 	r = file.Create(TheFs, name, EFileShareAny);
       
    93 	test_KErrNone(r);
       
    94 	file.Close();
       
    95 	}
       
    96 
       
    97 void DeleteFile(const TDesC& aFileName)
       
    98 	{
       
    99 	TInt r;
       
   100 	TFileName name;
       
   101 	name = KPath;
       
   102 	name.Append(aFileName);
       
   103 	r = TheFs.Delete(name);
       
   104 	test_KErrNone(r);
       
   105 	}
       
   106 
       
   107 void CheckMatch(const TDesC& aFileName)
       
   108 	{
       
   109 	TInt r;
       
   110 	RDir dir;
       
   111 	TFileName name;
       
   112 	name = KPath;
       
   113 	name.Append(aFileName);
       
   114 	r = dir.Open(TheFs, name, KEntryAttNormal);
       
   115 	test_KErrNone(r);
       
   116 	TEntry entry;
       
   117 	test(dir.Read(entry) == KErrNone);
       
   118 	dir.Close();
       
   119 	}
       
   120 
       
   121 void CheckNonMatch(const TDesC& aFileName)
       
   122 	{
       
   123 	TInt r;
       
   124 	RDir dir;
       
   125 	TFileName name;
       
   126 	name = KPath;
       
   127 	name.Append(aFileName);
       
   128 	r = dir.Open(TheFs, name, KEntryAttNormal);
       
   129 	test_KErrNone(r);
       
   130 	TEntry entry;
       
   131 	test(dir.Read(entry) == KErrEof);
       
   132 	dir.Close();
       
   133 	}
       
   134 
       
   135 void TestFilenameMatches()
       
   136 	{
       
   137 	test.Next(_L("TestFilenameMatches()"));
       
   138     
       
   139     Begin();
       
   140 	CreateFile(KPolish1);
       
   141 	CheckMatch(KPolish1Match1);
       
   142 	CheckMatch(KPolish1Match2);
       
   143 	CheckMatch(KPolish1Match3);
       
   144 	CheckMatch(KPolish1Match4);
       
   145 	CheckMatch(KPolish1Match5);
       
   146 	CheckNonMatch(KPolish1NonMatch1);
       
   147 	CheckNonMatch(KPolish1NonMatch2);
       
   148 	CheckNonMatch(KPolish1NonMatch3);
       
   149 	DeleteFile(KPolish1);
       
   150 	CreateFile(KPolish2);
       
   151 	CheckMatch(KPolish2Match1);
       
   152 	CheckMatch(KPolish2Match2);
       
   153 	CheckMatch(KPolish2Match3);
       
   154 	CheckMatch(KPolish2Match4);
       
   155 	CheckNonMatch(KPolish2NonMatch1);
       
   156 	CheckNonMatch(KPolish2NonMatch2);
       
   157 	CheckNonMatch(KPolish2NonMatch3);
       
   158 	DeleteFile(KPolish2);
       
   159 	CreateFile(KCzech1);
       
   160 	CheckMatch(KCzech1Match1);
       
   161 	CheckMatch(KCzech1Match2);
       
   162 	CheckMatch(KCzech1Match3);
       
   163 	CheckNonMatch(KCzech1NonMatch1);
       
   164 	DeleteFile(KCzech1);
       
   165 	CreateFile(KCzech2);
       
   166 	CheckMatch(KCzech2Match1);
       
   167 	CheckMatch(KCzech2Match2);
       
   168 	DeleteFile(KCzech2);
       
   169 	CreateFile(KHungarian1);
       
   170 	CheckMatch(KHungarian1Match1);
       
   171 	CheckMatch(KHungarian1Match2);
       
   172 	CheckMatch(KHungarian1Match3);
       
   173 	DeleteFile(KHungarian1);
       
   174 	CreateFile(KGreek1);
       
   175 	CheckMatch(KGreek1Match1);
       
   176 	CheckMatch(KGreek1Match2);
       
   177 	CheckMatch(KGreek1Match3);
       
   178 	DeleteFile(KGreek1);
       
   179     }
       
   180 
       
   181 void CallTestsL(void)
       
   182 	{
       
   183     //-- set up console output 
       
   184     F32_Test_Utils::SetConsole(test.Console()); 
       
   185     
       
   186     TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum);
       
   187     test(nRes==KErrNone);
       
   188     
       
   189     PrintDrvInfo(TheFs, gDriveNum);
       
   190 
       
   191     if(Is_Win32(TheFs, gDriveNum) || Is_Fat(TheFs, gDriveNum) || Is_Lffs(TheFs, gDriveNum))
       
   192         {
       
   193 	    TestFilenameMatches();
       
   194         }
       
   195     else
       
   196         {
       
   197         test.Printf(_L("This test can't be performed on this file system. Skipping.\n"));
       
   198         }
       
   199 
       
   200 	}
       
   201