searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp
changeset 3 ae3f1779f6da
parent 0 671dee74050a
child 14 8bd192d47aaa
equal deleted inserted replaced
2:6c1a2771f4b7 3:ae3f1779f6da
    17 #include "randomtest.h"
    17 #include "randomtest.h"
    18 #include "CPixdoc.h"
    18 #include "CPixdoc.h"
    19 
    19 
    20 #include <sstream>
    20 #include <sstream>
    21 #include <time.h>
    21 #include <time.h>
       
    22 #include "std_log_result.h"
    22 
    23 
    23 using namespace std;
    24 using namespace std;
    24 using namespace Itk;
    25 using namespace Itk;
    25 
    26 
    26 SuiteTester* CreateSuiteTesterRandom()
    27 SuiteTester* CreateSuiteTesterRandom()
    27 	{
    28 	{
    28 	// "all/random"
    29 	// "all/random"
    29 	RandomTest * idxDbTest = new RandomTest;
    30 	RandomTest * idxDbTest = new RandomTest;
    30 	ContextTester * random = new ContextTester("random", idxDbTest);
    31 	ContextTester * random = new ContextTester("random", idxDbTest);
    31 	random->add( "AddingDeleting", idxDbTest,
    32 	random->add( "AddingDeleting", idxDbTest,
    32 			    &RandomTest::testIndexAndDelete );
    33 			    &RandomTest::testIndexAndDelete,
       
    34 			    "AddingDeleting");
    33 
    35 
    34 	random->add( "AddingDeletingAll", idxDbTest,
    36 	random->add( "AddingDeletingAll", idxDbTest,
    35 			    &RandomTest::testDeleteAll );
    37 			    &RandomTest::testDeleteAll,
    36 
    38 			    "AddingDeletingAll");
    37 	random->add( "AssertContent", idxDbTest, &RandomTest::testContent );
    39 
       
    40 	random->add( "AssertContent", idxDbTest,
       
    41 	            &RandomTest::testContent,
       
    42 	            "AssertContent");
    38 
    43 
    39 	random->add( "Persistence", idxDbTest,
    44 	random->add( "Persistence", idxDbTest,
    40 			     &RandomTest::testPersistence );
    45 			     &RandomTest::testPersistence,
    41 
    46 			     "Persistence");
    42 	random->add("Searches", idxDbTest, &RandomTest::testSearches );
    47 
    43 
    48 	random->add("Searches", idxDbTest, 
    44 	random->add("CreatedIndex", idxDbTest, &RandomTest::testCreatedIndex );
    49 	        &RandomTest::testSearches,
       
    50 	        "Searches");
       
    51 
       
    52 	random->add("CreatedIndex", idxDbTest,
       
    53 	        &RandomTest::testCreatedIndex,
       
    54 	        "CreatedIndex");
    45 
    55 
    46 	return random;
    56 	return random;
    47 	}
    57 	}
    48 
    58 
    49 
    59 
   413 		{
   423 		{
   414 		ITK_ASSERT( testMgr,
   424 		ITK_ASSERT( testMgr,
   415 				    valid,
   425 				    valid,
   416 				    "Removed item found" );
   426 				    "Removed item found" );
   417 		}
   427 		}
       
   428 	if(!valid)
       
   429 	    {
       
   430             assert_failed = 1;
       
   431 	    }
   418 	}
   432 	}
   419 
   433 
   420 void RandomTest::assertContent(Itk::TestMgr* testMgr, size_t item)
   434 void RandomTest::assertContent(Itk::TestMgr* testMgr, size_t item)
   421 {
   435 {
   422     wstring content = testCorpus_.item(item);
   436     wstring content = testCorpus_.item(item);
   457                                                 }
   471                                                 }
   458                                         }
   472                                         }
   459                                 }
   473                                 }
   460                             if ( !found )
   474                             if ( !found )
   461                                 {
   475                                 {
       
   476                                     assert_failed = 1;
   462                                     ITK_MSG( testMgr, "Failed content %d", item );
   477                                     ITK_MSG( testMgr, "Failed content %d", item );
   463                                 }
   478                                 }
   464 
   479 
   465                             // TODO should not assert here, because then
   480                             // TODO should not assert here, because then
   466                             // cpix_Hits instance leaks here. Use
   481                             // cpix_Hits instance leaks here. Use
   470                                         "Content check failed for %d" );
   485                                         "Content check failed for %d" );
   471 
   486 
   472                         }
   487                         }
   473                     else
   488                     else
   474                         {
   489                         {
       
   490                            assert_failed = 1;
   475                             ITK_MSG( testMgr, "Content asserting is unreliable for item not in index" );
   491                             ITK_MSG( testMgr, "Content asserting is unreliable for item not in index" );
   476                         }
   492                         }
   477                     cpix_Hits_destroy( hits );
   493                     cpix_Hits_destroy( hits );
   478                 }
   494                 }
   479             cpix_Query_destroy( query );
   495             cpix_Query_destroy( query );
   480         }
   496         }
   481     else
   497     else
   482         {
   498         {
       
   499             assert_failed = 1;
   483             ITK_MSG( testMgr, "Creating query failed for %S", queryText.str().c_str() );
   500             ITK_MSG( testMgr, "Creating query failed for %S", queryText.str().c_str() );
   484         }
   501         }
   485 }
   502 }
   486 
   503 
   487 void RandomTest::assertAllItemsState(Itk::TestMgr* testMgr)
   504 void RandomTest::assertAllItemsState(Itk::TestMgr* testMgr)
   563 				matches == tracedTermsFreq_[i],
   580 				matches == tracedTermsFreq_[i],
   564 				"Term %S frequence is %d. Expected %d",
   581 				"Term %S frequence is %d. Expected %d",
   565 				tracedTerms_[i].c_str(),
   582 				tracedTerms_[i].c_str(),
   566 				matches,
   583 				matches,
   567 				tracedTermsFreq_[i] );
   584 				tracedTermsFreq_[i] );
       
   585 		if(matches != tracedTermsFreq_[i])
       
   586 		    {
       
   587                 assert_failed = 1;
       
   588 		    }
   568 		}
   589 		}
   569 	}
   590 	}
   570 
   591 
   571 void RandomTest::assertIndexedState(Itk::TestMgr* testMgr)
   592 void RandomTest::assertIndexedState(Itk::TestMgr* testMgr)
   572 	{
   593 	{
   590 	{
   611 	{
   591     ITK_REPORT(testMgr,
   612     ITK_REPORT(testMgr,
   592                "RandomSeed",
   613                "RandomSeed",
   593                "%d",
   614                "%d",
   594                randomSeed_);
   615                randomSeed_);
   595 
   616     char *xml_file = (char*)__FUNCTION__;
       
   617     assert_failed = 0;
   596 	indexRandoms(testMgr, 50);
   618 	indexRandoms(testMgr, 50);
   597 	assertIndexedState(testMgr);
   619 	assertIndexedState(testMgr);
   598 
   620 
   599 	bool valid = true;
   621 	bool valid = true;
   600 	for (int i = 0; i < 5; i++)
   622 	for (int i = 0; i < 5; i++)
   607                             idxUtil_->flush();
   629                             idxUtil_->flush();
   608                             valid = valid && validState(testMgr,
   630                             valid = valid && validState(testMgr,
   609                                                         item);
   631                                                         item);
   610                             // OBS if ( !( valid &= validState( testMgr, item = indexRandom( testMgr ) ) ) )
   632                             // OBS if ( !( valid &= validState( testMgr, item = indexRandom( testMgr ) ) ) )
   611                             if (!valid)
   633                             if (!valid)
   612 				{
   634                             {
   613 				ITK_MSG( testMgr, "Indexing item %d had failed", item );
   635                             assert_failed = 1;
   614 				goto mainloop_exit; // double break
   636                             ITK_MSG( testMgr, "Indexing item %d had failed", item );
   615 				}
   637                             goto mainloop_exit;
       
   638                             // double break
       
   639                             }
   616 			}
   640 			}
   617 		for (int i = 0; i < 10; i++)
   641 		for (int i = 0; i < 10; i++)
   618 			{
   642 			{
   619                             // OBS int item = -1;
   643                             // OBS int item = -1;
   620                             int
   644                             int
   623                             valid = valid && validState(testMgr,
   647                             valid = valid && validState(testMgr,
   624                                                         item);
   648                                                         item);
   625                             // OBS if ( !( valid &= validState( testMgr, item = deleteRandom( testMgr ) ) ) )
   649                             // OBS if ( !( valid &= validState( testMgr, item = deleteRandom( testMgr ) ) ) )
   626                             if (!valid)
   650                             if (!valid)
   627 				{
   651 				{
       
   652                 assert_failed = 1;
   628 				ITK_MSG( testMgr, "Deleting item %d had failed", item );
   653 				ITK_MSG( testMgr, "Deleting item %d had failed", item );
   629 				goto mainloop_exit; // double break
   654 				goto mainloop_exit; // double break
   630 				}
   655 				}
   631 			}
   656 			}
   632 		}
   657 		}
   633 	deleteRandoms(testMgr, 50);
   658 	deleteRandoms(testMgr, 50);
   634 
   659 
   635 	mainloop_exit:
   660 	mainloop_exit:
       
   661 	testResultXml(xml_file);
   636 	ITK_ASSERT( testMgr, valid, "Operations were not succesful" );
   662 	ITK_ASSERT( testMgr, valid, "Operations were not succesful" );
   637 	}
   663 	}
   638 
   664 
   639 void RandomTest::testDeleteAll(Itk::TestMgr* testMgr)
   665 void RandomTest::testDeleteAll(Itk::TestMgr* testMgr)
   640 	{
   666 	{
   641 	indexRandoms(testMgr, 50);
   667 	indexRandoms(testMgr, 50);
   642 	assertIndexedState(testMgr);
   668 	assertIndexedState(testMgr);
       
   669 	char *xml_file = (char*)__FUNCTION__;
       
   670 	assert_failed = 0;
   643 	vector<int> deleted;
   671 	vector<int> deleted;
   644 	for (int i = 0; i < 50; i++)
   672 	for (int i = 0; i < 50; i++)
   645 		{
   673 		{
   646 		deleted.push_back( deleteRandom(testMgr) );
   674 		deleted.push_back( deleteRandom(testMgr) );
   647 		}
   675 		}
   651 		{
   679 		{
   652                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   680                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   653 	valid = valid && validState( testMgr, deleted[i] );
   681 	valid = valid && validState( testMgr, deleted[i] );
   654                     if ( !( valid ) )
   682                     if ( !( valid ) )
   655 			{
   683 			{
       
   684                     assert_failed = 1;
   656 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   685 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   657 			break;
   686 			break;
   658 			}
   687 			}
   659 		}
   688 		}
       
   689 	testResultXml(xml_file);
   660 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
   690 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
   661 	}
   691 	}
   662 
   692 
   663 void RandomTest::testContent(Itk::TestMgr* testMgr)
   693 void RandomTest::testContent(Itk::TestMgr* testMgr)
   664 	{
   694 	{
       
   695     char *xml_file = (char*)__FUNCTION__;
       
   696     assert_failed = 0;
   665 	for (int i = 0; i < 10; i++)
   697 	for (int i = 0; i < 10; i++)
   666 		{
   698 		{
   667 		int item = indexRandom(testMgr);
   699 		int item = indexRandom(testMgr);
   668                 idxUtil_->flush();
   700                 idxUtil_->flush();
   669 		assertContent(testMgr, item);
   701 		assertContent(testMgr, item);
   670 		}
   702 		}
   671 
   703 
   672 	// clean  up 
   704 	// clean  up 
   673 	deleteRandoms( testMgr, 10 );
   705 	deleteRandoms( testMgr, 10 );
   674         idxUtil_->flush();
   706         idxUtil_->flush();
       
   707         testResultXml(xml_file);
   675 	}
   708 	}
   676 
   709 
   677 void RandomTest::testPersistence(Itk::TestMgr* testMgr)
   710 void RandomTest::testPersistence(Itk::TestMgr* testMgr)
   678 	{
   711 	{
   679 	indexRandoms(testMgr, 20);
   712 	indexRandoms(testMgr, 20);
   680 	assertIndexedState(testMgr);
   713 	assertIndexedState(testMgr);
   681 
   714     char *xml_file = (char*)__FUNCTION__;
       
   715     assert_failed = 0;
   682 	idxUtil_->reload();
   716 	idxUtil_->reload();
   683 	
   717 	
   684 	assertIndexedState(testMgr);
   718 	assertIndexedState(testMgr);
   685 	vector<int> deleted;
   719 	vector<int> deleted;
   686 	for (int i = 0; i < 20; i++)
   720 	for (int i = 0; i < 20; i++)
   695 		{
   729 		{
   696                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   730                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   697                     valid = valid && validState( testMgr, deleted[i] );
   731                     valid = valid && validState( testMgr, deleted[i] );
   698                     if ( !( valid ) )
   732                     if ( !( valid ) )
   699 			{
   733 			{
       
   734                     assert_failed = 1;
   700 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   735 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   701 			break;
   736 			break;
   702 			}
   737 			}
   703 		}
   738 		}
   704 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
   739 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
       
   740 	testResultXml(xml_file);
   705 	}
   741 	}
   706 
   742 
   707 void RandomTest::testSearches(Itk::TestMgr* testMgr)
   743 void RandomTest::testSearches(Itk::TestMgr* testMgr)
   708 {
   744 {
       
   745     char *xml_file = (char*)__FUNCTION__;
       
   746     assert_failed = 0;
   709 	traceTerm(testMgr, L"happy");
   747 	traceTerm(testMgr, L"happy");
   710 	traceTerm(testMgr, L"people");
   748 	traceTerm(testMgr, L"people");
   711 	traceTerm(testMgr, L"come");
   749 	traceTerm(testMgr, L"come");
   712 	traceTerm(testMgr, L"guy");	
   750 	traceTerm(testMgr, L"guy");	
   713 	traceTerm(testMgr, L"done");
   751 	traceTerm(testMgr, L"done");
   729 	assertTracedTerms( testMgr );
   767 	assertTracedTerms( testMgr );
   730 	deleteRandoms( testMgr, 20 );
   768 	deleteRandoms( testMgr, 20 );
   731 	assertTracedTerms( testMgr );
   769 	assertTracedTerms( testMgr );
   732 
   770 
   733 	untraceTerms(testMgr);
   771 	untraceTerms(testMgr);
       
   772 	testResultXml(xml_file);
   734 }
   773 }
   735 
   774 
   736 void RandomTest::testCreatedIndex(Itk::TestMgr* testMgr) {
   775 void RandomTest::testCreatedIndex(Itk::TestMgr* testMgr) {
   737 
   776     char *xml_file = (char*)__FUNCTION__;
       
   777     assert_failed = 0;
   738 	int item = indexRandom( testMgr ); 
   778 	int item = indexRandom( testMgr ); 
   739         idxUtil_->flush();
   779         idxUtil_->flush();
   740 	assertState( testMgr, item ); 
   780 	assertState( testMgr, item ); 
   741 
   781 
   742 	assertContent( testMgr, item );
   782 	assertContent( testMgr, item );
   762                    cpix_Succeeded(idxUtil_->idxDb()),
   802                    cpix_Succeeded(idxUtil_->idxDb()),
   763                    "Trying to delete failed");
   803                    "Trying to delete failed");
   764         ITK_EXPECT(testMgr,
   804         ITK_EXPECT(testMgr,
   765                    deleted == 0,
   805                    deleted == 0,
   766                    "There should not have been an item to delete");
   806                    "There should not have been an item to delete");
       
   807         if(!cpix_Succeeded(idxUtil_->idxDb()) || deleted != 0)
       
   808             {
       
   809                 assert_failed = 1;
       
   810             }
       
   811         testResultXml(xml_file);
   767 }
   812 }
   768 
   813 
   769 
   814