os/kernelhwsrv/kerneltest/e32test/buffer/ANY_PTR_ARR.CPP
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of the License "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// e32test\buffer\any_arr.cpp
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
#include <e32test.h>
sl@0
    19
#include <e32math.h>
sl@0
    20
#include <e32std.h>
sl@0
    21
#include <e32std_private.h>
sl@0
    22
sl@0
    23
#define NUM_TESTS 200
sl@0
    24
const TInt KArraySize=1024;
sl@0
    25
sl@0
    26
GLREF_D RTest test;
sl@0
    27
GLREF_C TInt Random();
sl@0
    28
sl@0
    29
struct SPointerArray
sl@0
    30
	{
sl@0
    31
	TInt iCount;
sl@0
    32
	TAny** iEntries;
sl@0
    33
	TInt iAllocated;
sl@0
    34
	TInt iGranularity;
sl@0
    35
	};
sl@0
    36
sl@0
    37
LOCAL_D TInt64* Int64s;
sl@0
    38
sl@0
    39
LOCAL_C TInt64 Random64(TInt64& aMask)
sl@0
    40
	{
sl@0
    41
	TInt64 x = MAKE_TINT64(Random()&I64HIGH(aMask), Random()&I64LOW(aMask));
sl@0
    42
	return x;
sl@0
    43
	}
sl@0
    44
sl@0
    45
LOCAL_C TInt AnyAppendAndAccessTest(TInt aCount, TInt aNumTests, TInt64 aMask)
sl@0
    46
	{
sl@0
    47
	TInt n;
sl@0
    48
	for (n=0; n<aNumTests; n++)
sl@0
    49
		{
sl@0
    50
		RPointerArray<TAny> a;
sl@0
    51
		TInt64 *pA=new TInt64[aCount];
sl@0
    52
		if (!pA)
sl@0
    53
			{
sl@0
    54
			a.Close();
sl@0
    55
			return -65535;
sl@0
    56
			}
sl@0
    57
		TInt i;
sl@0
    58
		for (i=0; i<aCount; i++)
sl@0
    59
			{
sl@0
    60
			Int64s[i]=Random64(aMask);
sl@0
    61
			pA[i]=Int64s[i];
sl@0
    62
			a.Append(&Int64s[i]);
sl@0
    63
			}
sl@0
    64
		if (a.Count()!=aCount)
sl@0
    65
			{
sl@0
    66
			a.Close();
sl@0
    67
			return -1;
sl@0
    68
			}
sl@0
    69
		for (i=0; i<aCount; i++)
sl@0
    70
			{
sl@0
    71
			if (a[i]!=&Int64s[i])
sl@0
    72
				{
sl@0
    73
				a.Close();
sl@0
    74
				return -2;
sl@0
    75
				}
sl@0
    76
			if (*(TInt64*)a[i]!=pA[i])
sl@0
    77
				{
sl@0
    78
				a.Close();
sl@0
    79
				return -3;
sl@0
    80
				}
sl@0
    81
			a[i]=&pA[i];
sl@0
    82
			}
sl@0
    83
		if (a.Count()!=aCount)
sl@0
    84
			{
sl@0
    85
			a.Close();
sl@0
    86
			return -4;
sl@0
    87
			}
sl@0
    88
		for (i=0; i<aCount; i++)
sl@0
    89
			{
sl@0
    90
			if (a[i]!=&pA[i])
sl@0
    91
				{
sl@0
    92
				a.Close();
sl@0
    93
				return -5;
sl@0
    94
				}
sl@0
    95
			if (*(TInt64*)a[i]!=Int64s[i])
sl@0
    96
				{
sl@0
    97
				a.Close();
sl@0
    98
				return -6;
sl@0
    99
				}
sl@0
   100
			}
sl@0
   101
		delete[] pA;
sl@0
   102
		a.Close();
sl@0
   103
		}
sl@0
   104
	return KErrNone;
sl@0
   105
	}
sl@0
   106
sl@0
   107
