kerneltest/e32test/buffer/t_buf.cpp
changeset 0 a41df078684a
child 43 c1f20ce4abcf
equal deleted inserted replaced
-1:000000000000 0:a41df078684a
       
     1 // Copyright (c) 1994-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 // e32test\buffer\t_buf.cpp
       
    15 // Overview:
       
    16 // Test methods of the TBuf16, TBuf8, TBuf template class.
       
    17 // API Information:
       
    18 // TBuf16, TBuf8, TBuf.
       
    19 // Details :
       
    20 // - Create some 16 bit modifiable descriptors, 8 bit modifiable descriptors
       
    21 // of fixed length, Build-independent modifiable descriptors, initialize 
       
    22 // with different strings and check for
       
    23 // - Comparison operators,
       
    24 // - Property access methods,
       
    25 // - Fill & swap methods,
       
    26 // - Conversion methods,
       
    27 // - Comparison methods,
       
    28 // - Pattern Matching methods,
       
    29 // - Pattern Locating methods,
       
    30 // - Copying methods, 
       
    31 // - Find, FindC, FindF methods,
       
    32 // - Repeat, Trim, TrimLeft, TrimRight, Insert, Delete, Left,
       
    33 // Right, Mid methods,
       
    34 // - Formatting methods,
       
    35 // - Replace methods are as expected.
       
    36 // - Construct some descriptors with buffer length, string and buffer reference and
       
    37 // verify that they are created successfully.
       
    38 // - Test assignment operators and comparison operators for different descriptors.
       
    39 // - Initialize some descriptors and check descriptors' maximum length, length and 
       
    40 // size are as expected. 
       
    41 // - Check Fill and Swap methods are as expected.
       
    42 // - Test Fold, Collate, LowerCase, UpperCase methods are as expected.
       
    43 // - Test Comparison methods are as expected.
       
    44 // - Test pattern matching for simple string, wild cards with collated comparison. Verify that the 
       
    45 // return value is KErrNotFound when pattern doesn't match.
       
    46 // - Check Locating methods by searching character in forward and backward direction and 
       
    47 // verify the return value is KErrNotFound when unavailable character is searched.
       
    48 // - Check copying strings and converting those into lower and upper case strings are
       
    49 // as expected.
       
    50 // - Check Find methods by searching string and verify the return value is KErrNotFound when 
       
    51 // unavailable string is searched.
       
    52 // - Check Repeat, Trim, Insert and Delete methods are as expected.
       
    53 // - Check the formatting operations are as expected.
       
    54 // - Check integer to decimal character representation is as expected.
       
    55 // - Check integer to character representation with different number system is as expected.
       
    56 // - Check string formatting with variable parameter list is as expected
       
    57 // - Check Replace method by replacing string at different places in a string is as expected.
       
    58 // - Check the conversion of real numbers, extended precision real numbers into string
       
    59 // format is as expected.
       
    60 // - Check Format and FormatList methods are as expected.
       
    61 // - Check Format of TReal is as expected.
       
    62 // - Check the non-leaving and leaving descriptors overflow handlers are as expected. 
       
    63 // Platforms/Drives/Compatibility:
       
    64 // All 
       
    65 // Assumptions/Requirement/Pre-requisites:
       
    66 // Failures and causes:
       
    67 // Base Port information:
       
    68 // 
       
    69 //
       
    70 
       
    71 #include <e32test.h>
       
    72 #include <e32math.h>
       
    73 #include <hal.h>
       
    74 #include <hal_data.h>
       
    75 #include <hal_data.h>
       
    76 #include <e32svr.h>
       
    77 
       
    78 #ifdef __VC32__
       
    79     // Solve compilation problem caused by non-English locale
       
    80     #pragma setlocale("english")
       
    81 #endif
       
    82 
       
    83 LOCAL_D RTest test(_L("T_BUF"));
       
    84 
       
    85 #pragma warning(disable: 4127) // disabling warning "conditional expression is constant"
       
    86 #pragma warning(disable: 4310) // disabling warning "cast truncates constant value"
       
    87 
       
    88 #undef _TL
       
    89 #define _TL(a) DESTEMPLATE((S*)RTest::String(sizeof(S),(TText8*)a,(TText16*)L ## a)) 
       
    90 #undef _TS
       
    91 #define _TS(a) ((const S*)RTest::String(sizeof(S),(TText8*)a,(TText16*)L ## a)) 
       
    92 
       
    93 template<class T,class S,class DESTEMPLATE>	
       
    94 class TestTBuf
       
    95 	{
       
    96 public:
       
    97 	TestTBuf(TInt aLength); // Test class constructor.
       
    98 	void Test1();   // Tests all functions of the class.
       
    99 	void Test2();   // Tests all constructors.
       
   100 	void Test3();	// Tests all assignment operators
       
   101 	void Test4();	// Tests all comparison operators
       
   102 	void Test5();	// Tests all property access
       
   103 	void Test6();	// Tests all fill and swap
       
   104 	void Test7();	// Tests all conversion 
       
   105 	void Test8();	// Tests all comparison
       
   106 	void Test9();	// Tests all matching
       
   107 	void Test10();	// Tests all locating
       
   108 	void Test11();	// Tests all Copying
       
   109 	void Test12();	// Tests all finding
       
   110 	void Test13();	// Tests all basic like ops
       
   111 	void Test14();  // Tests all formating
       
   112 	void Test15();  // Tests all replacing
       
   113 	void test_TBuf(); // Test all classes
       
   114 protected:
       
   115 	void Test1List(T* a,T* b,...);
       
   116 	void Test14_ReorderedParameterFormatting(TInt aDummyParameter, ...);
       
   117 private:
       
   118 	TInt iMaxBufLength;
       
   119 	};
       
   120 
       
   121 void TestEq(const TDesC8& a, const TDesC8& b, TInt aLine)
       
   122 	{
       
   123 	if (a!=b)
       
   124 		{
       
   125 		TBuf<256> buf;
       
   126 		test.Printf(_L("LINE %d:\n"),aLine);
       
   127 		buf.Copy(a);
       
   128 		test.Printf(_L("a=%S\n"),&buf);
       
   129 		buf.Copy(b);
       
   130 		test.Printf(_L("b=%S\n"),&buf);
       
   131 		test(0);
       
   132 		}
       
   133 	}
       
   134 
       
   135 void TestEq(const TDesC16& a, const TDesC16& b, TInt aLine)
       
   136 	{
       
   137 	if (a!=b)
       
   138 		{
       
   139 		test.Printf(_L("LINE %d:\n"),aLine);
       
   140 		test.Printf(_L("a=%S\n"),&a);
       
   141 		test.Printf(_L("b=%S\n"),&b);
       
   142 		test(0);
       
   143 		}
       
   144 	}
       
   145 
       
   146 #define TESTEQ(a,b)	TestEq((a),(b),__LINE__)
       
   147 
       
   148 template <class T,class S,class DESTEMPLATE>
       
   149 GLDEF_C TestTBuf<T,S,DESTEMPLATE>::TestTBuf(TInt aLength)
       
   150 // Constructor.
       
   151 	: iMaxBufLength(aLength)
       
   152 	{}
       
   153 
       
   154 template <class T,class S,class DESTEMPLATE>
       
   155 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test1List(T* a,T* b,...)
       
   156 // Test the format with list functions.
       
   157 	{
       
   158 	VA_LIST list;
       
   159 	VA_START(list,b);
       
   160 	a->Format(*b,list);
       
   161 	VA_START(list,b);
       
   162 	a->AppendFormat(*b,list);
       
   163 	VA_START(list,b);
       
   164 	a->Format(_TL("%d"),list);
       
   165 	VA_START(list,b);
       
   166 	a->AppendFormat(_TL("%d"),list);
       
   167 	}
       
   168 
       
   169 template <class T,class S,class DESTEMPLATE>
       
   170 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test1()
       
   171 // Tests all functions of the class.
       
   172 	{
       
   173 	test.Start(_L("Constructors"));
       
   174 	T a;
       
   175 	T b;
       
   176 	T c(_TL("AB"));
       
   177 	T d(c);
       
   178 
       
   179 // To avoid unused warning
       
   180     a.Length();
       
   181     b.Length();
       
   182     c.Length();
       
   183     d.Length();
       
   184 
       
   185 	test.Next(_L("Copy operators"));
       
   186 	a=_TL("DE");
       
   187 	b=c;
       
   188 	a+=_TL("DE");
       
   189 	b+=c;
       
   190 
       
   191 	test.Next(_L("Comparison operators"));
       
   192 	TInt t=(a<b);
       
   193 	t=(a<_TL("AB"));
       
   194 	t=(_TL("AB")<a);
       
   195 	t=(a<=b);
       
   196 	t=(a<=_TL("AB"));
       
   197 	t=(_TL("AB")<=a);
       
   198 	t=(a>b);
       
   199 	t=(a>_TL("AB"));
       
   200 	t=(_TL("AB")>a);
       
   201 	t=(a>=b);
       
   202 	t=(a>=_TL("AB"));
       
   203 	t=(_TL("AB")>=a);
       
   204 	t=(a==b);
       
   205 	t=(a==_TL("AB"));
       
   206 	t=(_TL("AB")==a);
       
   207 	t=(a!=_TL("AB"));
       
   208 	t=(_TL("AB")!=a);
       
   209 
       
   210 	test.Next(_L("Property access"));
       
   211 	a[0]='A';
       
   212 	a.Ptr();
       
   213 	TInt i=a.MaxLength()-a.Length();
       
   214 	i=a.Size();
       
   215 	a.Zero();
       
   216 	a.SetLength(2); 
       
   217 
       
   218 	test.Next(_L("Fill & swap"));
       
   219 	a.Fill(' ');
       
   220 	a.Fill(' ',iMaxBufLength);
       
   221 	a.FillZ();
       
   222 	a.FillZ(iMaxBufLength);
       
   223 	a.Swap(b);
       
   224 
       
   225 	test.Next(_L("Conversion"));
       
   226 	a.Fold();
       
   227 	a.Collate();
       
   228 	a.LowerCase();
       
   229 	a.UpperCase();
       
   230 	a.Capitalize();
       
   231 
       
   232 	test.Next(_L("Comparison"));
       
   233 	a.Compare(b);
       
   234 	a.Compare(_TL("AB"));
       
   235 	a.CompareF(b);
       
   236 	a.CompareF(_TL("AB"));
       
   237 	a.CompareC(b);
       
   238 	a.CompareC(_TL("AB"));
       
   239 
       
   240 	test.Next(_L("Matching"));
       
   241 	a.Match(b);
       
   242 	a.Match(_TL("AB"));
       
   243 	a.MatchF(b);
       
   244 	a.MatchF(_TL("AB"));
       
   245 
       
   246 	T buf(_TL("abcdef"));
       
   247 	TInt res = buf.MatchF(_TL("abc*def"));
       
   248 	test(res == 0);
       
   249 
       
   250 	a.MatchC(b);
       
   251 	a.MatchC(_TL("AB"));
       
   252 
       
   253 	test.Next(_L("Locating"));
       
   254 	a.Locate('A');
       
   255 	a.LocateF('A');
       
   256 	a.LocateReverse('A');
       
   257 	a.LocateReverseF('A');
       
   258 
       
   259 	test.Next(_L("Copying"));
       
   260 	a.Copy(b);
       
   261 	a.Copy(_TL("AB"));
       
   262 //	a.Copy(_TL("AB"),1);
       
   263 	a.CopyF(b);
       
   264 	a.CopyF(_TL("AB"));
       
   265 	a.CopyC(b);
       
   266 	a.CopyC(_TL("AB"));
       
   267 	a.CopyLC(b);
       
   268 	a.CopyLC(_TL("AB"));
       
   269 	a.CopyUC(b);
       
   270 	a.CopyUC(_TL("AB"));
       
   271 	a.CopyCP(b);
       
   272 	a.CopyCP(_TL("AB"));
       
   273 
       
   274 	test.Next(_L("Finding"));
       
   275 	a.Find(b);
       
   276 	a.Find(_TL("AB"));
       
   277 	a.FindF(b);
       
   278 	a.FindF(_TL("AB"));
       
   279 	a.FindC(b);
       
   280 	a.FindC(_TL("AB"));
       
   281 
       
   282 	test.Next(_L("Basic like ops"));
       
   283 	a.Repeat(b);
       
   284 	a.Repeat(_TL("AB"));
       
   285 	a.TrimLeft();
       
   286 	a.TrimRight();
       
   287 	a.Trim();
       
   288 	b=_TL("AA");
       
   289 	a.Insert(0,b);
       
   290 	a.Delete(0,2);
       
   291 	b = a.Left(1);
       
   292 	b = a.Right(1);
       
   293 	b = a.Mid(0,1);
       
   294 
       
   295 	test.Next(_L("Formating"));
       
   296 	a.Justify(_TL("AB"),10,ELeft,' ');
       
   297 	a.Justify(b,10,ELeft,' ');
       
   298 	b.Fill('A',2);
       
   299 	a.Zero();
       
   300 	a.AppendJustify(_TL("AB"),10,ELeft,' ');
       
   301 	a.AppendJustify(b,10,ELeft,' ');
       
   302 	TInt v1=10;
       
   303 	a.Num(v1);
       
   304 	a.AppendNum(v1);
       
   305 	TInt v2=10;
       
   306 	a.Num((TUint)v2,EHex);
       
   307 	a.AppendNum((TUint)v2,EHex);
       
   308 	a.NumUC((TUint)v2,EHex);
       
   309 	a.AppendNumUC((TUint)v2,EHex);
       
   310 	TReal v3=10.0;
       
   311 	TRealFormat ff;
       
   312 	ff.iType=KRealFormatFixed;
       
   313 	ff.iWidth=10;
       
   314 	ff.iPlaces=2;
       
   315 	ff.iPoint='.';
       
   316 	ff.iTriad=',';
       
   317 	ff.iTriLen=3;
       
   318 	a.Num(v3,ff);
       
   319 	a.AppendNum(v3,ff);
       
   320 	a.Format(_TL("%d"),12);
       
   321 	a.AppendFormat(_TL("%d"),12);
       
   322 	b=_TL("%d");
       
   323 	a.Format(b,12);
       
   324 	a.AppendFormat(b,12);
       
   325 	Test1List(&a,&b,12);
       
   326 
       
   327 	test.Next(_L("Replacing"));
       
   328 	a=_TL("AAC");
       
   329 	b=_TL("B");
       
   330 	a.Replace(1,1,b);
       
   331 	test.End();
       
   332 	}
       
   333 
       
   334 template <class T,class S,class DESTEMPLATE>
       
   335 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test2()
       
   336 // Tests all constructors.
       
   337 	{
       
   338 	test.Start(_L("Default"));
       
   339 	T a;
       
   340 	test(a.MaxLength()==iMaxBufLength);
       
   341 	test(a.Length()==0);
       
   342 
       
   343 	test.Next(_L("By length"));
       
   344 	T b(iMaxBufLength>>1);
       
   345 	test(b.MaxLength()==iMaxBufLength);
       
   346 	test(b.Length()==(iMaxBufLength>>1));
       
   347 
       
   348 	test.Next(_L("By string"));
       
   349 	T c(_TL("AB"));
       
   350 	test(c.MaxLength()==iMaxBufLength);
       
   351 	test(c.Length()==2);
       
   352 	test(c[0]=='A');
       
   353 	test(c[1]=='B');
       
   354 
       
   355 	test.Next(_L("By buffer reference"));
       
   356 	T d(c);
       
   357 	test(d.MaxLength()==iMaxBufLength);
       
   358 	test(d.Length()==2);
       
   359 	test(d[0]=='A');
       
   360 	test(d[1]=='B');
       
   361 	test.End();
       
   362 	}
       
   363 
       
   364 template <class T,class S,class DESTEMPLATE>
       
   365 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test3()
       
   366 // Tests all assignment operators
       
   367 	{
       
   368 	test.Start(_L("By String"));
       
   369 	T a;
       
   370 	a=_TL("AB");
       
   371 	a+=_TL("CD");
       
   372 	test(a.Length()==4);
       
   373 	test(a==_TL("ABCD"));
       
   374 
       
   375 	test.Next(_L("By buffer"));
       
   376 	T b;
       
   377 	b=a;
       
   378 	b+=a;
       
   379 	test(b.Length()==8);
       
   380 	test(b==_TL("ABCDABCD"));
       
   381 //	
       
   382 	test.End();
       
   383 	}
       
   384 
       
   385 template <class T,class S,class DESTEMPLATE>
       
   386 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test4()
       
   387 // Test all comparison operators
       
   388 	{
       
   389 	test.Start(_L("By NULL string"));
       
   390 	T a;
       
   391 	test(a==_TL(""));		// NULL strings
       
   392 	test(!(a!=_TL("")));
       
   393 	test(a<=_TL(""));
       
   394 	test(a>=_TL(""));
       
   395 	test(!(a<_TL("")));
       
   396 	test(!(a>_TL("")));
       
   397 	test(_TL("")==a);
       
   398 	test(!(_TL("")!=a));
       
   399 	test(_TL("")<=a);
       
   400 	test(_TL("")>=a);
       
   401 	test(!(_TL("")<a));
       
   402 	test(!(_TL("")>a));
       
   403 
       
   404 	test.Next(_L("By string or buffer"));
       
   405 	a=_TL("abc");
       
   406 	test(a==_TL("abc"));		// ==
       
   407 	test(!(a==_TL("xyz")));
       
   408 	test(!(a==_TL("aa")));
       
   409 	test(_TL("abc")==a);
       
   410 	test(!(_TL("xyz")==a));
       
   411 	test(!(_TL("aa")==a));
       
   412 	test(a!=_TL("xyz"));		// !=
       
   413 	test(!(a!=_TL("abc")));
       
   414 	test(a!=_TL("aa"));
       
   415 	test(_TL("xyz")!=a);
       
   416 	test(!(_TL("abc")!=a));
       
   417 	test(_TL("aa")!=a);
       
   418 	test(a<_TL("x"));			// <
       
   419 	test(!(a<_TL("abc")));
       
   420 	test(!(a<_TL("aa")));
       
   421 	test(_TL("aa")<a);
       
   422 	test(!(_TL("abc")<a));
       
   423 	test(!(_TL("xyz")<a));
       
   424 	test(a>_TL("aa"));			// >
       
   425 	test(!(a>_TL("abc")));
       
   426 	test(!(a>_TL("xyz")));
       
   427 	test(_TL("xyz")>a);
       
   428 	test(!(_TL("abc")>a));
       
   429 	test(!(_TL("aa")>a));
       
   430 	test(a>=_TL("abc"));		// >=
       
   431 	test(!(a>=_TL("xyz")));
       
   432 	test(a>=_TL("aa"));
       
   433 	test(_TL("abc")>=a);
       
   434 	test(!(_TL("aaa")>=a));
       
   435 	test(_TL("xyz")>=a);
       
   436 	test(a<=_TL("abc"));		// <=
       
   437 	test(!(a<=_TL("aa")));
       
   438 	test(a<=_TL("xyz"));
       
   439 	test(_TL("abc")<=a);
       
   440 	test(!(_TL("xyz")<=a));
       
   441 	test(_TL("aa")<=a);
       
   442 
       
   443 	test.Next(_L("By special characters"));
       
   444 	a=_TL("!@#$%^&*()");
       
   445 	test(a==_TL("!@#$%^&*()"));
       
   446 	test.End();	
       
   447 	}
       
   448 
       
   449 template <class T,class S,class DESTEMPLATE>
       
   450 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test5()
       
   451 // Test all property access
       
   452 	{
       
   453 	test.Start(_L("Length and Size"));
       
   454 	T a;
       
   455 	TInt maxLength=a.MaxLength();
       
   456     TInt i;
       
   457 	for (i=0;i<maxLength;i++)
       
   458 		{
       
   459 		test(a.Length()==i);	// Length
       
   460 		test(a.Size()==(TInt)(sizeof(S)*i)); // Size
       
   461 		a.AppendNum(i%10);
       
   462 		}
       
   463 	const T b=a;
       
   464 	for (i=0;i<maxLength;i++)
       
   465 		{
       
   466 		test(a[i]=='0'+(i%10));	// At
       
   467 		test(b[i]=='0'+(i%10));	// AtConst
       
   468 		}
       
   469 	test(a[0]==*a.Ptr());	//Ptr
       
   470 	a.SetLength(0);	// SetLength
       
   471 	test(a.Length()==0);
       
   472 	a.SetLength(maxLength-1);
       
   473 	test(a.Length()==maxLength-1);
       
   474 	a.Zero();	// Null
       
   475 	test(a.Length()==0);
       
   476 	test.End();
       
   477 	}
       
   478 
       
   479 template <class T,class S,class DESTEMPLATE>
       
   480 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test6()
       
   481 // Fill and Swap
       
   482 	{
       
   483 	test.Start(_L("Fill and Swap"));
       
   484 	T a,b;
       
   485 	TChar chr;
       
   486 	TInt j;
       
   487 	TInt maxLength=a.MaxLength();
       
   488 	for (TInt i=0;i<maxLength;i++)
       
   489 		{
       
   490 		chr=(i%10)+'0';
       
   491 		a.SetLength(i);
       
   492 		a.Fill(chr);	// Fill(TChar)
       
   493 		b.Swap(a);
       
   494 		test(b.Length()==i);	// Swap
       
   495 		j=0;
       
   496 		while (j<i)
       
   497 			test(b[j++]=='0'+(i%10));
       
   498 		b.FillZ();	// FillZ()
       
   499 		a.Swap(b);
       
   500 		j=0;
       
   501 		while (j<i)
       
   502 			test(a[j++]==0);
       
   503 		a.Fill(chr,i);	// Fill(TChar,TUint)
       
   504 		j=0;
       
   505 		while (j<i)
       
   506 			test(a[j++]=='0'+(i%10));
       
   507 		a.FillZ(i);	// FillZ(TUint)
       
   508 		j=0;
       
   509 		while (j<i)
       
   510 			test(a[j++]==0);
       
   511 		}
       
   512 	test.End();
       
   513 	}
       
   514 
       
   515 template <class T,class S,class DESTEMPLATE>
       
   516 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test7()
       
   517 // Conversion operators
       
   518 	{
       
   519 	test.Start(_L("Fold, collate ..."));
       
   520 	T a;
       
   521 	T b;
       
   522 	a=_TL("abc AbC");
       
   523 	b=_TL("ABC ABC");
       
   524 	a.Fold();
       
   525 	b.Fold();
       
   526 	test(a==b);
       
   527 	a=_TL("abc AbC");
       
   528 	b=_TL("ABC ABC");
       
   529 	a.Collate();
       
   530 	b.Collate();
       
   531 	test(a==b);
       
   532 	a.LowerCase();
       
   533 	test(a==_TL("abc abc"));
       
   534 	a.Capitalize();
       
   535 	test(a==_TL("Abc abc"));
       
   536 	a.UpperCase();
       
   537 	test(a==_TL("ABC ABC"));
       
   538 	test.End();
       
   539 	}
       
   540 
       
   541 template <class T,class S,class DESTEMPLATE>
       
   542 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test8()
       
   543 // Comparison
       
   544 	{
       
   545 	test.Start(_L("By string"));
       
   546 	T a;
       
   547 	a=_TL("abc AbC");
       
   548 	test(a.Compare(_TL("abc AbC"))==0);
       
   549 	test(a.CompareF(_TL("ABC aBc"))==0);
       
   550 	test(a.Compare(_TL("xyz"))!=0);
       
   551 	test(a.CompareC(_TL("xyz"))!=0);
       
   552 	test(a.CompareF(_TL("xyz"))!=0);
       
   553 
       
   554 	test.Next(_L("By buffer"));
       
   555 	T b;
       
   556 	T c;
       
   557 	a=_TL("abc AbC");
       
   558 	b=_TL("abc AbC");
       
   559 	c=_TL("xyz");
       
   560 	test(a.Compare(b)==0);
       
   561 	test(a.Compare(c)!=0);
       
   562 	b=_TL("ABC aBc");
       
   563 	test(a.CompareC(c)!=0);
       
   564 	test(a.CompareF(b)==0);
       
   565 	test(a.CompareF(c)!=0);
       
   566 
       
   567 	test.End();
       
   568 	}
       
   569 
       
   570 template <class T,class S,class DESTEMPLATE>
       
   571 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test9()
       
   572 // Matching (need to test explicit result as error KErrNotFound = KMaxTUint
       
   573 // 			 and so registers as TRUE. (test parameter is TUint) )
       
   574 	{
       
   575 	test.Start(_L("By string"));
       
   576 	T a;
       
   577 	a=_TL("abc AbC");
       
   578 	test(a.Match(_TL("abc AbC"))==0);
       
   579 	test(a.MatchC(_TL("ABC aBc"))==0);
       
   580 	test(a.MatchF(_TL("ABC aBc"))==0);
       
   581 	test(a.Match(_TL("xyz"))==KErrNotFound);
       
   582 	test(a.MatchC(_TL("xyz"))==KErrNotFound);
       
   583 	test(a.MatchF(_TL("xyz"))==KErrNotFound);
       
   584 
       
   585 	test.Next(_L("By buffer"));
       
   586 	T b;
       
   587 	T c;
       
   588 	a=_TL("abc AbC");
       
   589 	b=_TL("abc AbC");
       
   590 	c=_TL("xyz");
       
   591 	test(a.Match(b)==0);
       
   592 	test(a.Match(c)==KErrNotFound);
       
   593 	b=_TL("ABC aBc");
       
   594 	test(a.MatchC(b)==0);
       
   595 	test(a.MatchC(c)==KErrNotFound);
       
   596 	test(a.MatchF(b)==0);
       
   597 	test(a.MatchF(c)==KErrNotFound);
       
   598 
       
   599 	test.Next(_L("Wildcards"));
       
   600 	a=_TL("abcxyz");
       
   601 	test(a.Match(_TL("abc*"))==0);
       
   602 	test(a.Match(_TL("abw*"))==KErrNotFound);
       
   603 	a=_TL("abcdefg");
       
   604 	test(a.Match(_TL("a*fg"))==0);
       
   605 	test(a.Match(_TL("a*f"))==KErrNotFound);
       
   606 	test(a.Match(_TL("abc*fgh"))==KErrNotFound);
       
   607 	a=_TL("abcdef");
       
   608 	test(a.Match(_TL("abc?ef"))==0);
       
   609 	test(a.Match(_TL("abc?xf"))==KErrNotFound);
       
   610 
       
   611 	a=_TL("a(01)");
       
   612 	test(a.Match(_TL("*(01)"))==1);
       
   613 	test(a.Match(_TL("?(01)"))==0);
       
   614 	test(a.Match(_TL("?(*)"))==0);
       
   615 	test(a.Match(_TL("?(**)"))==0);
       
   616 
       
   617 	test(a.Match(_TL("?(\?\?)"))==0);
       
   618 	test(a.Match(_TL("*(*)"))>=0);
       
   619 	test(a.Match(_TL("*(0?)"))>=0);
       
   620 	test(a.Match(_TL("a(\?\?)"))==0);
       
   621 	test(a.Match(_TL("*(\?\?)"))>=0);
       
   622 
       
   623 	test.Next(_L("wild cards with collated comparison"));
       
   624 	a = _TL("abcdefghijkl");
       
   625 	test(a.MatchC(_TL("abc*")) == 0);
       
   626 	test(a.MatchC(_TL("abc")) == KErrNotFound);
       
   627 	test(a.MatchC(_TL("xyz")) == KErrNotFound);
       
   628 	test(a.MatchC(_TL("*def")) == KErrNotFound);
       
   629 	test(a.MatchC(_TL("*def*")) == 3);
       
   630 	test(a.MatchC(_TL("*d?f*")) == 3);
       
   631 	test(a.MatchC(_TL("a*kl")) == 0);
       
   632 	test(a.MatchC(_TL("*e*?l")) == 4);
       
   633 	test(a.MatchC(_TL("abc*dEf*")) == 0);
       
   634 	
       
   635 	
       
   636 	T candidate;
       
   637 	T search;
       
   638 	
       
   639 	candidate = _TL("");
       
   640 	search = _TL("**");
       
   641 	test(candidate.MatchC(search) == 0);
       
   642 	
       
   643 	candidate = _TL("");
       
   644 	search = _TL("*");
       
   645 	test(candidate.MatchC(search) == 0);
       
   646 	
       
   647 	candidate = _TL("abcd");
       
   648 	search = _TL("*abc*cd");
       
   649 	test(candidate.MatchC(search) == KErrNotFound);
       
   650    	
       
   651 	if (sizeof(S) == 2)
       
   652 		{
       
   653 		test.Next(_L("Unicode MatchC and FindC treat base+accent as equal to composed character"));
       
   654 		TPtrC p = _L("te\x302te");
       
   655 		test(p.MatchC(_L("t\xeate")) == 0);
       
   656 		test(p.FindC(_L("t\xeate")) == 0);
       
   657 		}
       
   658 
       
   659 	test.End();
       
   660 	}
       
   661 
       
   662 template <class T,class S,class DESTEMPLATE>
       
   663 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test10()
       
   664 // Locating
       
   665 	{
       
   666 	T a;
       
   667 	TChar b;
       
   668 
       
   669 	test.Start(_L("First Char"));
       
   670 	b='a';
       
   671 	a=_TL("axaxa");
       
   672 	test(a.Locate(b)==0);
       
   673 	test(a.LocateF(b)==0);
       
   674 	test(a.LocateReverse(b)==4);
       
   675 	test(a.LocateReverseF(b)==4);
       
   676 
       
   677 	test.Next(_L("Middle Char"));
       
   678 	a=_TL("xaxa");
       
   679 	test(a.Locate(b)==1);
       
   680 	test(a.LocateF(b)==1);
       
   681 	a=_TL("axax");
       
   682 	test(a.LocateReverse(b)==2);
       
   683 	test(a.LocateReverseF(b)==2);
       
   684 
       
   685 	test.Next(_L("Last Char"));
       
   686 	a=_TL("xxa");
       
   687 	test(a.Locate(b)==2);
       
   688 	test(a.LocateF(b)==2);
       
   689 	a=_TL("axx");
       
   690 	test(a.LocateReverse(b)==0);
       
   691 	test(a.LocateReverseF(b)==0);
       
   692 
       
   693 	test.Next(_L("Test for failure of locate"));
       
   694 	a=_TL("xxx");
       
   695 	test(a.Locate(b)==KErrNotFound);
       
   696 	test(a.LocateF(b)==KErrNotFound);
       
   697 	test(a.LocateReverse(b)==KErrNotFound);
       
   698 	test(a.LocateReverseF(b)==KErrNotFound);
       
   699 
       
   700 	test.End();
       
   701 	}
       
   702 
       
   703 template <class T,class S,class DESTEMPLATE>
       
   704 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test11()
       
   705 // Copying
       
   706 	{
       
   707 	T a, b;
       
   708 		
       
   709 	test.Start(_L("By String"));
       
   710 	a.Copy(_TL("abc"));
       
   711 	test(a.Length()==3);
       
   712 	test(a==_TL("abc"));
       
   713 	a.CopyF(_TL("abc"));
       
   714 	test(a.Length()==3);
       
   715 	b.CopyF(_TL("ABC"));
       
   716 	test(a==b);
       
   717 	a.CopyLC(_TL("AbC"));
       
   718 	test(a==_TL("abc"));
       
   719 	test(a.Length()==3);
       
   720 	a.CopyC(_TL("abc"));
       
   721 	b.CopyC(_TL("ABC"));
       
   722 	test(a==b);
       
   723 	test(a.Length()==3);
       
   724 	a.CopyCP(_TL("abc"));
       
   725 	test(a==_TL("Abc"));
       
   726 	test(a.Length()==3);
       
   727 	a.CopyUC(_TL("aBc"));
       
   728 	test(a==_TL("ABC"));
       
   729 	test(a.Length()==3);
       
   730 //	a.Copy(_TL("abc"),3);
       
   731 //	test(a==_TL("abc"));
       
   732 //	test(a.Length()==3);
       
   733 //	a.Copy(_TL("abcd"),3);
       
   734 //	test(a==_TL("abc"));
       
   735 //	test(a.Length()==3);
       
   736 
       
   737 	test.Next(_L("By buffer"));
       
   738 	b=_TL("abc");
       
   739 	a.Copy(b);
       
   740 	test(a==_TL("abc"));
       
   741 	test(a.Length()==3);
       
   742 	a=_TL("");
       
   743 	a.CopyF(b);
       
   744 	b.CopyF(_TL("ABC"));
       
   745 	test(a==b);
       
   746 	test(a.Length()==3);
       
   747 	a=_TL("");
       
   748 	b=_TL("AbC");
       
   749 	a.CopyLC(b);
       
   750 	test(a==_TL("abc"));
       
   751 	test(a.Length()==3);
       
   752 	a=_TL("");
       
   753 	b=_TL("abC");
       
   754 	a.CopyC(b);
       
   755 	b.CopyC(_TL("ABC"));
       
   756 	test(a==b);
       
   757 	test(a.Length()==3);
       
   758 	a=_TL("");
       
   759 	b=_TL("abC");
       
   760 	a.CopyCP(b);
       
   761 	test(a==_TL("Abc"));
       
   762 	test(a.Length()==3);
       
   763 	a=_TL("");
       
   764 	b=_TL("aBc");
       
   765 	a.CopyUC(b);
       
   766 	test(a.Length()==3);
       
   767 	test(a==_TL("ABC"));
       
   768 
       
   769 	test.End();
       
   770 	}
       
   771 
       
   772 
       
   773 template <class T,class S,class DESTEMPLATE>
       
   774 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test12()
       
   775 // Finding
       
   776 	{
       
   777 	test.Start(_L("By String"));
       
   778 	T a,b;
       
   779 	a=_TL("abccef");
       
   780 	test(a.Find(_TL(""))==0);
       
   781 	test(a.Find(_TL("abc"))==0);
       
   782 	test(a.Find(_TL("cce"))==2);
       
   783 	test(a.Find(_TL("cef"))==3);
       
   784 	test(a.Find(_TL("efg"))==KErrNotFound);
       
   785 	test(a.Find(_TL("xxx"))==KErrNotFound);
       
   786 	test(a.FindF(_TL(""))==0);
       
   787 	test(a.FindF(_TL("AbC"))==0);
       
   788 	test(a.FindF(_TL("CcE"))==2);
       
   789 	test(a.FindF(_TL("CeF"))==3);
       
   790 	test(a.FindF(_TL("efg"))==KErrNotFound);
       
   791 	test(a.FindF(_TL("xxx"))==KErrNotFound);
       
   792 	test(a.FindC(_TL(""))==0);
       
   793 	test(a.FindC(_TL("aBc"))==0);
       
   794 	test(a.FindC(_TL("cce"))==2);
       
   795 	test(a.FindC(_TL("cEf"))==3);
       
   796 	test(a.FindC(_TL("efg"))==KErrNotFound);
       
   797 	test(a.FindC(_TL("xxx"))==KErrNotFound);
       
   798 
       
   799 	test.Next(_L("By buffer"));
       
   800 	test(a.Find(b)==0);
       
   801 	test(a.FindF(b)==0);
       
   802 	test(a.FindC(b)==0);
       
   803 	b=_TL("xxx");
       
   804 	test(a.Find(b)==KErrNotFound);
       
   805 	test(a.FindF(b)==KErrNotFound);
       
   806 	test(a.FindC(b)==KErrNotFound);
       
   807 	b=_TL("efg");
       
   808 	test(a.Find(b)==KErrNotFound);
       
   809 	test(a.FindF(b)==KErrNotFound);
       
   810 	test(a.FindC(b)==KErrNotFound);
       
   811 	b=_TL("abc");
       
   812 	test(a.Find(b)==0);
       
   813 	b=_TL("cce");
       
   814 	test(a.Find(b)==2);
       
   815 	b=_TL("cef");
       
   816 	test(a.Find(b)==3);
       
   817 	b=_TL("AbC");
       
   818 	test(a.FindF(b)==0);
       
   819 	b=_TL("CcE");
       
   820 	test(a.FindF(b)==2);
       
   821 	b=_TL("CeF");
       
   822 	test(a.FindF(b)==3);
       
   823 	b=_TL("aBc");
       
   824 	test(a.FindC(b)==0);
       
   825 	b=_TL("cCe");
       
   826 	test(a.FindC(b)==2);
       
   827 	b=_TL("cEf");
       
   828 	test(a.FindC(b)==3);
       
   829 
       
   830 	test.End();
       
   831 	}
       
   832 
       
   833 template <class T,class S,class DESTEMPLATE>
       
   834 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test13()
       
   835 // Basic like ops
       
   836 	{
       
   837 	test.Start(_L("Repeat, trim, insert and delete"));
       
   838 	T a,b;
       
   839 	TInt max=a.MaxLength(); 
       
   840 	b=_TL("abc");
       
   841 	a.Repeat(_TL("abc"));
       
   842 	test(a==_TL(""));
       
   843 	a.Repeat(b);
       
   844 	test(a==_TL(""));
       
   845 	for (TInt j=1;j<max;j++) // ?? Cannot SetLength = MaxLength
       
   846 		{
       
   847 		a.SetLength(j);
       
   848 		a.Repeat(_TL("abc"));
       
   849         TInt i;
       
   850 		for (i=0;i<j;i++)
       
   851 			test(a[i]==b[i%3]);
       
   852 		a=_TL("");
       
   853 		a.SetLength(j);
       
   854 		a.Repeat(b);
       
   855 		for (i=0;i<j;i++)
       
   856 			test(a[i]==b[i%3]);
       
   857 		a=_TL("");
       
   858 		}
       
   859 	a=_TL("\t\n  ab \t\n ");
       
   860 	a.TrimLeft();
       
   861 	test(a==_TL("ab \t\n "));
       
   862 	test(a.Length()==6);
       
   863 	a=_TL("\t\n  ab \t\n ");
       
   864 	a.TrimRight();
       
   865 	test(a==_TL("\t\n  ab"));
       
   866 	test(a.Length()==6);
       
   867 	a=_TL(" \t\n ab \t \n");
       
   868 	a.Trim();
       
   869 	test(a==_TL("ab"));
       
   870 	a.Trim();
       
   871 	test(a==_TL("ab"));
       
   872 	a=_TL("abc");
       
   873 	b=_TL("123");
       
   874 	a.Insert(1,b);
       
   875 	test(a==_TL("a123bc"));
       
   876 	test(a.Length()==6);
       
   877 	b=_TL("");
       
   878 	a.Insert(4,b);
       
   879 	test(a==_TL("a123bc"));
       
   880 	test(a.Length()==6);
       
   881 	a.Insert(0,b);
       
   882 	test(a==_TL("a123bc"));
       
   883 	test(a.Length()==6);
       
   884 	a.Delete(1,3);
       
   885 	test(a==_TL("abc"));
       
   886 	test(a.Length()==3);
       
   887 	a.Delete(0,3);
       
   888 	test(a==_TL(""));
       
   889 	test(a.Length()==0);
       
   890 
       
   891 	test.Next(_L("TrimAll"));
       
   892 	a=_TL("");
       
   893 	a.TrimAll();
       
   894 	test(a==_TL(""));
       
   895 	a=_TL(" ");
       
   896 	a.TrimAll();
       
   897 	test(a==_TL(""));
       
   898 	a=_TL("   ");
       
   899 	a.TrimAll();
       
   900 	test(a==_TL(""));
       
   901 	a=_TL("    ab cd  ef    g");
       
   902 	a.TrimAll();
       
   903 	test(a==_TL("ab cd ef g"));
       
   904 	a=_TL("abcdef");
       
   905 	a.TrimAll();
       
   906 	test(a==_TL("abcdef"));
       
   907 	a=_TL("a  b\t cd\t\tef");
       
   908 	a.TrimAll();
       
   909 	test(a==_TL("a b\tcd\tef"));
       
   910 	a=_TL("abcdef \t ghijk");
       
   911 	a.TrimAll();
       
   912 	test(a==_TL("abcdef ghijk"));
       
   913 	a=_TL("abcdef g");
       
   914 	a.TrimAll();
       
   915 	test(a==_TL("abcdef g"));
       
   916 	a=_TL("ab  cd  ef  gh  ij");
       
   917 	a.TrimAll();
       
   918 	test(a==_TL("ab cd ef gh ij"));
       
   919 	a=_TL("a        b          c     defg h     i  jk l     mno pqr stu  vw   xyz");
       
   920 	a.TrimAll();
       
   921 	test(a==_TL("a b c defg h i jk l mno pqr stu vw xyz"));
       
   922 
       
   923 	test.Next(_L("Right, Left and Mid"));
       
   924 	a=_TL("abcdef");
       
   925 	b = a.Left(3);
       
   926 	test(b==_TL("abc"));
       
   927 	test(b.Length()==3);
       
   928 	b = a.Right(3);
       
   929 	test(b==_TL("def"));
       
   930 	b = a.Mid(2);
       
   931 	test(b==_TL("cdef"));
       
   932 	test(b.Length()==4);
       
   933 	b = a.Left(2);
       
   934 	test(b==_TL("ab"));
       
   935 	test(b.Length()==2);
       
   936 	b = a.Right(2);
       
   937 	test(b==_TL("ef"));
       
   938 	b = a.Mid(2,1);
       
   939 	test(b==_TL("c"));
       
   940 	test(b.Length()==1);
       
   941 	b = a.Left(6);
       
   942 	test(b==_TL("abcdef"));
       
   943 	test(b.Length()==6);
       
   944 	b=_TL("");
       
   945 	b.SetLength(4);
       
   946 	b = a.Right(6);
       
   947 	test(b==_TL("abcdef"));
       
   948 	test(b.Length()==6);
       
   949 	a = a.Left(6);
       
   950 	test(a==_TL("abcdef"));
       
   951 	b=_TL("");
       
   952 	b = a.Mid(0,6);
       
   953 	test(b==_TL("abcdef")); 
       
   954 	test.End();
       
   955 	}
       
   956 
       
   957 template <class T,class S,class DESTEMPLATE>
       
   958 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test14()
       
   959 // Formating operations
       
   960 	{
       
   961 	test.Start(_L("Justify"));
       
   962 	T a,b,d;
       
   963 	TInt aWidth;
       
   964 	TChar c;
       
   965 	a=_TL("wxyz");
       
   966 	b=_TL("abc");
       
   967 	d=_TL("linearisation");
       
   968 	const S* pD=_TS("299792458");
       
   969 	c='x';
       
   970 	aWidth=KDefaultJustifyWidth; // Left justified, Default width
       
   971 	a.Justify(b,aWidth,ELeft,c);
       
   972 	test(a==b);
       
   973 	test(a.Length()==3);
       
   974 	a.AppendJustify(b,aWidth,ELeft,c);
       
   975 	test(a==_TL("abcabc"));
       
   976 	test(a.Length()==6);
       
   977 	aWidth=1;	// Width < String length
       
   978 	a.Justify(b,aWidth,ELeft,c);
       
   979 	test(a==_TL("a"));
       
   980 	test(a.Length()==1);
       
   981 	a.AppendJustify(b,aWidth,ELeft,c);
       
   982 	test(a==_TL("aa"));
       
   983 	test(a.Length()==2);
       
   984 	aWidth=5; // Width > String length
       
   985 	a.Justify(b,aWidth,ELeft,c);
       
   986 	test(a==_TL("abcxx"));
       
   987 	test(a.Length()==5);
       
   988 	a.AppendJustify(b,aWidth,ELeft,c);
       
   989 	test(a==_TL("abcxxabcxx"));
       
   990 	test(a.Length()==10);
       
   991 
       
   992 	aWidth=KDefaultJustifyWidth; // Right justified, Default width
       
   993 	a.Justify(b,aWidth,ERight,c);
       
   994 	test(a==b);
       
   995 	test(a.Length()==3);
       
   996 	a.AppendJustify(b,aWidth,ERight,c);
       
   997 	test(a==_TL("abcabc"));
       
   998 	test(a.Length()==6);
       
   999 	aWidth=1; // Right justified, Width < String length
       
  1000 	a.Justify(b,aWidth,ERight,c);
       
  1001 	test(a==_TL("a"));
       
  1002 	test(a.Length()==1);
       
  1003 	a.AppendJustify(b,aWidth,ERight,c);
       
  1004 	test(a==_TL("aa"));
       
  1005 	test(a.Length()==2);
       
  1006 	aWidth=5; // Right justified, width > String length
       
  1007 	a.Justify(b,aWidth,ERight,c);
       
  1008 	test(a==_TL("xxabc"));
       
  1009 	test(a.Length()==5);
       
  1010 	a.AppendJustify(b,aWidth,ERight,c);
       
  1011 	test(a==_TL("xxabcxxabc"));
       
  1012 	test(a.Length()==10);
       
  1013 
       
  1014 	aWidth=KDefaultJustifyWidth; // Center justified, Default width
       
  1015 	a.Justify(b,aWidth,ECenter,c);
       
  1016 	test(a==b);
       
  1017 	test(a.Length()==3);
       
  1018 	a.AppendJustify(b,aWidth,ECenter,c);
       
  1019 	test(a==_TL("abcabc"));
       
  1020 	test(a.Length()==6);
       
  1021 	aWidth=1; // Centre justified, width < String length
       
  1022 	a.Justify(b,aWidth,ECenter,c);
       
  1023 	test(a==_TL("a"));
       
  1024 	test(a.Length()==1);
       
  1025 	a.AppendJustify(b,aWidth,ECenter,c);
       
  1026 	test(a==_TL("aa"));
       
  1027 	test(a.Length()==2);
       
  1028 	aWidth=5; // Centre justified, width > String length
       
  1029 	a.Justify(b,aWidth,ECenter,c);
       
  1030 	test(a==_TL("xabcx"));
       
  1031 	test(a.Length()==5);
       
  1032 	a.AppendJustify(b,aWidth,ECenter,c);
       
  1033 	test(a==_TL("xabcxxabcx"));
       
  1034 	test(a.Length()==10);
       
  1035 
       
  1036 	test.Next(_L("Num"));
       
  1037 	TInt j=-2147483647-1; 
       
  1038 	a.Num(j);
       
  1039 	test(a==_TL("-2147483648"));
       
  1040 	test(a.Length()==11);
       
  1041 	TUint i=2147483648u;
       
  1042 	a.Num(i);
       
  1043 	test(a==_TL("2147483648"));
       
  1044 	test(a.Length()==10);
       
  1045 	if (a.MaxLength()>31)
       
  1046 		{
       
  1047 		a.Num(i,EBinary);
       
  1048 		test(a==_TL("10000000000000000000000000000000"));
       
  1049 		test(a.Length()==32);
       
  1050 		a=_TL("");
       
  1051 		a.NumUC(i,EBinary);
       
  1052 		test(a==_TL("10000000000000000000000000000000"));
       
  1053 		test(a.Length()==32);
       
  1054 		}
       
  1055 	i=31;
       
  1056 	a.Num(i,EBinary);
       
  1057 	test(a==_TL("11111"));
       
  1058 	test(a.Length()==5);
       
  1059 	a=_TL("");
       
  1060 	a.NumUC(i,EBinary);
       
  1061 	test(a==_TL("11111"));
       
  1062 	test(a.Length()==5);
       
  1063 	i=2147483648u;
       
  1064 	a.Num(i,EOctal);
       
  1065 	test(a==_TL("20000000000"));
       
  1066 	test(a.Length()==11);
       
  1067 	a=_TL("");
       
  1068 	a.NumUC(i,EOctal);
       
  1069 	test(a==_TL("20000000000"));
       
  1070 	test(a.Length()==11);
       
  1071 	a.Num(i,EDecimal);
       
  1072 	test(a==_TL("2147483648"));
       
  1073 	test(a.Length()==10);
       
  1074 	a=_TL("");
       
  1075 	a.NumUC(i,EDecimal);
       
  1076 	test(a==_TL("2147483648"));
       
  1077 	test(a.Length()==10);
       
  1078 	a.Num(i,EHex);
       
  1079 	test(a==_TL("80000000"));
       
  1080 	test(a.Length()==8);
       
  1081 	a=_TL("");
       
  1082 	a.NumUC(i,EHex);
       
  1083 	test(a==_TL("80000000"));
       
  1084 	test(a.Length()==8);
       
  1085 	i=0;
       
  1086 	a.Num(i);
       
  1087 	test(a==_TL("0"));
       
  1088 	test(a.Length()==1);
       
  1089 	a=_TL("abc");
       
  1090 	a.Num(i,EBinary);
       
  1091 	test(a==_TL("0"));
       
  1092 	test(a.Length()==1);
       
  1093 	a=_TL("abc");
       
  1094 	a.NumUC(i,EBinary);
       
  1095 	test(a==_TL("0"));
       
  1096 	test(a.Length()==1);
       
  1097 	a=_TL("abc");
       
  1098 	a.Num(i,EOctal);
       
  1099 	test(a==_TL("0"));
       
  1100 	test(a.Length()==1);
       
  1101 	a=_TL("");
       
  1102 	a.NumUC(i,EOctal);
       
  1103 	test(a==_TL("0"));
       
  1104 	test(a.Length()==1);
       
  1105 	a=_TL("abc");
       
  1106 	a.Num(i,EDecimal);
       
  1107 	test(a==_TL("0"));
       
  1108 	test(a.Length()==1);
       
  1109 	a=_TL("");
       
  1110 	a.NumUC(i,EDecimal);
       
  1111 	test(a==_TL("0"));
       
  1112 	test(a.Length()==1);
       
  1113 	a=_TL("abc");
       
  1114 	a.Num(i,EHex);
       
  1115 	test(a==_TL("0"));
       
  1116 	test(a.Length()==1);
       
  1117 	a=_TL("");
       
  1118 	a.NumUC(i,EHex);
       
  1119 	test(a==_TL("0"));
       
  1120 	test(a.Length()==1);
       
  1121 //	TInt i=a.Num(6.2,format); NOT IMPLEMENTED
       
  1122 	a.AppendNum(j);
       
  1123 	test(a==_TL("0-2147483648"));
       
  1124 	test(a.Length()==12);
       
  1125 	a=_TL("abc");
       
  1126 	i=4294967295u;
       
  1127 	a.AppendNum(i);
       
  1128 	test(a==_TL("abc4294967295"));
       
  1129 	test(a.Length()==13);
       
  1130 	j=2147483647;
       
  1131 	a=_TL("abc");
       
  1132 	a.AppendNum(j);
       
  1133 	test(a==_TL("abc2147483647"));
       
  1134 	test(a.Length()==13);
       
  1135 	a=_TL("a");
       
  1136 	i=180150000;
       
  1137 	if (a.MaxLength()>28)
       
  1138 		{
       
  1139 		a.AppendNum(i,EBinary);
       
  1140 		test(a==_TL("a1010101111001101111011110000"));
       
  1141 		test(a.Length()==29);
       
  1142 		}
       
  1143 	a=_TL("a");
       
  1144 	a.AppendNum(15,EBinary);
       
  1145 	test(a==_TL("a1111"));
       
  1146 	test(a.Length()==5);
       
  1147 	a=_TL("a");
       
  1148 	a.AppendNum(i,EDecimal);
       
  1149 	test(a==_TL("a180150000"));
       
  1150 	test(a.Length()==10);
       
  1151 	a=_TL("a");
       
  1152 	a.AppendNum(i,EOctal);
       
  1153 	test(a==_TL("a1257157360"));
       
  1154 	test(a.Length()==11);
       
  1155 	a=_TL("a");
       
  1156 	a.AppendNumUC(i,EHex);
       
  1157 	test(a==_TL("aABCDEF0"));
       
  1158 	test(a.Length()==8);
       
  1159 //	i=a.AppendNum(6.32, format); NOT IMPLEMENTED
       
  1160 
       
  1161 	test.Next(_L("Format"));
       
  1162 	a=_TL("");
       
  1163 	b=_TL("cde");
       
  1164 	a.Format(_TL("%S"),&b);
       
  1165 	test(a==b);
       
  1166 	test(a.Length()==3);
       
  1167     DESTEMPLATE xyz=_TL("xyzwpq");
       
  1168 	a.Format(_TL("%S"),&xyz);
       
  1169 	test(a==_TL("xyzwpq"));
       
  1170 	test(a.Length()==6);
       
  1171     DESTEMPLATE cde=_TL("cde");
       
  1172 	a.Format(_TL("ab %-x5S"),&cde);
       
  1173 	test(a==_TL("ab cdexx"));
       
  1174 	test(a.Length()==8);
       
  1175 	a.Format(_TL("ab %=x5S"),&cde);
       
  1176 	test(a==_TL("ab xcdex"));
       
  1177 	test(a.Length()==8);
       
  1178 	a.Format(_TL("ab %+x5S"),&cde);
       
  1179 	test(a==_TL("ab xxcde"));
       
  1180 	test(a.Length()==8);
       
  1181 	a.Format(_TL("ab %5S"),&cde);
       
  1182 	test(a==_TL("ab   cde"));
       
  1183 	test(a.Length()==8);
       
  1184 	a.Format(_TL("ab %-**S"),'x',5,&cde);
       
  1185 	test(a==_TL("ab cdexx"));
       
  1186 	test(a.Length()==8);
       
  1187 	a.Format(_TL("ab %*S"),5,&cde);
       
  1188 	test(a==_TL("ab   cde"));
       
  1189 	test(a.Length()==8);
       
  1190 	a=_TL("xyz");
       
  1191 	a.Format(_TL("ab %-x5S"),&b);
       
  1192 	test(a==_TL("ab cdexx"));
       
  1193 	test(a.Length()==8);
       
  1194 	a=_TL("xyz");
       
  1195 	a.Format(_TL("ab %-**S"),'x',5,&b);
       
  1196 	test(a==_TL("ab cdexx"));
       
  1197 	test(a.Length()==8);
       
  1198 	a=_TL("xyz");
       
  1199 	a.Format(_TL("ab %*S"),5,&b);
       
  1200 	test(a==_TL("ab   cde"));
       
  1201 	test(a.Length()==8);
       
  1202 
       
  1203 	DESTEMPLATE fred=_TL("fred");
       
  1204 	a.Format(_TL("%+0*S"),10,&fred);
       
  1205 	test(a==_TL("000000fred"));
       
  1206 	test(a.Length()==10);
       
  1207 	a.Format(_TL("%-0*S"),7,&fred);
       
  1208 	test(a==_TL("fred000"));
       
  1209 	test(a.Length()==7);
       
  1210 	a.Format(_TL("%0*S"),11,&fred);
       
  1211 	test(a==_TL("0000000fred"));
       
  1212 	test(a.Length()==11);
       
  1213 	a.Format(_TL("c=%s"),pD);
       
  1214 	TESTEQ(a,_TL("c=299792458"));
       
  1215 	a.Format(_TL("c=%10.6s"),pD);
       
  1216 	test(a==_TL("c=    299792"));
       
  1217 	a.Format(_TL("c=%*.*s"),5,4,pD);
       
  1218 	test(a==_TL("c= 2997"));
       
  1219 	a.Format(_TL("%S"),&d);
       
  1220 	test(a==_TL("linearisation"));
       
  1221 	a.Format(_TL("%10.6S"),&d);
       
  1222 	test(a==_TL("    linear"));
       
  1223 	a.Format(_TL("%*.*S"),5,4,&d);
       
  1224 	test(a==_TL(" line"));
       
  1225 	a.Format(_TL("%*.*Sed"),10,8,&d);
       
  1226 	test(a==_TL("  linearised"));
       
  1227 	a.Format(_TL("%*.*S"),14,20,&d);
       
  1228 	test(a==_TL(" linearisation"));
       
  1229 
       
  1230 	a.Format(_TL("ab %-,5b"),7);
       
  1231 	test(a==_TL("ab 111,,"));
       
  1232 	test(a.Length()==8);
       
  1233 	a.Format(_TL("ab %=,5O"),31);
       
  1234 	test(a==_TL("ab ,37,,"));
       
  1235 	test(a.Length()==8);
       
  1236 	a.Format(_TL("ab %+xlx"),TInt64(171));
       
  1237 	test(a==_TL("ab ab"));
       
  1238 	test(a.Length()==5);
       
  1239 	a.Format(_TL("ab %+xlX %+xlx"),TInt64(171),TInt64(171));
       
  1240 	TESTEQ(a,_TL("ab AB ab"));
       
  1241 	test(a.Length()==8);
       
  1242 	a.Format(_TL("ab %lu"),MAKE_TINT64((TUint)(KMinTInt),0));
       
  1243 	test(a==_TL("ab 9223372036854775808"));
       
  1244 	test(a.Length()==22);
       
  1245 	a.Format(_TL("ab %ld"),MAKE_TINT64((TUint)(KMinTInt),1));
       
  1246 	test(a==_TL("ab -9223372036854775807"));
       
  1247 	test(a.Length()==23);
       
  1248 	a.Format(_TL("ab %ld"),MAKE_TINT64((TUint)(KMinTInt),0));
       
  1249 	test(a==_TL("ab -9223372036854775808"));
       
  1250 	test(a.Length()==23);
       
  1251 	a.Format(_TL("ab %ld"),MAKE_TINT64((TUint)(KMaxTInt),KMaxTUint));
       
  1252 	test(a==_TL("ab 9223372036854775807"));
       
  1253 	test(a.Length()==22);
       
  1254 	a.Format(_TL("ab %ld"),MAKE_TINT64(KMaxTUint,KMaxTUint));
       
  1255 	test(a==_TL("ab -1"));
       
  1256 	test(a.Length()==5);
       
  1257 	a.Format(_TL("ab %lu"),MAKE_TINT64(KMaxTUint,KMaxTUint));
       
  1258 	test(a==_TL("ab 18446744073709551615"));
       
  1259 	test(a.Length()==23);
       
  1260 	a.Format(_TL("ab %ld"),TInt64(0));
       
  1261 	test(a==_TL("ab 0"));
       
  1262 	test(a.Length()==4);
       
  1263 	a.Format(_TL("ab %lb"),TInt64(0));
       
  1264 	test(a==_TL("ab 0"));
       
  1265 	test(a.Length()==4);
       
  1266 	a.Format(_TL("ab %lx"),TInt64(0));
       
  1267 	test(a==_TL("ab 0"));
       
  1268 	test(a.Length()==4);
       
  1269 	a.Format(_TL("ab %lo"),TInt64(0));
       
  1270 	test(a==_TL("ab 0"));
       
  1271 	test(a.Length()==4);
       
  1272 	a.Format(_TL("ab %lu"),TInt64(0));
       
  1273 	test(a==_TL("ab 0"));
       
  1274 	test(a.Length()==4);
       
  1275 	a.Format(_TL("ab %lb"),MAKE_TINT64((TUint)(KMaxTInt),KMaxTUint));
       
  1276 	test(a==_TL("ab 111111111111111111111111111111111111111111111111111111111111111"));
       
  1277 	test(a.Length()==66);
       
  1278 	a.Format(_TL("ab %lb"),MAKE_TINT64(KMaxTUint,KMaxTUint));
       
  1279 	test(a==_TL("ab 1111111111111111111111111111111111111111111111111111111111111111"));
       
  1280 	test(a.Length()==67);
       
  1281 	a.Format(_TL("ab %lx"),MAKE_TINT64((TUint)(KMaxTInt),KMaxTUint));
       
  1282 	test(a==_TL("ab 7fffffffffffffff"));
       
  1283 	test(a.Length()==19);
       
  1284 	a.Format(_TL("ab %lx"),MAKE_TINT64(KMaxTUint,KMaxTUint));
       
  1285 	test(a==_TL("ab ffffffffffffffff"));
       
  1286 	test(a.Length()==19);
       
  1287 	a.Format(_TL("ab %lo"),MAKE_TINT64((TUint)(KMaxTInt),KMaxTUint));
       
  1288 	test(a==_TL("ab 777777777777777777777"));
       
  1289 	test(a.Length()==24);
       
  1290 	// tests which excercise any 8 byte alignment requirement on 64bit integers
       
  1291 	a.Format(_TL("%li%S"),MAKE_TINT64(1,2),&fred);
       
  1292 	test(a==_TL("4294967298fred"));
       
  1293 	a.Format(_TL("%S%li%S"),&fred,MAKE_TINT64(1,2),&fred);
       
  1294 	test(a==_TL("fred4294967298fred"));
       
  1295 	a.Format(_TL("%lu%S"),MAKE_TINT64(1,2),&fred);
       
  1296 	test(a==_TL("4294967298fred"));
       
  1297 	a.Format(_TL("%S%lu%S"),&fred,MAKE_TINT64(1,2),&fred);
       
  1298 	test(a==_TL("fred4294967298fred"));
       
  1299 
       
  1300 	a.Format(_TL("ab %U"),233);
       
  1301 	test(a==_TL("ab 233"));
       
  1302 	test(a.Length()==6);
       
  1303 	a.Format(_TL("ab %*d"),5,-131);
       
  1304 	test(a==_TL("ab  -131"));
       
  1305 	test(a.Length()==8);
       
  1306 	a.Format(_TL("ab%c"),'x');
       
  1307 	test(a==_TL("abx"));
       
  1308 	test(a.Length()==3);
       
  1309 	a.Format(_TL("%W"),-131);
       
  1310 	test(*(TInt32*)a.Ptr()==-131);
       
  1311 	a.Format(_TL("%M"),-131);
       
  1312 	test(*(TInt32*)a.Ptr()==2113929215);
       
  1313 	a.Format(_TL("%w"),-131);
       
  1314 	test(*(TInt16*)a.Ptr()==-131);
       
  1315 	a.Format(_TL("%m"),-131);
       
  1316 	test(*(TInt16*)a.Ptr()==32255);
       
  1317 	a=_TL("xyz");
       
  1318 	a.AppendFormat(_TL("ab %+xlx"),TInt64(171));
       
  1319 	test(a==_TL("xyzab ab"));
       
  1320 	test(a.Length()==8);
       
  1321 	a=_TL("xyz");
       
  1322 	a.AppendFormat(_TL("ab %5S"),&b);
       
  1323 	test(a==_TL("xyzab   cde"));
       
  1324 	test(a.Length()==11);
       
  1325 	a=_TL("xyz");
       
  1326 	a.AppendFormat(_TL("%W"),-131);
       
  1327 //	test(*(TInt32*)(a.Ptr()+3)==-131); // Alignment-safe version:
       
  1328     TInt val;
       
  1329     Mem::Copy(&val,&a[3],4);
       
  1330 	test(val==-131);
       
  1331 	a=_TL("xyz");
       
  1332 //	a.Append(_TL("abc"),3);
       
  1333 //	test(a==_TL("xyzabc"));
       
  1334 
       
  1335 	a.Format(_TL(""));
       
  1336 	test(a==_TL(""));
       
  1337 	a.Format(_TL(""),9,5);
       
  1338 	test(a==_TL(""));
       
  1339 	a.Format(_TL("qwerty"));
       
  1340 	test(a==_TL("qwerty"));
       
  1341 	a.Format(_TL("qwerty"),9,5);
       
  1342 	test(a==_TL("qwerty"));
       
  1343 	a.Format(_TL("%$1$d%$2$d"),9,5);
       
  1344 	test(a==_TL("95"));
       
  1345 	test(a.Length()==2);
       
  1346 	a.Format(_TL("%$2$d%$1$d"),9,5);
       
  1347 	test(a==_TL("59"));
       
  1348 	test(a.Length()==2);
       
  1349 	b=_TL("eb");
       
  1350 	a.Format(_TL("%$1$S%$2$d"),&b,205);
       
  1351 	test(a==_TL("eb205"));
       
  1352 	test(a.Length()==5);
       
  1353 	a.Format(_TL("%$2$d%$1$S"),&b,205);
       
  1354 	test(a==_TL("205eb"));
       
  1355 	test(a.Length()==5);
       
  1356 	b=_TL("ebdb");
       
  1357 
       
  1358 // Cannot do this on GCC (X86) because of "Cannot pass objects of non-POD type through '...'. Call will abort at runtime".
       
  1359 #if !(defined(__GCC32__) && defined(__X86__))
       
  1360 	const TAny* const zeroTerminatedString=(sizeof(S)==2)? (const TAny*)_S16(":-)E"): (const TAny*)_S8(":-)E");
       
  1361 	const TInt dummyParameter=0;
       
  1362 	Test14_ReorderedParameterFormatting(dummyParameter, 0x20ac, 11, 3, 13.89543, zeroTerminatedString, '!', TInt64(199), 2, &b, 6, 30005, TRealX(0.125), 0x8bdd);
       
  1363 #endif
       
  1364 
       
  1365 	test.Next(_L("Print some numbers"));
       
  1366 	TInt64 TI64 = MAKE_TINT64(0x101010u,0x10101010u);
       
  1367 	test.Printf(_L("    %%ld: %ld\n"),TI64);
       
  1368 	test.Printf(_L("    %%lu: %lu\n"),TI64);
       
  1369 	test.Printf(_L("    %%lx: %lx\n"),TI64);
       
  1370 	test.Printf(_L("    %%lb: %lb\n"),TI64);
       
  1371 	test.Printf(_L("    %%lo: %lo\n\n"),TI64);
       
  1372 	TI64 = UI64LIT(0xabcdef12345678);
       
  1373 	test.Printf(_L("    %%ld: %ld\n"),TI64);
       
  1374 	test.Printf(_L("    %%lu: %lu\n"),TI64);
       
  1375 	test.Printf(_L("    %%lx: %lx\n"),TI64);
       
  1376 	test.Printf(_L("    %%lb: %lb\n"),TI64);
       
  1377 	test.Printf(_L("    %%lo: %lo\n\n"),TI64);
       
  1378 	TI64 = UI64LIT(0x7fffffffffffffff);
       
  1379 	test.Printf(_L("    %%ld: %ld\n"),TI64);
       
  1380 	test.Printf(_L("    %%lu: %lu\n"),TI64);
       
  1381 	test.Printf(_L("    %%lx: %lx\n"),TI64);
       
  1382 	test.Printf(_L("    %%lb: %lb\n"),TI64);
       
  1383 	test.Printf(_L("    %%lo: %lo\n\n"),TI64);
       
  1384 	TI64 = UI64LIT(0x8000000000000000);
       
  1385 	test.Printf(_L("    %%ld: %ld\n"),TI64);
       
  1386 	test.Printf(_L("    %%lu: %lu\n"),TI64);
       
  1387 	test.Printf(_L("    %%lx: %lx\n"),TI64);
       
  1388 	test.Printf(_L("    %%lb: %lb\n"),TI64);
       
  1389 	test.Printf(_L("    %%lo: %lo\n\n"),TI64);
       
  1390 	TI64 = UI64LIT(0xffffffffffffffff);
       
  1391 	test.Printf(_L("    %%ld: %ld\n"),TI64);
       
  1392 	test.Printf(_L("    %%lu: %lu\n"),TI64);
       
  1393 	test.Printf(_L("    %%lx: %lx\n"),TI64);
       
  1394 	test.Printf(_L("    %%lb: %lb\n"),TI64);
       
  1395 	test.Printf(_L("    %%lo: %lo\n\n"),TI64);
       
  1396 
       
  1397 	test.Next(_L("Regression tests"));
       
  1398 	a.Format(_TL("[%-A4p]"));
       
  1399 	test(a==_TL("[AAAA]"));
       
  1400 
       
  1401 	test.End();
       
  1402 	}
       
  1403 
       
  1404 template <class T,class S,class DESTEMPLATE>
       
  1405 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test14_ReorderedParameterFormatting(TInt aDummyParameter, ...)
       
  1406 	{
       
  1407 	VA_LIST parameterList;
       
  1408 	T generated;
       
  1409 	T expected;
       
  1410 
       
  1411 	VA_START(parameterList, aDummyParameter);
       
  1412 	generated.FormatList(_TL("\t%-**.*fqq%.3swww%+*5Ldeeee%.*Srrrrr%0*xtttttt%.3Fyyyyyyy%c"), parameterList);
       
  1413 	test(generated.Length()==61);
       
  1414 	expected.Format(_TL("\t13.895%c%c%c%c%cqq:-)www!!199eeeeebrrrrr007535tttttt0.125yyyyyyy"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1415 	test(generated.Left(generated.Length()-1)==expected);
       
  1416 	test(generated[generated.Length()-1]==(S)0x8bdd);
       
  1417 
       
  1418 	VA_START(parameterList, aDummyParameter);
       
  1419 	generated.FormatList(_TL("\t%$1$-**.*fqq%.3swww%+*5Ldeeee%.*Srrrrr%0*xtttttt%$6$.3Fyyyyyyy%c"), parameterList);
       
  1420 	test(generated.Length()==61);
       
  1421 	expected.Format(_TL("\t13.895%c%c%c%c%cqq:-)www!!199eeeeebrrrrr007535tttttt0.125yyyyyyy"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1422 	test(generated.Left(generated.Length()-1)==expected);
       
  1423 	test(generated[generated.Length()-1]==(S)0x8bdd);
       
  1424 
       
  1425 	VA_START(parameterList, aDummyParameter);
       
  1426 	generated.FormatList(_TL("\t%$6$.3Fqq%.3swww%+*5Ldeeee%.*Srrrrr%0*xtttttt%$1$-**.*fyyyyyyy%c"), parameterList);
       
  1427 	test(generated.Length()==61);
       
  1428 	expected.Format(_TL("\t0.125qq:-)www!!199eeeeebrrrrr007535tttttt13.895%c%c%c%c%cyyyyyyy"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1429 	test(generated.Left(generated.Length()-1)==expected);
       
  1430 	test(generated[generated.Length()-1]==(S)0x8bdd);
       
  1431 
       
  1432 	VA_START(parameterList, aDummyParameter);
       
  1433 	generated.FormatList(_TL("\t%-**.*fqq%.3swww%$5$0*xeeee%.*Srrrrr%$3$+*5Ldtttttt%.3Fyyyyyyy%c"), parameterList);
       
  1434 	test(generated.Length()==61);
       
  1435 	expected.Format(_TL("\t13.895%c%c%c%c%cqq:-)www007535eeeeebrrrrr!!199tttttt0.125yyyyyyy"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1436 	test(generated.Left(generated.Length()-1)==expected);
       
  1437 	test(generated[generated.Length()-1]==(S)0x8bdd);
       
  1438 
       
  1439 	VA_START(parameterList, aDummyParameter);
       
  1440 	generated.FormatList(_TL("\t%-**.*fqq%$4$.*Swww%+*5Ldeeee%$2$.3srrrrr%0*xtttttt%.3Fyyyyyyy%c"), parameterList);
       
  1441 	test(generated.Length()==61);
       
  1442 	expected.Format(_TL("\t13.895%c%c%c%c%cqqebwww!!199eeee:-)rrrrr007535tttttt0.125yyyyyyy"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1443 	test(generated.Left(generated.Length()-1)==expected);
       
  1444 	test(generated[generated.Length()-1]==(S)0x8bdd);
       
  1445 
       
  1446 	VA_START(parameterList, aDummyParameter);
       
  1447 	generated.FormatList(_TL("\t%-**.*fqq%.3swww%+*5Ldeeee%$7$crrrrr%0*xtttttt%.3Fyyyyyyy%$4$.*S"), parameterList);
       
  1448 	test(generated.Length()==61);
       
  1449 	expected.Format(_TL("\t13.895%c%c%c%c%cqq:-)www!!199eeee"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1450 	test(generated.Left(29)==expected);
       
  1451 	test(generated[29]==(S)0x8bdd);
       
  1452 	test(generated.Mid(29+1)==_TL("rrrrr007535tttttt0.125yyyyyyyeb"));
       
  1453 
       
  1454 	VA_START(parameterList, aDummyParameter);
       
  1455 	generated.FormatList(_TL("\t%$4$.*Sqq%.3swww%+*5Ldeeee%$6$.3Frrrrr%0*xtttttt%$1$-**.*fyyyyyyy%c"), parameterList);
       
  1456 	test(generated.Length()==61);
       
  1457 	expected.Format(_TL("\tebqq:-)www!!199eeee0.125rrrrr007535tttttt13.895%c%c%c%c%cyyyyyyy"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1458 	test(generated.Left(generated.Length()-1)==expected);
       
  1459 	test(generated[generated.Length()-1]==(S)0x8bdd);
       
  1460 
       
  1461 	VA_START(parameterList, aDummyParameter);
       
  1462 	generated.FormatList(_TL("\t%$7$cqq%$6$.3Fwww%$5$0*xeeee%.*Srrrrr%$3$+*5Ldtttttt%$2$.3syyyyyyy%$1$-**.*f"), parameterList);
       
  1463 	test(generated.Length()==61);
       
  1464 	test(generated.Left(1)==_TL("\t"));
       
  1465 	test(generated[1]==(S)0x8bdd);
       
  1466 	expected.Format(_TL("qq0.125www007535eeeeebrrrrr!!199tttttt:-)yyyyyyy13.895%c%c%c%c%c"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1467 	test(generated.Mid(2)==expected);
       
  1468 
       
  1469 	VA_START(parameterList, aDummyParameter);
       
  1470 	generated.FormatList(_TL("\t%$7$cqq%$6$.3Fwww%$5$0*xeeee%$4$.*Srrrrr%$3$+*5Ldtttttt%$2$.3syyyyyyy%$1$-**.*f"), parameterList);
       
  1471 	test(generated.Length()==61);
       
  1472 	test(generated.Left(1)==_TL("\t"));
       
  1473 	test(generated[1]==(S)0x8bdd);
       
  1474 	expected.Format(_TL("qq0.125www007535eeeeebrrrrr!!199tttttt:-)yyyyyyy13.895%c%c%c%c%c"), (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac, (S)0x20ac);
       
  1475 	test(generated.Mid(2)==expected);
       
  1476 	}
       
  1477 
       
  1478 template <class T,class S,class DESTEMPLATE>
       
  1479 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::Test15()
       
  1480 // Replacing
       
  1481 	{
       
  1482 	test.Start(_L("Replace"));
       
  1483 	T a,b;
       
  1484 	test(a.MaxLength()>=9);
       
  1485 	a=_TL("abccccc");
       
  1486 	b=_TL("def");
       
  1487 	a.Replace(3,4,b); // Replace with smaller in middle (insert and delete)
       
  1488 	test(a==_TL("abcdef"));
       
  1489 	a.Replace(1,1,b); // Replace with larger in middle (insert and delete)
       
  1490 	test(a==_TL("adefcdef"));
       
  1491 	a.Replace(0,8,_TL("")); // Replace complete string (delete)
       
  1492 	test(a==_TL(""));
       
  1493 	a.Replace(0,0,b); // Replace at beginning (insert)
       
  1494 	test(a==b);
       
  1495 	a.Replace(3,0,_TL("xyz")); // Replace at end (append)
       
  1496 	test(a==_TL("defxyz"));
       
  1497 	a.Replace(0,0,_TL("")); // Replace nothing at beginning (do nothing)
       
  1498 	test(a==_TL("defxyz"));
       
  1499 	a.Replace(6,0,_TL("")); // Replace nothing at end (do nothing)
       
  1500 	test(a==_TL("defxyz"));
       
  1501 	//a.Replace(6,1,_TL("")); // this will panic - no char after end to replace
       
  1502 	//a.Replace(0,7,_TL("")); // this will panic - aint 7 chars to replace
       
  1503 	test.End();
       
  1504 	}
       
  1505 
       
  1506 template<class T,class S,class DESTEMPLATE>
       
  1507 GLDEF_C void TestTBuf<T,S,DESTEMPLATE>::test_TBuf()
       
  1508 // Test the TBuf class.
       
  1509 	{
       
  1510 	test.Start(_L("All operations"));
       
  1511 	Test1();
       
  1512 	test.Next(_L("Constructors"));
       
  1513 	Test2();
       
  1514 	test.Next(_L("Additional tests"));
       
  1515 	Test3();
       
  1516 	test.Next(_L("Comparison operators"));
       
  1517 	Test4();
       
  1518 	test.Next(_L("Property access"));
       
  1519 	Test5();
       
  1520 	test.Next(_L("Fill and swap"));
       
  1521 	Test6();
       
  1522 	test.Next(_L("Conversion operators"));
       
  1523 	Test7();
       
  1524 	test.Next(_L("Comparison"));
       
  1525 	Test8();
       
  1526 	test.Next(_L("Matching"));
       
  1527 	Test9();
       
  1528 	test.Next(_L("Locating"));
       
  1529 	Test10();
       
  1530 	test.Next(_L("Copying"));
       
  1531 	Test11();
       
  1532 	test.Next(_L("Finding"));
       
  1533 	Test12();
       
  1534 	test.Next(_L("Basic like ops"));
       
  1535 	Test13();
       
  1536 	test.Next(_L("Formating"));
       
  1537 	Test14();
       
  1538 	test.Next(_L("Replacing"));
       
  1539 	Test15();
       
  1540 	test.End();
       
  1541 	}
       
  1542 
       
  1543 LOCAL_C void testFormat()
       
  1544 	{
       
  1545 	TBuf<0x100> aa;
       
  1546 	aa.Format(_L("x%- 5fx"), 6.2345678);
       
  1547 	test(aa==_L("x6.234568x"));
       
  1548 	aa.Format(_L("x%+ 5fx"), 6.2345678);
       
  1549 	test(aa==_L("x6.234568x"));
       
  1550 	aa.Format(_L("x% 5fx"), 6.2345678);
       
  1551 	test(aa==_L("x6.234568x"));
       
  1552 	aa.Format(_L("x%= 5fx"), 6.2345678);
       
  1553 	test(aa==_L("x6.234568x"));
       
  1554 	aa.Format(_L("x%- 10fx"), 6.2345);
       
  1555 	test(aa==_L("x6.234500  x"));
       
  1556 	aa.Format(_L("x%+ 10fx"), 6.2345);
       
  1557 	test(aa==_L("x  6.234500x"));
       
  1558 	aa.Format(_L("x% 10fx"), 6.2345);
       
  1559 	test(aa==_L("x  6.234500x"));
       
  1560 	aa.Format(_L("x%= 10fx"), 6.2345);
       
  1561 	test(aa==_L("x 6.234500 x"));
       
  1562 	aa.Format(_L("x%10fx"), 12345352342.545);
       
  1563 	test(aa==_L("x12,345,352,342.545000x"));
       
  1564 	aa.Format(_L("x%20.9fx"), 1.0123456789);
       
  1565 	test(aa==_L("x         1.012345679x"));
       
  1566 	aa.Format(_L("x%5.1fx"), 1.99);
       
  1567 	test(aa==_L("x  2.0x"));
       
  1568 
       
  1569 // Cannot do these on GCC (X86) because of "Cannot pass objects of non-POD type through '...'. Call will abort at runtime".
       
  1570 #if !(defined(__GCC32__) && defined(__X86__))
       
  1571 	aa.Format(_L("x%- 5Fx"), TRealX(6.2345678));
       
  1572 	test(aa==_L("x6.234568x"));
       
  1573 	aa.Format(_L("x%+ 5Fx"), TRealX(6.2345678));
       
  1574 	test(aa==_L("x6.234568x"));
       
  1575 	aa.Format(_L("x% 5Fx"), TRealX(6.2345678));
       
  1576 	test(aa==_L("x6.234568x"));
       
  1577 	aa.Format(_L("x%= 5Fx"), TRealX(6.2345678));
       
  1578 	test(aa==_L("x6.234568x"));
       
  1579 	aa.Format(_L("x%- 10Fx"), TRealX(6.2345));
       
  1580 	test(aa==_L("x6.234500  x"));
       
  1581 	aa.Format(_L("x%+ 10Fx"), TRealX(6.2345));
       
  1582 	test(aa==_L("x  6.234500x"));
       
  1583 	aa.Format(_L("x% 10Fx"), TRealX(6.2345));
       
  1584 	test(aa==_L("x  6.234500x"));
       
  1585 	aa.Format(_L("x%+010Fx"), TRealX(6.2345));
       
  1586 	test(aa==_L("x006.234500x"));
       
  1587 	aa.Format(_L("x%+10Fx"), TRealX(6.2345));
       
  1588 	test(aa==_L("x  6.234500x"));
       
  1589 	aa.Format(_L("x%10Fx"), TRealX(6.2345));
       
  1590 	test(aa==_L("x  6.234500x"));
       
  1591 	aa.Format(_L("x%010Fx"), TRealX(6.2345));
       
  1592 	test(aa==_L("x006.234500x"));
       
  1593 	aa.Format(_L("x%= 10Fx"), TRealX(6.2345));
       
  1594 	test(aa==_L("x 6.234500 x"));
       
  1595 	aa.Format(_L("x%10Fx"), TRealX(12345352342.545));
       
  1596 	test(aa==_L("x12,345,352,342.545000x"));
       
  1597 	aa.Format(_L("x%20.9Fx"), TRealX(1.0123456789));
       
  1598 	test(aa==_L("x         1.012345679x"));
       
  1599 	aa.Format(_L("x%5.1Fx"), TRealX(1.99));
       
  1600 	test(aa==_L("x  2.0x"));
       
  1601 #endif
       
  1602 
       
  1603 	aa.Format(_L("x%- 5ex"), 6.2345678);
       
  1604 	test(aa==_L("x6.234568E+00x"));
       
  1605 	aa.Format(_L("x%+ 5ex"), 6.2345678);
       
  1606 	test(aa==_L("x6.234568E+00x"));
       
  1607 	aa.Format(_L("x% 5ex"), 6.2345678);
       
  1608 	test(aa==_L("x6.234568E+00x"));
       
  1609 	aa.Format(_L("x%= 5ex"), 6.2345678);
       
  1610 	test(aa==_L("x6.234568E+00x"));
       
  1611 	aa.Format(_L("x%- 14ex"), 6.2345);
       
  1612 	test(aa==_L("x6.234500E+00  x"));
       
  1613 	aa.Format(_L("x%+ 14ex"), 6.2345);
       
  1614 	test(aa==_L("x  6.234500E+00x"));
       
  1615 	aa.Format(_L("x% 14ex"), 6.2345);
       
  1616 	test(aa==_L("x  6.234500E+00x"));
       
  1617 	aa.Format(_L("x%= 14ex"), 6.2345);
       
  1618 	test(aa==_L("x 6.234500E+00 x"));
       
  1619 	aa.Format(_L("x%10ex"), 12345352342.545);
       
  1620 	test(aa==_L("x1.234535E+10x"));
       
  1621 	aa.Format(_L("x%20.9ex"), 1.0123456789);
       
  1622 	test(aa==_L("x     1.012345679E+00x"));
       
  1623 	aa.Format(_L("x%5.1ex"), 1.99);
       
  1624 	test(aa==_L("x2.0E+00x"));
       
  1625 	}
       
  1626 
       
  1627 
       
  1628 class TO8 : public TDes8Overflow
       
  1629 	{
       
  1630 public:
       
  1631 	virtual void Overflow(TDes8 &aDes);
       
  1632 	};
       
  1633 
       
  1634 void TO8::Overflow(TDes8 &aDes)
       
  1635 	{
       
  1636 	aDes=_L8("OVERFLOW");
       
  1637 	}
       
  1638 
       
  1639 class TO8L : public TDes8Overflow
       
  1640 	{
       
  1641 public:
       
  1642 	virtual void Overflow(TDes8 &aDes);
       
  1643 	};
       
  1644 
       
  1645 void TO8L::Overflow(TDes8 &/*aDes*/)
       
  1646 	{
       
  1647 	User::Leave(KErrOverflow);
       
  1648 	}
       
  1649 
       
  1650 class TO16 : public TDes16Overflow
       
  1651 	{
       
  1652 public:
       
  1653 	virtual void Overflow(TDes16 &aDes);
       
  1654 	};
       
  1655 
       
  1656 void TO16::Overflow(TDes16 &aDes)
       
  1657 	{
       
  1658 	aDes=_L16("OVERFLOW");
       
  1659 	}
       
  1660 
       
  1661 class TO16L : public TDes16Overflow
       
  1662 	{
       
  1663 public:
       
  1664 	virtual void Overflow(TDes16 &aDes);
       
  1665 	};
       
  1666 
       
  1667 void TO16L::Overflow(TDes16 &/*aDes*/)
       
  1668 	{
       
  1669 	User::Leave(KErrOverflow);
       
  1670 	}
       
  1671 
       
  1672 void append8(TDes8 &aBuf, TDes8Overflow *aHandler, TRefByValue<const TDesC8> aFmt, ...)
       
  1673 	{
       
  1674 	VA_LIST list;
       
  1675 	VA_START(list, aFmt);
       
  1676 	aBuf.AppendFormatList(aFmt, list, aHandler);
       
  1677 	}
       
  1678 
       
  1679 void append16(TDes16 &aBuf, TDes16Overflow *aHandler, TRefByValue<const TDesC16> aFmt, ...)
       
  1680 	{
       
  1681 	VA_LIST list;
       
  1682 	VA_START(list, aFmt);
       
  1683 	aBuf.AppendFormatList(aFmt, list, aHandler);
       
  1684 	}
       
  1685 
       
  1686 void testOverflow()
       
  1687 	{
       
  1688 	test.Start(_L("Test no overflow"));
       
  1689 	TBuf8<16> buf=_L8("A ");
       
  1690 	append8(buf, NULL, _L8("Descriptor"));
       
  1691 	test(buf==_L8("A Descriptor"));
       
  1692 
       
  1693 	test.Printf(_L("Use a non-leaving overflow handler\n"));
       
  1694 	test.Next(_L("Force overflow with no conversions"));
       
  1695     TO8 overflow;
       
  1696 	append8(buf, &overflow, _L8("12345678901234567"));
       
  1697 	test(buf==_L8("OVERFLOW"));
       
  1698 
       
  1699 	test.Next(_L("Force overflow with decimal conversion"));
       
  1700 	buf=_L8("A Descriptor");
       
  1701 	append8(buf, &overflow,  _L8("%d"), 12345678);
       
  1702 	test(buf==_L8("OVERFLOW"));
       
  1703 
       
  1704 	test.Printf(_L("Use a leaving overflow handler\n"));
       
  1705 	test.Next(_L("AppendFormatList with no overflow"));
       
  1706 	buf=_L8("A Descriptor");
       
  1707     TO8L overflowLeave;
       
  1708 	TRAPD(r, append8(buf, &overflowLeave, _L8("ONE")));
       
  1709 	test(r==KErrNone);
       
  1710 	test(buf==_L8("A DescriptorONE"));
       
  1711 	test.Next(_L("Force overflow with hexadecimal conversion"));
       
  1712 	buf=_L8("A Descriptor");
       
  1713 	TRAP(r, append8(buf, &overflowLeave, _L8("%08x"), 0));
       
  1714 	test(r==KErrOverflow);
       
  1715 		{
       
  1716 		test.Printf(_L("Repeat tests with TBuf16\n"));
       
  1717 		test.Next(_L("Test no overflow"));
       
  1718 		TBuf16<16> buf=_L16("A ");
       
  1719 		append16(buf, NULL, _L16("Descriptor"));
       
  1720 		test(buf==_L16("A Descriptor"));
       
  1721 
       
  1722 		test.Printf(_L("Use a non-leaving overflow handler\n"));
       
  1723 		test.Next(_L("Force overflow with no conversions"));
       
  1724 		TO16 overflow;
       
  1725 		append16(buf, &overflow, _L16("12345678901234567"));
       
  1726 		test(buf==_L16("OVERFLOW"));
       
  1727 
       
  1728 		test.Next(_L("Force overflow with decimal conversion"));
       
  1729 		buf=_L16("A Descriptor");
       
  1730 		append16(buf, &overflow,  _L16("%d"), 12345678);
       
  1731 		test(buf==_L16("OVERFLOW"));
       
  1732 
       
  1733 		test.Printf(_L("Use a leaving overflow handler\n"));
       
  1734 		test.Next(_L("AppendFormatList with no overflow"));
       
  1735 		buf=_L16("A Descriptor");
       
  1736 		TO16L overflowLeave;
       
  1737 		TRAPD(r, append16(buf, &overflowLeave, _L16("ONE")));
       
  1738 		test(r==KErrNone);
       
  1739 		test(buf==_L16("A DescriptorONE"));
       
  1740 		test.Next(_L("Force overflow with hexadecimal conversion"));
       
  1741 		buf=_L16("A Descriptor");
       
  1742 		TRAP(r, append16(buf, &overflowLeave, _L16("%08x"), 0));
       
  1743 		test(r==KErrOverflow);
       
  1744 		}
       
  1745 	test.End();
       
  1746 	}
       
  1747 
       
  1748 void testIgnoreOverflow()
       
  1749 	{
       
  1750 	test.Start(_L("Test no overflow"));
       
  1751 	TBuf8<16> buf=_L8("A ");
       
  1752 	append8(buf, NULL, _L8("Descriptor"));
       
  1753 	test(buf==_L8("A Descriptor"));
       
  1754 
       
  1755 	test.Printf(_L("Use a non-leaving overflow handler\n"));
       
  1756 	test.Next(_L("Force overflow with no conversions"));
       
  1757     TDes8IgnoreOverflow overflow;
       
  1758 	append8(buf, &overflow, _L8("12345678901234567"));
       
  1759 	test(buf==_L8("A Descriptor1234"));
       
  1760 
       
  1761 	test.Next(_L("Force overflow with decimal conversion"));
       
  1762 	buf=_L8("A Descriptor");
       
  1763 	append8(buf, &overflow,  _L8("%d"), 123456789);
       
  1764 	test(buf==_L8("A Descriptor"));
       
  1765 
       
  1766 	//test.Printf(_L("Repeat tests with TBuf16\n"));
       
  1767 	test.Next(_L("Test no overflow"));
       
  1768 	TBuf16<17> buf2=_L16("A ");
       
  1769 	append16(buf2, NULL, _L16("Descriptor"));
       
  1770 	test(buf2==_L16("A Descriptor"));
       
  1771 
       
  1772 	test.Printf(_L("Use a non-leaving overflow handler\n"));
       
  1773 	test.Next(_L("Force overflow with no conversions"));
       
  1774 	TDes16IgnoreOverflow overflow2;
       
  1775 	append16(buf2, &overflow2, _L16("12345678901234567"));
       
  1776 	test(buf2==_L16("A Descriptor12345"));
       
  1777 
       
  1778 	test.Next(_L("Force overflow with decimal conversion"));
       
  1779 	buf2=_L16("A Descriptor");
       
  1780 	append16(buf2, &overflow2,  _L16("%d"), 123456789);
       
  1781 	test(buf2==_L16("A Descriptor"));
       
  1782 
       
  1783 	test.End();
       
  1784 	}
       
  1785 
       
  1786 void testAppendFormatIgnoreOverflow()
       
  1787 	{
       
  1788 	test.Start(_L("Test no overflow"));
       
  1789 	TBuf8<16> buf;
       
  1790 	buf.AppendFormat(_L8("A Descriptor"));	
       
  1791 	test(buf==_L8("A Descriptor"));
       
  1792 	
       
  1793 	test.Next(_L("Force overflow with no conversions"));
       
  1794     TDes8IgnoreOverflow overflow;
       
  1795 	buf.AppendFormat(_L8("123456789012345679"),&overflow);
       
  1796 	test(buf==_L8("A Descriptor1234"));
       
  1797 	
       
  1798 	test.Next(_L("Force overflow with decimal conversion"));
       
  1799 	buf = _L8("Symbian OS");
       
  1800 	buf.AppendFormat(_L8("%d"), &overflow, 1234567);
       
  1801 	test(buf==_L8("Symbian OS"));
       
  1802 	
       
  1803 	test.Next(_L("Test no overflow"));
       
  1804 	TBuf16<16> buf2;
       
  1805 	buf2.AppendFormat(_L16("A Descriptor"));	
       
  1806 	test(buf2==_L16("A Descriptor"));
       
  1807 	
       
  1808 	test.Next(_L("Force overflow with no conversions"));
       
  1809     TDes16IgnoreOverflow overflow2;
       
  1810 	buf2.AppendFormat(_L16("123456789012345679"),&overflow2);
       
  1811 	test(buf2==_L16("A Descriptor1234"));
       
  1812 	
       
  1813 	test.Next(_L("Force overflow with decimal conversion"));
       
  1814 	buf2 = _L16("Symbian OS");
       
  1815 	buf2.AppendFormat(_L16("%d"), &overflow2, 1234567);
       
  1816 	test(buf2==_L16("Symbian OS"));
       
  1817 
       
  1818 	test.End();
       
  1819 
       
  1820 
       
  1821 	}
       
  1822 
       
  1823 // INC061330  AV28Crit: NTT - TInt TDesC16.FindC -method is giving strange output values 
       
  1824 // This test should pass with "ELangPrcChinese" locale.
       
  1825 void INC061330()
       
  1826 	{
       
  1827 	TLanguage defaultLang = User::Language();
       
  1828 
       
  1829 	TInt err = HAL::Set(HAL::ELanguageIndex, ELangPrcChinese);
       
  1830 	test(err == KErrNone);	
       
  1831 
       
  1832 	TBuf<50> libraryName;
       
  1833 
       
  1834 	libraryName.Format(_L("ELOCL.%02d"), ELangPrcChinese);
       
  1835 
       
  1836 	//Reset the locale
       
  1837 	err=UserSvr::ChangeLocale(KNullDesC);
       
  1838 	test(err==KErrNone);
       
  1839 
       
  1840 	//Now change to chinese locale
       
  1841 	err = UserSvr::ChangeLocale(libraryName);
       
  1842 	if(err==KErrNotFound)
       
  1843 		{
       
  1844 		test.Printf(_L("TEST CASE NOT RUN BECAUSE ELangPrcChinese LOCALE NOT FOUND!\n"));
       
  1845 		HAL::Set(HAL::ELanguageIndex, defaultLang);
       
  1846 		return;
       
  1847 		}
       
  1848 	test(err == KErrNone);
       
  1849 	
       
  1850 	TLanguage lang = User::Language();
       
  1851 	test(lang == ELangPrcChinese);
       
  1852 
       
  1853 	TInt pos;
       
  1854 	_LIT(KBuf, "hello");
       
  1855 
       
  1856 	pos = KBuf().FindC(_L("a"));
       
  1857 	test(pos == KErrNotFound);
       
  1858 
       
  1859 	pos = KBuf().FindC(_L("zzz"));
       
  1860 	test(pos == KErrNotFound);
       
  1861 
       
  1862 	pos = KBuf().FindC(_L("."));
       
  1863 	test(pos == KErrNotFound);
       
  1864 
       
  1865 	pos = KBuf().FindC(_L(":"));
       
  1866 	test(pos == KErrNotFound);
       
  1867 
       
  1868 	pos = KBuf().FindC(_L("hela"));
       
  1869 	test(pos == KErrNotFound);
       
  1870 
       
  1871 	//Reset the locale
       
  1872 	err=UserSvr::ChangeLocale(KNullDesC);
       
  1873 	test(err==KErrNone);
       
  1874 	
       
  1875 	//Now revert to the original default english locale
       
  1876 	libraryName.Format(_L("ELOCL.%02d"), defaultLang);
       
  1877 	test(err == KErrNone);
       
  1878 	err = UserSvr::ChangeLocale(libraryName);
       
  1879 	test(err == KErrNone);
       
  1880 	
       
  1881 	lang = User::Language();
       
  1882 	test(lang == defaultLang);
       
  1883 	}
       
  1884 #ifndef _DEBUG
       
  1885 #pragma warning( disable : 4702) //Unreachable code
       
  1886 #pragma warning( disable : 4710) //Function not expanded
       
  1887 #endif
       
  1888 GLDEF_C TInt E32Main()
       
  1889 // Test the TBuf type.
       
  1890     {
       
  1891 	test.Title();
       
  1892 
       
  1893 	test.Start(_L("class TBuf16<0x50>"));
       
  1894 	TestTBuf<TBuf16<0x50>,TText16,TPtrC16> c(0x50);
       
  1895 	c.test_TBuf();
       
  1896 	
       
  1897 	test.Next(_L("class TBuf8<0x50>"));
       
  1898 	TestTBuf<TBuf8<0x50>,TText8,TPtrC8> b(0x50);
       
  1899 	b.test_TBuf();
       
  1900 	
       
  1901 	test.Next(_L("class TBuf<0x50>"));
       
  1902 	TestTBuf<TBuf<0x50>,TText,TPtrC> a(0x50);
       
  1903 	a.test_TBuf();
       
  1904 
       
  1905 	test.Next(_L("TReal formating"));
       
  1906 	testFormat();
       
  1907 
       
  1908 	test.Next(_L("Test overflow handler"));
       
  1909 	testOverflow();
       
  1910 
       
  1911 	test.Next(_L("Test ignore overflow handler"));
       
  1912 	testIgnoreOverflow();
       
  1913 
       
  1914 	test.Next(_L("Test Format ignore overflow handler"));
       
  1915 	testAppendFormatIgnoreOverflow();
       
  1916 
       
  1917 	test.Next(_L("INC061330"));
       
  1918 	INC061330();
       
  1919 
       
  1920 	test.End();
       
  1921 
       
  1922 	return(KErrNone);
       
  1923     }
       
  1924 
       
  1925 //#pragma warning( default : 4702)
       
  1926 //#pragma warning( default : 4710)
       
  1927 
       
  1928