예제 #1
0
파일: test.cpp 프로젝트: marcovc/casper
void testEraseRanges(Var< IntSet > set, int nElems, int nTests)
{
	for (int i = 1; i < (int)sqrt(nTests); i++)
	{
		int elem = (int)((double) nElems * (rand() / (double)RAND_MAX)); 

		set.domain().insert(elem);
	}
	
	std::set<int> toErase;
	for (int i = 1; i <= nElems; i++)
	{
		toErase.insert(i);
	}
	
	for (int i = 1; i < (int)sqrt(nTests); i++)
	{
		/*
		int startPos = (int)((double) set.domain().possSize() * (rand() / (double)RAND_MAX));
		int finishPos = min((int)((double) (set.domain().possSize() - startPos) * (rand() / (double)RAND_MAX)),10);
		
		CurSetFD<int>::PIterator b = set.domain().beginPoss();
		
		while (startPos-- > 0)
			b++;
		
		CurSetFD<int>::PIterator start = b;
		
		while (finishPos-- > 0)
			b++;
		
		CurSetFD<int>::PIterator finish = b;
		*/
		
		int start = max(1,(int)((double) nElems * (rand() / (double)RAND_MAX)));
		int finish = min(start + min((int)((double) nElems * (rand() / (double)RAND_MAX)),(int)(nElems / sqrt(nTests))),nElems);
		
		std::set<int>::iterator b = toErase.find(start), e = toErase.find(finish);
		
		timer.resume();
		Detail::setEraseRange(set.domain(), b, e);
		timer.pause();
	}
}
예제 #2
0
파일: test.cpp 프로젝트: marcovc/casper
void testFindLUB(Var< IntSet > set, int nElems, int nTests)
{
	for (int i = 1; i <= nTests / 2; i++)
	{	
		int elem = (int)((double) set.domain().possSize() * (rand() / (double)RAND_MAX)); 

		set.domain().insert(elem);
	}
				
	timer.resume();
	
	for (int i = 1; i <= nTests; i++)
	{
		int elem = (int)((double)nElems * (rand() / (double)RAND_MAX));
		
		if (set.domain().findInIn(elem) == set.domain().endIn())
			set.domain().findInPoss(elem);
	}
	
	timer.pause();
}
예제 #3
0
파일: test.cpp 프로젝트: marcovc/casper
void testInserts(Var< IntSet > set, int nElems, int nTests)
{
	timer.resume();
	
	for (int i = 1; i <= min(nTests,nElems); i++)
	{	
		int elem = (int)((double) nElems * (rand() / (double)RAND_MAX)); 

		set.domain().insert(elem);
	}
	
	timer.pause();
}
예제 #4
0
파일: test.cpp 프로젝트: marcovc/casper
void testFindPoss(Var< IntSet > set, int nElems, int nTests)
{
	timer.resume();
	
	for (int i = 1; i <= nTests; i++)
	{
		int elem = (int)((double)nElems * (rand() / (double)RAND_MAX));
		
		set.domain().findInPoss(elem);
	}
	
	timer.pause();
}
예제 #5
0
파일: test.cpp 프로젝트: marcovc/casper
void testFindGLB(Var< IntSet > set, int nElems, int nTests)
{
	set.solver().post(cardinal(set) ==  nElems);
	set.solver().solve(setLabel(set,true));
	
	timer.resume();
	
	for (int i = 1; i <= nTests; i++)
	{
		int elem = (int)((double)nElems * (rand() / (double)RAND_MAX));
		
		set.domain().findInIn(elem);
	}
	
	timer.pause();
}