os/kernelhwsrv/kerneltest/e32test/buffer/t_readar.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 1995-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_readar.cpp
    15 // Overview:
    16 // Test the CArrayFixFlat, CArrayPakFlat, CArrayVarFlat classes.
    17 // API Information:
    18 // CArrayFixFlat, CArrayPakFlat, CArrayVarFlat.
    19 // Details:
    20 // - Create an array of fixed length objects contained within a flat 
    21 // dynamic buffer, append some elements onto the end of the array, 
    22 // sort the array into key sequence, check the number of elements 
    23 // in the array is as expected and read all of elements. Check 
    24 // whether the heap has been corrupted.
    25 // - Create an array of variable length objects implemented using a 
    26 // flat dynamic buffer, append some elements onto the end of the 
    27 // array, sort the array into key sequence, check the number of elements 
    28 // in the array is as expected and read all of elements. Check whether 
    29 // the heap has been corrupted.
    30 // - Create an array of variable length objects packed into a flat buffer, 
    31 // append some elements onto the end of the array, sort the array into 
    32 // key sequence and check the number of elements held in the array is 
    33 // as expected. Read all array elements. Check whether the heap has been 
    34 // corrupted.
    35 // - Check whether the heap has been corrupted by any of the tests.
    36 // Platforms/Drives/Compatibility:
    37 // All 
    38 // Assumptions/Requirement/Pre-requisites:
    39 // Failures and causes:
    40 // Base Port information:
    41 // 
    42 //
    43 
    44 #include <e32test.h>
    45 
    46 const TInt KMaxStrings=3;
    47 
    48 LOCAL_D RTest test(_L("T_READAR"));
    49 LOCAL_D const TPtrC s1(_L("ZZZZ"));
    50 LOCAL_D const TPtrC s2(_L("AAAA"));
    51 LOCAL_D const TPtrC s3(_L("MMMM"));
    52 LOCAL_D const TPtrC* str[KMaxStrings] = {&s1,&s2,&s3};
    53 LOCAL_D const TPtrC* strSorted[KMaxStrings] = {&s2,&s3,&s1};
    54 
    55 LOCAL_C void testReadAny(const TArray<TBufC<0x20> > anArray)
    56 //
    57 // Test with fixed length arrays.
    58 //
    59 	{
    60 
    61 	test(anArray.Count()==KMaxStrings);
    62 	for (TInt i=0;i<KMaxStrings;i++)
    63 		test(anArray[i]==(*strSorted[i]));
    64 	}
    65 
    66 LOCAL_C void testFixL()
    67 //
    68 // Test with fixed length arrays.
    69 //
    70 	{
    71 
    72 	__UHEAP_MARK;
    73 //
    74 	test.Start(_L("Creating Fix array"));
    75 	CArrayFixFlat<TBufC<0x20> >* pFix=new(ELeave) CArrayFixFlat<TBufC<0x20> >(1);
    76 	for (TInt i=0;i<KMaxStrings;i++)
    77 		{
    78 		TBufC<0x20> b=(*str[i]);
    79 		pFix->AppendL(b);
    80 		}
    81 //
    82 	test.Next(_L("Sorting Fix array"));
    83     TKeyArrayFix array(0,ECmpNormal);
    84 	pFix->Sort(array);
    85 //
    86 	test.Next(_L("Reading Fix array"));
    87 	testReadAny(pFix->Array());
    88 //
    89 	test.Next(_L("Destroying Fix array"));
    90 	delete pFix;
    91 	__UHEAP_MARKEND;
    92 //
    93 	test.End();
    94 	}
    95 
    96 LOCAL_C void testVarL()
    97 //
    98 // Test with variable length arrays.
    99 //
   100 	{
   101 
   102 	__UHEAP_MARK;
   103 //
   104 	test.Start(_L("Creating Var array"));
   105 	CArrayVarFlat<TBufC<0x20> >* pVar=new(ELeave) CArrayVarFlat<TBufC<0x20> >(1);
   106 	for (TInt i=0;i<KMaxStrings;i++)
   107 		{
   108 		TBufC<0x20> b=(*str[i]);
   109 		pVar->AppendL(b,b.Size()+sizeof(TUint));
   110 		}
   111 //
   112 	test.Next(_L("Sorting Var array"));
   113     TKeyArrayVar array(0,ECmpNormal);
   114 	pVar->Sort(array);
   115 //
   116 	test.Next(_L("Reading Var array"));
   117 	testReadAny(pVar->Array());
   118 //
   119 	test.Next(_L("Destroying Var array"));
   120 	delete pVar;
   121 	__UHEAP_MARKEND;
   122 //
   123 	test.End();
   124 	}
   125 
   126 LOCAL_C void testPakL()
   127 //
   128 // Test with variable length packed arrays.
   129 //
   130 	{
   131 
   132 	__UHEAP_MARK;
   133 //
   134 	test.Start(_L("Creating Pak array"));
   135 	CArrayPakFlat<TBufC<0x20> >* pPak=new(ELeave) CArrayPakFlat<TBufC<0x20> >(1);
   136 	for (TInt i=0;i<KMaxStrings;i++)
   137 		{
   138 		TBufC<0x20> b=(*str[i]);
   139 		pPak->AppendL(b,b.Size()+sizeof(TUint));
   140 		}
   141 //
   142 	test.Next(_L("Sorting Pak array"));
   143     TKeyArrayVar array(0,ECmpNormal);
   144 	pPak->SortL(array);
   145 //
   146 	test.Next(_L("Reading Pak array"));
   147 	testReadAny(pPak->Array());
   148 //
   149 	test.Next(_L("Destroying Pak array"));
   150 	delete pPak;
   151 	__UHEAP_MARKEND;
   152 //
   153 	test.End();
   154 	}
   155 
   156 GLDEF_C TInt E32Main()
   157 //
   158 // Test the Array classes.
   159 //
   160     {
   161 
   162 	test.Title();
   163 	__UHEAP_MARK;
   164 //
   165 	test.Start(_L("Testing Fix arrays"));
   166 	TRAPD(r,testFixL());
   167 	test(r==KErrNone);
   168 //
   169 	test.Next(_L("Testing Var arrays"));
   170 	TRAP(r,testVarL());
   171 	test(r==KErrNone);
   172 //
   173 	test.Next(_L("Testing Pak arrays"));
   174 	TRAP(r,testPakL());
   175 	test(r==KErrNone);
   176 //
   177 	__UHEAP_MARKEND;
   178 	test.End();
   179 	return(0);
   180     }
   181