blob: c01519979bf7a57450b654280e7197ed05cfb731 [file]
/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
------------------------------------------------------------------------------*/
#include "test.h"
#include <stdlib.h>
#include <time.h>
//test string buffer
//StringBuffer sb;
//sb.appendFloat(0.02f,2);
//CuAssertStrEquals(tc, _T("appendFloat failed"), _T("0.02"), sb.getBuffer());
class integerQueue: public CL_NS(util)::PriorityQueue<int32_t,Deletor::DummyInt32 >{
public:
integerQueue(int32_t count)
{
initialize(count,false);
}
protected:
bool lessThan(int32_t a, int32_t b) {
return (a < b);
}
};
void _test_PriorityQueue(CuTest *tc,int32_t count){
integerQueue pq(count);
srand ( (unsigned)time(NULL) );
int32_t sum = 0, sum2 = 0;
uint64_t start = CL_NS(util)::Misc::currentTimeMillis();
for (int32_t i = 0; i < count; i++) {
int32_t next = -rand();
//int32_t next = (count+1)-i;
sum += next;
pq.put( next );
}
CuMessageA(tc,"%d milliseconds/", (int32_t)(CL_NS(util)::Misc::currentTimeMillis()-start));
CuMessageA(tc,"%d puts\n",count);
start = CL_NS(util)::Misc::currentTimeMillis();
int32_t last = -0x7FFFFFFF;
for (int32_t j = 0; j < count; j++) {
int32_t next = pq.pop();
if ( next < last ){
TCHAR buf[1024];
_sntprintf(buf,1024,_T("next < last at %d (last: %d, next: %d)"),j,last,next);
CuAssert(tc,buf,false);
}
last = next;
sum2 += last;
}
CuMessageA(tc,"%d milliseconds", (int32_t)(CL_NS(util)::Misc::currentTimeMillis()-start));
CuMessageA(tc,"/%d pops\n",count);
CLUCENE_ASSERT(sum == sum);
}
void testPriorityQueue(CuTest *tc){
_test_PriorityQueue(tc,100000);
}
CuSuite *testpriorityqueue(void)
{
CuSuite *suite = CuSuiteNew(_T("CLucene Priority Queue Test"));
SUITE_ADD_TEST(suite, testPriorityQueue);
return suite;
}
// EOF