kerneltest/e32test/buffer/t_tbma.cpp
branchRCL_3
changeset 110 c734af59ce98
parent 0 a41df078684a
equal deleted inserted replaced
97:41f0cfe18c80 110:c734af59ce98
   679 				}
   679 				}
   680 			}
   680 			}
   681 		}
   681 		}
   682 	delete pA;
   682 	delete pA;
   683 	}
   683 	}
       
   684 
       
   685 
       
   686 void TestSelectiveAlloc(TInt aSize)
       
   687 	{
       
   688 	test.Printf(_L("TestSelectiveAlloc %d\n"),aSize);
       
   689 	TBitMapAllocator* pA=TBitMapAllocator::New(aSize, ETrue);
       
   690 	test(pA!=NULL);
       
   691 	test(pA->Avail()==aSize);
       
   692 	// Allocate whole free bma
       
   693 	test_Equal(aSize, pA->SelectiveAlloc(0, aSize));
       
   694 	test_Equal(0,pA->Avail());
       
   695 	// Allocate whole full bma
       
   696 	test_Equal(0, pA->SelectiveAlloc(0, aSize));
       
   697 	test_Equal(0,pA->Avail());
       
   698 	TInt i;
       
   699 	TInt j;
       
   700 	TInt l;
       
   701 	for (i=2; i<8; ++i)
       
   702 		{
       
   703 		for (l=1; l<=aSize; ++l)
       
   704 			{
       
   705 			new (pA) TBitMapAllocator(aSize, ETrue);
       
   706 			for (j=0; j<aSize; j+=i)
       
   707 				pA->Alloc(j,1);
       
   708 			TInt orig=pA->Avail();
       
   709 			test_Equal(aSize-(aSize+i-1)/i, orig);
       
   710 			TUint newAllocs = pA->SelectiveAlloc(0,l);
       
   711 			TInt allocated = orig - pA->Avail();
       
   712 			test_Equal(allocated, newAllocs);
       
   713 			test_Equal(l - (l+i-1)/i, allocated);
       
   714 			Check(*pA);
       
   715 			}
       
   716 		}
       
   717 	for (i=0; i<=Min(32,aSize-1); ++i)
       
   718 		{
       
   719 		for (l=1; l<=aSize-i; ++l)
       
   720 			{
       
   721 			for (j=1; j<=aSize; ++j)
       
   722 				{
       
   723 				new (pA) TBitMapAllocator(aSize, ETrue);
       
   724 				pA->Alloc(i,l);
       
   725 				test_Equal(aSize-l, pA->Avail());
       
   726 				TUint newAllocs = pA->SelectiveAlloc(0,j);
       
   727 				TUint allocated = j - Max(0,Min(i+l,j)-i);
       
   728 				test_Equal(allocated, newAllocs);
       
   729 				test_Equal(pA->Avail(), aSize-l-allocated);
       
   730 				test(!pA->NotAllocated(0,j));
       
   731 				if (j>=i && j<i+l)
       
   732 					test(!pA->NotAllocated(0,j+1));
       
   733 				Check(*pA);
       
   734 				}
       
   735 			}
       
   736 		}
       
   737 	delete pA;
       
   738 	}
       
   739 
   684 
   740 
   685 TBitMapAllocator* DoSetupBMA(TInt aSize, VA_LIST aList)
   741 TBitMapAllocator* DoSetupBMA(TInt aSize, VA_LIST aList)
   686 	{
   742 	{
   687 	TBitMapAllocator* pA=TBitMapAllocator::New(aSize, EFalse);
   743 	TBitMapAllocator* pA=TBitMapAllocator::New(aSize, EFalse);
   688 	test(pA!=NULL);
   744 	test(pA!=NULL);
  1244 	TestSelectiveFree(3);
  1300 	TestSelectiveFree(3);
  1245 	TestSelectiveFree(31);
  1301 	TestSelectiveFree(31);
  1246 	TestSelectiveFree(128);
  1302 	TestSelectiveFree(128);
  1247 	TestSelectiveFree(149);
  1303 	TestSelectiveFree(149);
  1248 
  1304 
       
  1305 	TestSelectiveAlloc(3);
       
  1306 	TestSelectiveAlloc(31);
       
  1307 	TestSelectiveAlloc(128);
       
  1308 	TestSelectiveAlloc(149);
       
  1309 
  1249 	TestAllocConsecutive();
  1310 	TestAllocConsecutive();
  1250 
  1311 
  1251 	TestChain();
  1312 	TestChain();
  1252 
  1313 
  1253 	__UHEAP_MARKEND;
  1314 	__UHEAP_MARKEND;