LOCAL_C TInt AnyFindTest(TInt aCount, TInt aNumTests, TInt64 aMask)
sl@0
   108
	{
sl@0
   109
	TInt n;
sl@0
   110
	for (n=0; n<aNumTests; n++)
sl@0
   111
		{
sl@0
   112
		RPointerArray<TAny> a;
sl@0
   113
		TInt64 *pA=new TInt64[aCount];
sl@0
   114
		if (!pA)
sl@0
   115
			{
sl@0
   116
			a.Close();
sl@0
   117
			return -65535;
sl@0
   118
			}
sl@0
   119
		TInt i;
sl@0
   120
		for (i=0; i<aCount; i++)
sl@0
   121
			{
sl@0
   122
			pA[i]=Random64(aMask);
sl@0
   123
			Int64s[i]=pA[i];
sl@0
   124
			a.Append(&Int64s[i]);
sl@0
   125
			}
sl@0
   126
		if (a.Count()!=aCount)
sl@0
   127
			{
sl@0
   128
			a.Close();
sl@0
   129
			return -1;
sl@0
   130
			}
sl@0
   131
		for (i=0; i<aCount; i++)
sl@0
   132
			{
sl@0
   133
			TInt r=a.Find(&Int64s[i]);
sl@0
   134
			if (r!=i)
sl@0
   135
				{
sl@0
   136
				a.Close();
sl@0
   137
				return -2;
sl@0
   138
				}
sl@0
   139
			r=a.Find(&pA[i]);
sl@0
   140
			if (r>=0)
sl@0
   141
				{
sl@0
   142
				a.Close();
sl@0
   143
				return -3;
sl@0
   144
				}
sl@0
   145
			r=a.FindInAddressOrder(&Int64s[i]);
sl@0
   146
			if (r!=i)
sl@0
   147
				{
sl@0
   148
				a.Close();
sl@0
   149
				return -4;
sl@0
   150
				}
sl@0
   151
			TInt j;
sl@0
   152
			r=a.FindInAddressOrder(&Int64s[i], j);
sl@0
   153
			if (r!=KErrNone || j!=i)
sl@0
   154
				{
sl@0
   155
				a.Close();
sl@0
   156
				return -5;
sl@0
   157
				}
sl@0
   158
			/*
sl@0
   159
			r=a.FindInAddressOrder(((TInt*)&Int64s[i])-1, j);
sl@0
   160
			test.Printf(_L("n == %d, i == %d, r == %d, j == %d"), n, i, r, j);
sl@0
   161
			if (r!=KErrNotFound || j!=i)
sl@0
   162
				{
sl@0
   163
				a.Close();
sl@0
   164
				return -6;
sl@0
   165
				}
sl@0
   166
			*/
sl@0
   167
			}
sl@0
   168
		delete[] pA;
sl@0
   169
		a.Close();
sl@0
   170
		}
sl@0
   171
	return KErrNone;
sl@0
   172
	}
sl@0
   173
sl@0
   174
