searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp
changeset 24 65456528cac2
parent 14 8bd192d47aaa
equal deleted inserted replaced
23:d4d56f5e7c55 24:65456528cac2
   426 				    valid,
   426 				    valid,
   427 				    "Removed item found" );
   427 				    "Removed item found" );
   428 		}
   428 		}
   429 	if(!valid)
   429 	if(!valid)
   430 	    {
   430 	    {
   431             assert_failed = 1;
   431             
   432 	    }
   432 	    }
   433 	}
   433 	}
   434 
   434 
   435 void RandomTest::assertContent(Itk::TestMgr* testMgr, size_t item)
   435 void RandomTest::assertContent(Itk::TestMgr* testMgr, size_t item)
   436 {
   436 {
   475                                     }
   475                                     }
   476                                     FREE_DOC(doc, 1);
   476                                     FREE_DOC(doc, 1);
   477                                 }
   477                                 }
   478                             if ( !found )
   478                             if ( !found )
   479                                 {
   479                                 {
   480                                     assert_failed = 1;
   480                                     
   481                                     ITK_MSG( testMgr, "Failed content %d", item );
   481                                     ITK_MSG( testMgr, "Failed content %d", item );
   482                                 }
   482                                 }
   483 
   483 
   484                             // TODO should not assert here, because then
   484                             // TODO should not assert here, because then
   485                             // cpix_Hits instance leaks here. Use
   485                             // cpix_Hits instance leaks here. Use
   489                                         "Content check failed for %d" );
   489                                         "Content check failed for %d" );
   490 
   490 
   491                         }
   491                         }
   492                     else
   492                     else
   493                         {
   493                         {
   494                            assert_failed = 1;
   494                            
   495                             ITK_MSG( testMgr, "Content asserting is unreliable for item not in index" );
   495                             ITK_MSG( testMgr, "Content asserting is unreliable for item not in index" );
   496                         }
   496                         }
   497                     cpix_Hits_destroy( hits );
   497                     cpix_Hits_destroy( hits );
   498                 }
   498                 }
   499             cpix_Query_destroy( query );
   499             cpix_Query_destroy( query );
   500         }
   500         }
   501     else
   501     else
   502         {
   502         {
   503             assert_failed = 1;
   503             
   504             ITK_MSG( testMgr, "Creating query failed for %S", queryText.str().c_str() );
   504             ITK_MSG( testMgr, "Creating query failed for %S", queryText.str().c_str() );
   505         }
   505         }
   506 }
   506 }
   507 
   507 
   508 void RandomTest::assertAllItemsState(Itk::TestMgr* testMgr)
   508 void RandomTest::assertAllItemsState(Itk::TestMgr* testMgr)
   592 				tracedTerms_[i].c_str(),
   592 				tracedTerms_[i].c_str(),
   593 				matches,
   593 				matches,
   594 				tracedTermsFreq_[i] );
   594 				tracedTermsFreq_[i] );
   595 		if(matches != tracedTermsFreq_[i])
   595 		if(matches != tracedTermsFreq_[i])
   596 		    {
   596 		    {
   597                 assert_failed = 1;
   597                 
   598 		    }
   598 		    }
   599 		}
   599 		}
   600 	}
   600 	}
   601 
   601 
   602 void RandomTest::assertIndexedState(Itk::TestMgr* testMgr)
   602 void RandomTest::assertIndexedState(Itk::TestMgr* testMgr)
   621 	{
   621 	{
   622     ITK_REPORT(testMgr,
   622     ITK_REPORT(testMgr,
   623                "RandomSeed",
   623                "RandomSeed",
   624                "%d",
   624                "%d",
   625                randomSeed_);
   625                randomSeed_);
   626     char *xml_file = (char*)__FUNCTION__;
       
   627     assert_failed = 0;
       
   628 	indexRandoms(testMgr, 50);
   626 	indexRandoms(testMgr, 50);
   629 	assertIndexedState(testMgr);
   627 	assertIndexedState(testMgr);
   630 
   628 
   631 	bool valid = true;
   629 	bool valid = true;
   632 	for (int i = 0; i < 5; i++)
   630 	for (int i = 0; i < 5; i++)
   640                             valid = valid && validState(testMgr,
   638                             valid = valid && validState(testMgr,
   641                                                         item);
   639                                                         item);
   642                             // OBS if ( !( valid &= validState( testMgr, item = indexRandom( testMgr ) ) ) )
   640                             // OBS if ( !( valid &= validState( testMgr, item = indexRandom( testMgr ) ) ) )
   643                             if (!valid)
   641                             if (!valid)
   644                             {
   642                             {
   645                             assert_failed = 1;
   643                             
   646                             ITK_MSG( testMgr, "Indexing item %d had failed", item );
   644                             ITK_MSG( testMgr, "Indexing item %d had failed", item );
   647                             goto mainloop_exit;
   645                             goto mainloop_exit;
   648                             // double break
   646                             // double break
   649                             }
   647                             }
   650 			}
   648 			}
   657                             valid = valid && validState(testMgr,
   655                             valid = valid && validState(testMgr,
   658                                                         item);
   656                                                         item);
   659                             // OBS if ( !( valid &= validState( testMgr, item = deleteRandom( testMgr ) ) ) )
   657                             // OBS if ( !( valid &= validState( testMgr, item = deleteRandom( testMgr ) ) ) )
   660                             if (!valid)
   658                             if (!valid)
   661 				{
   659 				{
   662                 assert_failed = 1;
   660                 
   663 				ITK_MSG( testMgr, "Deleting item %d had failed", item );
   661 				ITK_MSG( testMgr, "Deleting item %d had failed", item );
   664 				goto mainloop_exit; // double break
   662 				goto mainloop_exit; // double break
   665 				}
   663 				}
   666 			}
   664 			}
   667 		}
   665 		}
   668 	deleteRandoms(testMgr, 50);
   666 	deleteRandoms(testMgr, 50);
   669 
   667 
   670 	mainloop_exit:
   668 	mainloop_exit:
   671 	testResultXml(xml_file);
   669 	
   672 	ITK_ASSERT( testMgr, valid, "Operations were not succesful" );
   670 	ITK_ASSERT( testMgr, valid, "Operations were not succesful" );
   673 	}
   671 	}
   674 
   672 
   675 void RandomTest::testDeleteAll(Itk::TestMgr* testMgr)
   673 void RandomTest::testDeleteAll(Itk::TestMgr* testMgr)
   676 	{
   674 	{
   677 	indexRandoms(testMgr, 50);
   675 	indexRandoms(testMgr, 50);
   678 	assertIndexedState(testMgr);
   676 	assertIndexedState(testMgr);;
   679 	char *xml_file = (char*)__FUNCTION__;
       
   680 	assert_failed = 0;
       
   681 	vector<int> deleted;
   677 	vector<int> deleted;
   682 	for (int i = 0; i < 50; i++)
   678 	for (int i = 0; i < 50; i++)
   683 		{
   679 		{
   684 		deleted.push_back( deleteRandom(testMgr) );
   680 		deleted.push_back( deleteRandom(testMgr) );
   685 		}
   681 		}
   689 		{
   685 		{
   690                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   686                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   691 	valid = valid && validState( testMgr, deleted[i] );
   687 	valid = valid && validState( testMgr, deleted[i] );
   692                     if ( !( valid ) )
   688                     if ( !( valid ) )
   693 			{
   689 			{
   694                     assert_failed = 1;
   690                     
   695 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   691 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   696 			break;
   692 			break;
   697 			}
   693 			}
   698 		}
   694 		}
   699 	testResultXml(xml_file);
   695 	
   700 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
   696 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
   701 	}
   697 	}
   702 
   698 
   703 void RandomTest::testContent(Itk::TestMgr* testMgr)
   699 void RandomTest::testContent(Itk::TestMgr* testMgr)
   704 	{
   700 	{
   705     char *xml_file = (char*)__FUNCTION__;
       
   706     assert_failed = 0;
       
   707 	for (int i = 0; i < 10; i++)
   701 	for (int i = 0; i < 10; i++)
   708 		{
   702 		{
   709 		int item = indexRandom(testMgr);
   703 		int item = indexRandom(testMgr);
   710                 idxUtil_->flush();
   704                 idxUtil_->flush();
   711 		assertContent(testMgr, item);
   705 		assertContent(testMgr, item);
   712 		}
   706 		}
   713 
   707 
   714 	// clean  up 
   708 	// clean  up 
   715 	deleteRandoms( testMgr, 10 );
   709 	deleteRandoms( testMgr, 10 );
   716         idxUtil_->flush();
   710         idxUtil_->flush();
   717         testResultXml(xml_file);
   711        
   718 	}
   712 	}
   719 
   713 
   720 void RandomTest::testPersistence(Itk::TestMgr* testMgr)
   714 void RandomTest::testPersistence(Itk::TestMgr* testMgr)
   721 	{
   715 	{
   722 	indexRandoms(testMgr, 20);
   716 	indexRandoms(testMgr, 20);
   723 	assertIndexedState(testMgr);
   717 	assertIndexedState(testMgr);
   724     char *xml_file = (char*)__FUNCTION__;
       
   725     assert_failed = 0;
       
   726 	idxUtil_->reload();
   718 	idxUtil_->reload();
   727 	
   719 	
   728 	assertIndexedState(testMgr);
   720 	assertIndexedState(testMgr);
   729 	vector<int> deleted;
   721 	vector<int> deleted;
   730 	for (int i = 0; i < 20; i++)
   722 	for (int i = 0; i < 20; i++)
   739 		{
   731 		{
   740                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   732                     // OBS if ( !( valid &= validState( testMgr, deleted[i] ) ) )
   741                     valid = valid && validState( testMgr, deleted[i] );
   733                     valid = valid && validState( testMgr, deleted[i] );
   742                     if ( !( valid ) )
   734                     if ( !( valid ) )
   743 			{
   735 			{
   744                     assert_failed = 1;
   736                     
   745 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   737 			ITK_MSG( testMgr, "Deleting item %d had failed", deleted[i] );
   746 			break;
   738 			break;
   747 			}
   739 			}
   748 		}
   740 		}
   749 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
   741 	ITK_ASSERT( testMgr, valid, "Deletes were not succesful" );
   750 	testResultXml(xml_file);
   742 	
   751 	}
   743 	}
   752 
   744 
   753 void RandomTest::testSearches(Itk::TestMgr* testMgr)
   745 void RandomTest::testSearches(Itk::TestMgr* testMgr)
   754 {
   746 {
   755     char *xml_file = (char*)__FUNCTION__;
       
   756     assert_failed = 0;
       
   757 	traceTerm(testMgr, L"happy");
   747 	traceTerm(testMgr, L"happy");
   758 	traceTerm(testMgr, L"people");
   748 	traceTerm(testMgr, L"people");
   759 	traceTerm(testMgr, L"come");
   749 	traceTerm(testMgr, L"come");
   760 	traceTerm(testMgr, L"guy");	
   750 	traceTerm(testMgr, L"guy");	
   761 	traceTerm(testMgr, L"done");
   751 	traceTerm(testMgr, L"done");
   777 	assertTracedTerms( testMgr );
   767 	assertTracedTerms( testMgr );
   778 	deleteRandoms( testMgr, 20 );
   768 	deleteRandoms( testMgr, 20 );
   779 	assertTracedTerms( testMgr );
   769 	assertTracedTerms( testMgr );
   780 
   770 
   781 	untraceTerms(testMgr);
   771 	untraceTerms(testMgr);
   782 	testResultXml(xml_file);
   772 	
   783 }
   773 }
   784 
   774 
   785 void RandomTest::testCreatedIndex(Itk::TestMgr* testMgr) {
   775 void RandomTest::testCreatedIndex(Itk::TestMgr* testMgr) {
   786     char *xml_file = (char*)__FUNCTION__;
       
   787     assert_failed = 0;
       
   788 	int item = indexRandom( testMgr ); 
   776 	int item = indexRandom( testMgr ); 
   789         idxUtil_->flush();
   777         idxUtil_->flush();
   790 	assertState( testMgr, item ); 
   778 	assertState( testMgr, item ); 
   791 
   779 
   792 	assertContent( testMgr, item );
   780 	assertContent( testMgr, item );
   814         ITK_EXPECT(testMgr,
   802         ITK_EXPECT(testMgr,
   815                    deleted == 0,
   803                    deleted == 0,
   816                    "There should not have been an item to delete");
   804                    "There should not have been an item to delete");
   817         if(!cpix_Succeeded(idxUtil_->idxDb()) || deleted != 0)
   805         if(!cpix_Succeeded(idxUtil_->idxDb()) || deleted != 0)
   818             {
   806             {
   819                 assert_failed = 1;
   807                 
   820             }
   808             }
   821         testResultXml(xml_file);
   809        
   822 }
   810 }
   823 
   811 
   824 
   812