searchengine/cpix/tsrc/cpixunittest/src/analysis.cpp
changeset 3 ae3f1779f6da
parent 0 671dee74050a
child 7 a5fbfefd615f
equal deleted inserted replaced
2:6c1a2771f4b7 3:ae3f1779f6da
    28 #include "testutils.h"
    28 #include "testutils.h"
    29 #include "cpixanalyzer.h"
    29 #include "cpixanalyzer.h"
    30 
    30 
    31 #include "cpixdoc.h"
    31 #include "cpixdoc.h"
    32 
    32 
       
    33 #include "std_log_result.h"
    33 const char * AnalysisTestDocsToIndex[5] = {
    34 const char * AnalysisTestDocsToIndex[5] = {
    34     FILE_TEST_CORPUS_PATH "\\en\\1.txt",
    35     FILE_TEST_CORPUS_PATH "\\en\\1.txt",
    35     FILE_TEST_CORPUS_PATH "\\en\\2.txt",
    36     FILE_TEST_CORPUS_PATH "\\en\\2.txt",
    36     FILE_TEST_CORPUS_PATH "\\en\\3.txt",
    37     FILE_TEST_CORPUS_PATH "\\en\\3.txt",
    37     FILE_TEST_CORPUS_PATH "\\en\\4.txt",
    38     FILE_TEST_CORPUS_PATH "\\en\\4.txt",
    44 	L"happening",
    45 	L"happening",
    45     NULL
    46     NULL
    46 };
    47 };
    47 
    48 
    48 
    49 
    49 void TestAnalyzerParsing(Itk::TestMgr * , const wchar_t* definition) 
    50 void TestAnalyzerParsing(Itk::TestMgr * , const wchar_t* definition, int expected = 1) 
    50 {
    51 {
    51 	cpix_Result result; 
    52 	cpix_Result result; 
    52 	
    53 	
    53 	printf("Creating analyzer %S\n", definition);
    54 	printf("Creating analyzer %S\n", definition);
    54 	
    55 	
    55 	cpix_Analyzer* analyzer = cpix_Analyzer_create( &result, definition);
    56 	cpix_Analyzer* analyzer = cpix_Analyzer_create( &result, definition);
    56 
    57 
    57 	if ( cpix_Failed( &result) ) {
    58 	if ( cpix_Failed( &result) ) {
       
    59         if(expected)
       
    60             assert_failed = 1;
       
    61         else
       
    62             assert_failed = 0;            
    58 		printf("Analyzer creation failed with %S\n", result.err_->msg_);
    63 		printf("Analyzer creation failed with %S\n", result.err_->msg_);
    59 		return; 
    64 		return; 
    60 	}
    65 	}
    61 	cpix_Analyzer_destroy( analyzer ); 
    66 	cpix_Analyzer_destroy( analyzer ); 
    62 }
    67 }
    63 
    68 
    64 void TestAnalyzersParsing(Itk::TestMgr * testMgr) 
    69 void TestAnalyzersParsing(Itk::TestMgr * testMgr) 
    65 {
    70 {
       
    71     char *xml_file = (char*)__FUNCTION__;
       
    72     assert_failed = 0;
    66 	TestAnalyzerParsing(testMgr, L"stdtokens>lowercase"); 
    73 	TestAnalyzerParsing(testMgr, L"stdtokens>lowercase"); 
    67 	TestAnalyzerParsing(testMgr, L"whitespace>lowercase"); 
    74 	TestAnalyzerParsing(testMgr, L"whitespace>lowercase"); 
    68 	TestAnalyzerParsing(testMgr, L"letter>lowercase"); 
    75 	TestAnalyzerParsing(testMgr, L"letter>lowercase"); 
    69 	// special syntax
    76 	// special syntax
    70 	TestAnalyzerParsing(testMgr, L"stdtokens()>lowercase"); 
    77 	TestAnalyzerParsing(testMgr, L"stdtokens()>lowercase"); 
    73 	TestAnalyzerParsing(testMgr, L"stdtokens>lowercase>stem(en)"); 
    80 	TestAnalyzerParsing(testMgr, L"stdtokens>lowercase>stem(en)"); 
    74 	TestAnalyzerParsing(testMgr, L"letter>lowercase>stop(en)"); 
    81 	TestAnalyzerParsing(testMgr, L"letter>lowercase>stop(en)"); 
    75 	TestAnalyzerParsing(testMgr, L"letter>lowercase>stop('a', 'an', 'the')");
    82 	TestAnalyzerParsing(testMgr, L"letter>lowercase>stop('a', 'an', 'the')");
    76 
    83 
    77 	// bad syntaxes
    84 	// bad syntaxes
    78 	TestAnalyzerParsing(testMgr, L"letter><lowercase" ); 
    85 	TestAnalyzerParsing(testMgr, L"letter><lowercase" ,0); 
    79 	TestAnalyzerParsing(testMgr, L"38j_d fad23 4?q ca'wRA" ); 
    86 	TestAnalyzerParsing(testMgr, L"38j_d fad23 4?q ca'wRA", 0 ); 
    80 	// parsing failures
    87 	// parsing failures
    81 	TestAnalyzerParsing(testMgr, L"letter>>lowercase" ); 
    88 	TestAnalyzerParsing(testMgr, L"letter>>lowercase", 0 ); 
    82 	TestAnalyzerParsing(testMgr, L">letter>>lowercase lowercase" ); 
    89 	TestAnalyzerParsing(testMgr, L">letter>>lowercase lowercase", 0 ); 
    83 	TestAnalyzerParsing(testMgr, L"letter lowercase" ); 
    90 	TestAnalyzerParsing(testMgr, L"letter lowercase", 0 );
       
    91 	testResultXml(xml_file);
    84 }
    92 }
    85 
    93 
    86 void TestSwitchParsing(Itk::TestMgr * testMgr) 
    94 void TestSwitchParsing(Itk::TestMgr * testMgr) 
    87 {
    95 {
       
    96     char *xml_file = (char*)__FUNCTION__;
       
    97         assert_failed = 0;
    88 	// Per field query syntax
    98 	// Per field query syntax
    89 	TestAnalyzerParsing(testMgr, L"switch {"
    99 	TestAnalyzerParsing(testMgr, L"switch {"
    90 									 L"case '_docuid':          keyword; "
   100 									 L"case '_docuid':          keyword; "
    91 									 L"case '_appclass':        whitespace>lowercase;"
   101 									 L"case '_appclass':        whitespace>lowercase;"
    92 									 L"case 'title', 'message': standard>lowercase>stem(en)>stop(en);"
   102 									 L"case 'title', 'message': standard>lowercase>stem(en)>stop(en);"
    93 									 L"default:                 standard;"
   103 									 L"default:                 standard;"
    94 								 L"}");
   104 								 L"}");
    95 	TestAnalyzerParsing(testMgr, L"switch{ case '_qnr': whitespace; default: standard; }>lowercase");
   105 	TestAnalyzerParsing(testMgr, L"switch{ case '_qnr': whitespace; default: standard; }>lowercase");
    96 	TestAnalyzerParsing(testMgr, L"switch{ default: 	standard; }");
   106 	TestAnalyzerParsing(testMgr, L"switch{ default: 	standard; }");
    97 	TestAnalyzerParsing(testMgr, L"switch{ case '_qnr': switch{ case '_docuid': keyword; default: whitespace; }; default: standard; }");
   107 	TestAnalyzerParsing(testMgr, L"switch{ case '_qnr': switch{ case '_docuid': keyword; default: whitespace; }; default: standard; }");
       
   108 	testResultXml(xml_file);
    98 }
   109 }
    99 
   110 
   100 void TestAnalyzerUsage(Itk::TestMgr * testMgr, const wchar_t* definition) 
   111 void TestAnalyzerUsage(Itk::TestMgr * testMgr, const wchar_t* definition) 
   101 {
   112 {
   102 	printf("Indexing and searching with %S\n", definition); 
   113 	printf("Indexing and searching with %S\n", definition); 
   103 	
   114 	char *xml_file = (char*)__FUNCTION__;
       
   115 	    assert_failed = 0;
   104 	cpix_Result
   116 	cpix_Result
   105         result;
   117         result;
   106 
   118 
   107     cpix_IdxDb_dbgScrapAll(&result);
   119     cpix_IdxDb_dbgScrapAll(&result);
   108 
   120 
   177 
   189 
   178 		cpix_Query_destroy( query ); 
   190 		cpix_Query_destroy( query ); 
   179 
   191 
   180 		if (cpix_Failed(util->idxDb())) 
   192 		if (cpix_Failed(util->idxDb())) 
   181 			{
   193 			{
       
   194             assert_failed = 1;
   182 			cpix_Analyzer_destroy(analyzer);
   195 			cpix_Analyzer_destroy(analyzer);
   183 			cpix_ClearError(queryParser);
   196 			cpix_ClearError(queryParser);
   184 			cpix_QueryParser_destroy(queryParser);
   197 			cpix_QueryParser_destroy(queryParser);
   185 			ITK_PANIC("Searching index database failed.");
   198 			ITK_PANIC("Searching index database failed.");
   186 			}
   199 			}
   190 			cpix_Hits_destroy( hits ); 
   203 			cpix_Hits_destroy( hits ); 
   191 			}
   204 			}
   192 	}
   205 	}
   193 	cpix_QueryParser_destroy(queryParser);
   206 	cpix_QueryParser_destroy(queryParser);
   194 	cpix_Analyzer_destroy( analyzer ); 
   207 	cpix_Analyzer_destroy( analyzer ); 
       
   208 	testResultXml(xml_file);
   195 }
   209 }
   196 
   210 
   197 void TestAnalyzersUsage(Itk::TestMgr * testMgr) 
   211 void TestAnalyzersUsage(Itk::TestMgr * testMgr) 
   198 	{
   212 	{
       
   213     char *xml_file = (char*)__FUNCTION__;
       
   214     assert_failed = 0;
   199 	TestAnalyzerUsage(testMgr, L"whitespace" ); 
   215 	TestAnalyzerUsage(testMgr, L"whitespace" ); 
   200 	TestAnalyzerUsage(testMgr, L"letter>lowercase" ); 
   216 	TestAnalyzerUsage(testMgr, L"letter>lowercase" ); 
   201 	TestAnalyzerUsage(testMgr, L"stdtokens>lowercase>stem(en)"); 
   217 	TestAnalyzerUsage(testMgr, L"stdtokens>lowercase>stem(en)"); 
   202 	TestAnalyzerUsage(testMgr, L"letter>lowercase>stop(en)"); 
   218 	TestAnalyzerUsage(testMgr, L"letter>lowercase>stop(en)"); 
   203 	TestAnalyzerUsage(testMgr, L"letter>lowercase>stop('a', 'an', 'the')"); 
   219 	TestAnalyzerUsage(testMgr, L"letter>lowercase>stop('a', 'an', 'the')");
       
   220 	testResultXml(xml_file);
   204 	}
   221 	}
   205 
   222 
   206 
   223 
   207 Itk::TesterBase * CreateAnalysisWhiteBoxTests();
   224 Itk::TesterBase * CreateAnalysisWhiteBoxTests();
   208 
   225