LOCAL_C TInt AnyInsertInAddressOrderTest(TInt aCount, TInt aNumTests, TUint aMask)
sl@0
   175
	{
sl@0
   176
	TInt n;
sl@0
   177
	for (n=0; n<aNumTests; n++)
sl@0
   178
		{
sl@0
   179
		RPointerArray<TAny> a;
sl@0
   180
		RPointerArray<TAny> b;
sl@0
   181
		RPointerArray<TAny> c;
sl@0
   182
		TInt i;
sl@0
   183
		TInt cc=0;
sl@0
   184
		for (i=0; i<aCount; i++)
sl@0
   185
			{
sl@0
   186
			TAny* x=(TAny*)(((TUint)Random())&aMask);  // don't dereference this!
sl@0
   187
			a.Append(x);
sl@0
   188
			b.InsertInAddressOrderAllowRepeats(x);
sl@0
   189
			TInt r=c.InsertInAddressOrder(x);
sl@0
   190
			if (r==KErrNone)
sl@0
   191
				cc++;
sl@0
   192
			}
sl@0
   193
		if (a.Count()!=aCount)
sl@0
   194
			{
sl@0
   195
			a.Close();
sl@0
   196
			b.Close();
sl@0
   197
			c.Close();
sl@0
   198
			return -1;
sl@0
   199
			}
sl@0
   200
		if (b.Count()!=aCount)
sl@0
   201
			{
sl@0
   202
			a.Close();
sl@0
   203
			b.Close();
sl@0
   204
			c.Close();
sl@0
   205
			return -2;
sl@0
   206
			}
sl@0
   207
		for (i=0; i<aCount-1; i++)
sl@0
   208
			{
sl@0
   209
			if ((TUint)b[i]>(TUint)b[i+1])
sl@0
   210
				{
sl@0
   211
				a.Close();
sl@0
   212
				b.Close();
sl@0
   213
				c.Close();
sl@0
   214
				return -3;
sl@0
   215
				}
sl@0
   216
			}
sl@0
   217
		for (i=0; i<aCount; i++)
sl@0
   218
			{
sl@0
   219
			if (a.Find(b[i])<0)
sl@0
   220
				{
sl@0
   221
				a.Close();
sl@0
   222
				b.Close();
sl@0
   223
				c.Close();
sl@0
   224
				return -4;
sl@0
   225
				}
sl@0
   226
			if (b.Find(a[i])<0)
sl@0
   227
				{
sl@0
   228
				a.Close();
sl@0
   229
				b.Close();
sl@0
   230
				c.Close();
sl@0
   231
				return -5;
sl@0
   232
				}
sl@0
   233
			if (c.Find(a[i])<0)
sl@0
   234
				{
sl@0
   235
				a.Close();
sl@0
   236
				b.Close();
sl@0
   237
				c.Close();
sl@0
   238
				return -6;
sl@0
   239
				}
sl@0
   240
			}
sl@0
   241
		if (c.Count()!=cc)
sl@0
   242
			{
sl@0
   243
			a.Close();
sl@0
   244
			b.Close();
sl@0
   245
			c.Close();
sl@0
   246
			return -7;
sl@0
   247
			}
sl@0
   248
		for (i=0; i<c.Count()-1; i++)
sl@0
   249
			{
sl@0
   250
			if ((TUint)c[i]>=(TUint)c[i+1])
sl@0
   251
				{
sl@0
   252
				a.Close();
sl@0
   253
				b.Close();
sl@0
   254
				c.Close();
sl@0
   255
				return -8;
sl@0
   256
				}
sl@0
   257
			if (a.Find(c[i])<0)
sl@0
   258
				{
sl@0
   259
				a.Close();
sl@0
   260
				b.Close();
sl@0
   261
				c.Close();
sl@0
   262
				return -9;
sl@0
   263
				}
sl@0
   264
			}
sl@0
   265
		a.Close();
sl@0
   266
		b.Close();
sl@0
   267
		c.Close();
sl@0
   268
		}
sl@0
   269
	return KErrNone;
sl@0
   270
	}
sl@0
   271
sl@0
   272
LOCAL_C TInt AnySortIntoAddressOrderTest(TInt aCount, TInt aNumTests, TUint aMask)
sl@0
   273
	{
sl@0
   274
	TInt n;
sl@0
   275
	for (n=0; n<aNumTests; n++)
sl@0
   276
		{
sl@0
   277
		RPointerArray<TAny> a;
sl@0
   278
		RPointerArray<TAny> b;
sl@0
   279
		TInt i;
sl@0
   280
		for (i=0; i<aCount; i++)
sl@0
   281
			{
sl@0
   282
			TAny* x=(TAny*)(((TUint)Random())&aMask);  // don't dereference this!
sl@0
   283
			a.Append(x);
sl@0
   284
			b.InsertInAddressOrderAllowRepeats(x);
sl@0
   285
			}
sl@0
   286
		a.SortIntoAddressOrder();
sl@0
   287
		if (a.Count()!=aCount)
sl@0
   288
			{
sl@0
   289
			a.Close();
sl@0
   290
			b.Close();
sl@0
   291
			return -1;
sl@0
   292
			}
sl@0
   293
		if (b.Count()!=aCount)
sl@0
   294
			{
sl@0
   295
			a.Close();
sl@0
   296
			b.Close();
sl@0
   297
			return -2;
sl@0
   298
			}
sl@0
   299
		for (i=0; i<aCount; i++)
sl@0
   300
			{
sl@0
   301
			if (a[i]!=b[i])
sl@0
   302
				{
sl@0
   303
				a.Close();
sl@0
   304
				b.Close();
sl@0
   305
				return -3;
sl@0
   306
				}
sl@0
   307
			}
sl@0
   308
		a.Close();
sl@0
   309
		b.Close();
sl@0
   310
		}
sl@0
   311
	return KErrNone;
sl@0
   312
	}
