searchengine/cpix/tsrc/cpixunittest/src/cpixunittest.cpp
changeset 0 671dee74050a
child 1 6f2c1c46032b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchengine/cpix/tsrc/cpixunittest/src/cpixunittest.cpp	Mon Apr 19 14:40:16 2010 +0300
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include <stdio.h>
+#include <wchar.h>
+#include <glib.h>
+
+#include <algorithm>
+#include <functional>
+#include <memory>
+
+#include "cpixinit.h"
+#include "config.h"
+
+#include "randomtest.h"
+
+#include "itk.h"
+
+#include <iostream>
+#include <fstream>
+
+#ifdef __GCCE__
+#include <staticlibinit_gcce.h>
+#endif
+
+using namespace Itk; 
+
+Itk::TesterBase * CreatePartialSmsTests();
+Itk::TesterBase * CreateDeletionTests();
+Itk::TesterBase * CreateWhiteBoxTests();
+Itk::TesterBase * CreateDestructiveTests(); 
+Itk::TesterBase * CreatePrematureQryTests();
+Itk::TesterBase * CreateCLuceneErrorTests(); // also from destructive.cpp
+Itk::TesterBase * CreateStemTests();
+Itk::TesterBase * CreateAggregateTests();
+Itk::TesterBase * CreateGeoTests();
+Itk::TesterBase * CreateMultiVolumeTests();
+Itk::TesterBase * CreateDomainSelectionTests();
+Itk::TesterBase * CreateUtf8Tests();
+Itk::TesterBase * CreateUtf8PathTests();
+Itk::TesterBase * CreateAnalysisTests();
+Itk::TesterBase * CreateMapsTests();
+Itk::TesterBase * CreateDocumentTests();
+Itk::TesterBase * CreateTermSearchTests();
+Itk::TesterBase * CreatePdfSearchTests();
+
+Itk::TesterBase * CreateFlushTests();
+Itk::TesterBase * CreateHeartbeatTests();
+Itk::TesterBase * CreateNegativeTests();
+
+// Clucene Qry
+Itk::TesterBase * CreateClQryHierarchy();
+
+Itk::TesterBase * CreateASyncTests();
+
+// Spi 
+Itk::TesterBase * CreateExifTests();
+Itk::TesterBase * CreateId3Tests();
+
+Itk::TesterBase * CreateSpiHierarchy() 
+{
+	using namespace Itk; 
+
+	// "spi"
+    SuiteTester
+        * spi = new SuiteTester("spi");
+    
+    spi->add(CreateExifTests());  
+    spi->add(CreateId3Tests()); 
+    
+    return spi; 
+}
+
+
+
+Itk::TesterBase * CreateTestHierarchy()
+{
+    using namespace Itk;
+
+    // "all"
+    SuiteTester
+        * all = new SuiteTester("all");
+    
+
+    all->add(CreateSuiteTesterRandom()); 
+    all->add(CreateDestructiveTests());
+    all->add(CreatePrematureQryTests());
+    // TODO enable when CLuceneErorr bug is found and fixed
+    //all->add(CreateCLuceneErrorTests());  
+    all->add(CreatePartialSmsTests()); 
+    all->add(CreateDeletionTests());  
+    all->add(CreateWhiteBoxTests()); 
+    all->add(CreateStemTests()); 
+    all->add(CreateAggregateTests()); 
+	all->add(CreateNegativeTests());
+    all->add(CreateGeoTests());
+    all->add(CreateMultiVolumeTests()); 	
+    all->add(CreateDomainSelectionTests()); 
+    all->add(CreateUtf8Tests());			
+    all->add(CreateUtf8PathTests());
+    all->add(CreateAnalysisTests());		
+    all->add(CreateMapsTests());			 
+
+    all->add(CreateDocumentTests());		
+    all->add(CreateFlushTests());			
+    all->add(CreateHeartbeatTests());	    
+    all->add(CreateTermSearchTests()); 		
+    //all->add(CreatePdfSearchTests());
+    
+    // TODO enable later Itk::TesterBase * CreateClQryHierarchy();
+
+    all->add(CreateASyncTests());			
+
+    all->add(CreateSpiHierarchy());
+
+    // add more top level test suites here
+    // ...
+    
+    return all;
+}
+
+
+// required for heartbeat tests
+const size_t       MaxIdleSec = 5;
+
+
+
+#ifdef __SYMBIAN32__
+#include "e32std.h" // For heap marks
+#endif
+
+int main(int          argc,
+         const char * argv[])
+{	
+#ifdef __SYMBIAN32__
+    __UHEAP_MARK;
+#endif 
+
+	using namespace std;
+
+	int
+		rv = 0;
+	{
+			
+		cpix_Result
+			result;
+                cpix_InitParams
+                    * initParams = cpix_InitParams_create(&result);
+                if (cpix_Failed(&result))
+                    {
+                        printf("Failed to initialize Cpix\n");
+                        return -1;
+                    }
+                cpix_InitParams_setMaxIdleSec(initParams,
+                                              MaxIdleSec);
+                if (cpix_Failed(initParams))
+                    {
+                        printf("Failed to set max idle sec\n");
+                        return -1;
+                    }
+
+                cpix_InitParams_setQryThreadPriorityDelta(initParams,
+                                                          10);
+                if (cpix_Failed(initParams))
+                    {
+                        printf("Failed to increase thread priority\n");
+                        return -1;
+                    }
+
+		cpix_init(&result,
+                          initParams);
+		if (cpix_Failed(&result))
+			{
+				wchar_t
+					buffer[128];
+				cpix_Error_report(result.err_,
+                                                  buffer,
+                                                  sizeof(buffer)/sizeof(wchar_t));
+				printf("Failed to initialize CPix: %S\n",
+					   buffer);
+				return -1;
+			}
+
+                cpix_InitParams_destroy(initParams);
+	
+                cpix_dbgForceLogs();
+
+		// cpix_setLogLevel(CPIX_LL_DEBUG);
+	
+		auto_ptr<TesterBase>
+			testCase(CreateTestHierarchy());
+	
+		bool
+			help = false;
+		const char
+			* focus = NULL;
+	
+		if (argc == 2)
+			{ if (strcmp(argv[1], "h") == 0)
+					{
+						help = true;
+					}
+				else
+					{
+						focus = argv[1];
+					}
+			}
+		
+		
+		if (help)
+			{
+				cout << "Test hierarchy:" << endl;
+				testCase->printHierarchy(cout);
+			}
+		else
+			{
+				auto_ptr<Itk::CompositeTestRunObserver>
+					observer(new Itk::CompositeTestRunObserver());
+				observer->add(new Itk::TestRunConsole(std::cout));
+	
+				// do this only if you need a way to
+				// confirm that the process is running
+				// on the phone without proper std IO
+				// console OBS observer->add(new
+				// Itk::ProgressFsDisplayer());
+	
+				// this observer will dump every event
+				// to a file, so it slows down
+				// everything, but when things crash,
+				// at least you get partial results on
+				// the file system
+				observer->add(new Itk::ProgressDumper("c:\\data\\cpixunittest\\dump.txt"));
+	
+				Itk::TestMgr 
+					testMgr(observer.get(),
+						   "c:\\data\\cpixunittest\\");
+		 
+				rv = testMgr.run(testCase.get(),
+								focus);
+				
+				testMgr.generateSummary(std::cout);
+	
+				ofstream
+					ofs("c:\\data\\cpixunittest\\report.txt");
+				if (ofs)
+					{
+						testMgr.generateSummary(ofs);
+					}
+			}
+		
+	
+		cpix_shutdown();
+	
+		int
+			c = getchar();
+	}
+
+#ifdef __SYMBIAN32__
+    __UHEAP_MARKEND; 
+#endif 
+	return rv;
+}