os/kernelhwsrv/kerneltest/f32test/locl/t_filematch.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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