sl@0
   313
sl@0
   314
LOCAL_C void TestGrowCompress(RPointerArray<TAny>* a, ...)
sl@0
   315
	{
sl@0
   316
	SPointerArray& pa = *(SPointerArray*)a;
sl@0
   317
	VA_LIST list;
sl@0
   318
	VA_START(list, a);
sl@0
   319
	TInt64 x;
sl@0
   320
	FOREVER
sl@0
   321
		{
sl@0
   322
		TInt r = KErrNone;
sl@0
   323
		TInt action = VA_ARG(list, TInt);
sl@0
   324
		if (action == -99)
sl@0
   325
			break;
sl@0
   326
		TInt result = VA_ARG(list, TInt);
sl@0
   327
		TInt orig = pa.iAllocated;
sl@0
   328
		if (action == -1)
sl@0
   329
			a->Compress();
sl@0
   330
		else if (action == -2)
sl@0
   331
			a->GranularCompress();
sl@0
   332
		else if (action == -3)
sl@0
   333
			a->Remove(pa.iCount - 1);
sl@0
   334
		else if (action > 0)
sl@0
   335
			{
sl@0
   336
			TInt i;
sl@0
   337
			for (i=0; i<action && r==KErrNone; ++i)
sl@0
   338
				r = a->Append(&x);
sl@0
   339
			}
sl@0
   340
		if ( (r<0 && (result!=r || pa.iAllocated!=orig)) || (r==0 && pa.iAllocated!=result) )
sl@0
   341
			{
sl@0
   342
			test.Printf(_L("Action %d Orig %d Expected %d r=%d newalloc=%d\n"), action, orig, result, r, pa.iAllocated);
sl@0
   343
			test(0);
sl@0
   344
			}
sl@0
   345
		}
sl@0
   346
	a->Reset();
sl@0
   347
	}
sl@0
   348
sl@0
   349
LOCAL_C void TestGrowCompress()
sl@0
   350
	{
sl@0
   351
	RPointerArray<TAny> a;
sl@0
   352
	TestGrowCompress(&a, 1, 8, 7, 8, 1, 16, 7, 16, 1, 24, -2, 24, -1, 17, 1, 25, -2, 25, -3, 25, -2, 24, -99);
sl@0
   353
	TestGrowCompress(&a, 1, 8, 7, 8, 1, 16, 7, 16, 1, 24, -2, 24, -1, 17, 1, 25, -2, 25, -3, 25, -3, 25, -2, 16, -99);
sl@0
   354
sl@0
   355
	RPointerArray<TAny> b(100);
sl@0
   356
	TestGrowCompress(&b, 1, 100, 99, 100, 1, 200, 99, 200, 1, 300, -2, 300, -1, 201, 1, 301, -2, 301, -3, 301, -2, 300, -99);
sl@0
   357
	TestGrowCompress(&b, 1, 100, 99, 100, 1, 200, 99, 200, 1, 300, -2, 300, -1, 201, 1, 301, -2, 301, -3, 301, -3, 301, -2, 200, -99);
sl@0
   358
sl@0
   359
	RPointerArray<TAny> c(8, 512);
sl@0
   360
	TestGrowCompress(&c, 1, 8, 7, 8, 1, 16, 7, 16, 1, 32, 15, 32, 1, 64, -2, 40, 7, 40, 1, 80, -1, 41, -99);
sl@0
   361
sl@0
   362
	RPointerArray<TAny> d(20, 640);
sl@0
   363
	TestGrowCompress(&d, 1, 20, 19, 20, 1, 50, 29, 50, 1, 125, -2, 60, -1, 51, -99);
sl@0
   364
sl@0
   365
	RPointerArray<TAny> e(8, 320);
sl@0
   366
	TestGrowCompress(&e, 1, 8, 7, 8, 1, 16, 7, 16, 1, 24, 7, 24, 1, 32, 7, 32, 1, 40, 7, 40, 1, 50, 9, 50, 1, 63, -99);
sl@0
   367
sl@0
   368
	RPointerArray<TAny> f(2, 257);
sl@0
   369
	TestGrowCompress(&f, 1, 2, 255, 256, 256, 512, 128, 640, 1, 643, 2, 643, 1, 646, -99);
sl@0
   370
	}
