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 |
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 { |
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 ); |