sl@0
   371
sl@0
   372
GLDEF_C void DoPointerArrayAnyTests()
sl@0
   373
	{
sl@0
   374
	test.Start(_L("TAny Pointer Arrays..."));
sl@0
   375
	test.Next(_L("Allocate memory"));
sl@0
   376
	Int64s=new TInt64[KArraySize];
sl@0
   377
	test(Int64s != NULL);
sl@0
   378
sl@0
   379
	test.Next(_L("AppendAndAccess tests..."));
sl@0
   380
	test.Next(_L("Count 10 Mask 0x0000000300000003"));
sl@0
   381
	test(AnyAppendAndAccessTest(10,NUM_TESTS,MAKE_TINT64(0x3,0x3))==KErrNone);
sl@0
   382
	test.Next(_L("Count 100 Range all"));
sl@0
   383
	test(AnyAppendAndAccessTest(100,NUM_TESTS,MAKE_TINT64(0xffffffff,0xffffffff))==KErrNone);
sl@0
   384
sl@0
   385
	test.Next(_L("Find tests..."));
sl@0
   386
	test.Next(_L("Count 10 Mask 0x0000000300000003"));
sl@0
   387
	test(AnyFindTest(10,NUM_TESTS,MAKE_TINT64(3,3))==KErrNone);
sl@0
   388
	test.Next(_L("Count 100 Range all"));
sl@0
   389
	test(AnyFindTest(100,NUM_TESTS,MAKE_TINT64(0xffffffff,0xffffffff))==KErrNone);
sl@0
   390
sl@0
   391
	test.Next(_L("InsertInAddressOrder tests..."));
sl@0
   392
	test.Next(_L("Count 50 Mask 0x3C000000"));
sl@0
   393
	test(AnyInsertInAddressOrderTest(50,NUM_TESTS,0x3C000000)==KErrNone);
sl@0
   394
	test.Next(_L("Count 100 all"));
sl@0
   395
	test(AnyInsertInAddressOrderTest(100,NUM_TESTS,0xffffffff)==KErrNone);
sl@0
   396
sl@0
   397
	test.Next(_L("Sort tests..."));
sl@0
   398
	test.Next(_L("Count 30 Mask 0x3C000000"));
sl@0
   399
	test(AnySortIntoAddressOrderTest(30,NUM_TESTS,0x3C000000)==KErrNone);
sl@0
   400
	test.Next(_L("Count 100 all"));
sl@0
   401
	test(AnySortIntoAddressOrderTest(100,NUM_TESTS,0xffffffff)==KErrNone);
sl@0
   402
	
sl@0
   403
	test.Next(_L("Test Grow/Compress"));
sl@0
   404
	TestGrowCompress();
sl@0
   405
sl@0
   406
	test.Next(_L("Test RPointerArray::Array..."));
sl@0
   407
	TInt a;
sl@0
   408
	TInt b;
sl@0
   409
	TInt c;
sl@0
   410
	RPointerArray<TAny> ptrArr;
sl@0
   411
	ptrArr.Append(&a);
sl@0
   412
	ptrArr.Append(&b);
sl@0
   413
	ptrArr.Append(&c);
sl@0
   414
sl@0
   415
	TArray<TAny*> arr=ptrArr.Array();
sl@0
   416
	test(arr.Count()==3);
sl@0
   417
	test(arr[0]==&a);
sl@0
   418
	test(arr[1]==&b);
sl@0
   419
	test(arr[2]==&c);
sl@0
   420
sl@0
   421
	ptrArr.Reset();
sl@0
   422
sl@0
   423
	delete[] Int64s;
sl@0
   424
	test.End();
sl@0
   425
	}
sl@0
   426
sl@0
   427
GLDEF_C void DoPointerArrayAnyLeavingInterfaceTest()
sl@0
   428
	{
sl@0
   429
	TInt trap, ret(0);
sl@0
   430
	TInt64 Int64s[3];
sl@0
   431
	for (TInt i=0;i<3;i++) Int64s[i] = i;
sl@0
   432
sl@0
   433
	RPointerArray<TAny> pArray;
sl@0
   434
	CleanupClosePushL(pArray);
sl@0
   435
sl@0
   436
	test.Start(_L("Checking Leaving TAny Pointer Arrays Interface..."));
sl@0
   437
sl@0
   438
	test.Next(_L("AppendL test..."));
sl@0
   439
	TRAP(trap, pArray.AppendL(&Int64s[0]));
sl@0
   440
	test(trap==KErrNone);
sl@0
   441
sl@0
   442
	test.Next(_L("InsertL test..."));
sl@0
   443
	TRAP(trap, pArray.InsertL(&Int64s[1],1));
sl@0
   444
	test(trap==KErrNone);
sl@0
   445
sl@0
   446
	test.Next(_L("Test FindL(const T* anEntry) const..."));
sl@0
   447
	TRAP(trap, ret = pArray.FindL(&Int64s[0]));
sl@0
   448
	test(trap==0);
sl@0
   449
	test(ret==0);
sl@0
   450
	TRAP(trap, ret = pArray.FindL(&Int64s[2]));
sl@0
   451
	test(trap==KErrNotFound);
sl@0
   452
sl@0
   453
	test.Next(_L("Test FindInAddressOrderL(const T* anEntry) const..."));
sl@0
   454
	TRAP(trap, ret = pArray.FindInAddressOrderL(&Int64s[0]));
sl@0
   455
	test(trap==0);
sl@0
   456
	test(ret==0);
sl@0
   457
	TRAP(trap, ret = pArray.FindInAddressOrderL(&Int64s[2]));
sl@0
   458
	test(trap==KErrNotFound);
sl@0
   459
sl@0
   460
	test.Next(_L("Test FindInAddressOrderL(const T* anEntry, TInt& anIndex) const..."));
sl@0
   461
	TRAP(trap, pArray.FindInAddressOrderL(&Int64s[0], ret));
sl@0
   462
	test(trap==0);
sl@0
   463
	test(ret==0);
sl@0
   464
	TRAP(trap, pArray.FindInAddressOrderL(&Int64s[2], ret));
sl@0
   465
	test(trap==KErrNotFound);
sl@0
   466
sl@0
   467
	test.Next(_L("Test SpecificFindInAddressOrderL(const T* anEntry, TInt aMode) const..."));
sl@0
   468
	TRAP(trap, ret = pArray.SpecificFindInAddressOrderL(&Int64s[0], EArrayFindMode_First));
sl@0
   469
	test(trap==0);
sl@0
   470
	test(ret==0);
sl@0
   471
	TRAP(trap, ret = pArray.SpecificFindInAddressOrderL(&Int64s[2], EArrayFindMode_First));
sl@0
   472
	test(trap==KErrNotFound);
sl@0
   473
sl@0
   474
	test.Next(_L("Test SpecificFindInAddressOrderL(const T* anEntry, TInt& anIndex, TInt aMode) const..."));
sl@0
   475
	TRAP(trap, pArray.SpecificFindInAddressOrderL(&Int64s[0], ret, EArrayFindMode_First));
sl@0
   476
	test(trap==0);
sl@0
   477
	test(ret==0);
sl@0
   478
	TRAP(trap, pArray.SpecificFindInAddressOrderL(&Int64s[2], ret, EArrayFindMode_First));
sl@0
   479
	test(trap==KErrNotFound);
sl@0
   480
sl@0
   481
	test.Next(_L("Test InsertInAddressOrderL(const T* anEntry)..."));
sl@0
   482
	TRAP(trap, pArray.InsertInAddressOrderL(&Int64s[0]));
sl@0
   483
	test(trap==KErrAlreadyExists);
sl@0
   484
	TRAP(trap, pArray.InsertInAddressOrderL(&Int64s[2]));
sl@0
   485
	test(trap==KErrNone);
sl@0
   486
	pArray.Remove(2);
sl@0
   487
	
sl@0
   488
	test.Next(_L("Test InsertInAddressOrderAllowRepeatsL(const T* anEntry)..."));
sl@0
   489
	TRAP(trap, pArray.InsertInAddressOrderAllowRepeatsL(&Int64s[2]));
sl@0
   490
	test(trap==KErrNone);
sl@0
   491
	pArray.Remove(2);
sl@0
   492
	
sl@0
   493
	CleanupStack::PopAndDestroy(&pArray);
sl@0
   494
	test.End();
sl@0
   495
	}