#!/usr/bin/perl
#  ********************************************************************
#  * COPYRIGHT:
#  * Copyright (c) 2005-2012, International Business Machines Corporation and
#  * others. All Rights Reserved.
#  ********************************************************************

#use strict;

use lib '../perldriver';

require "../perldriver/Common.pl";

use PerfFramework;

my $options = {
	       "title"=>"Collation performance: ICU,POSIX,and Win",
	       "headers"=>"ICU POSIX WIN",
	       "operationIs"=>"unicode String",
	       "passes"=>"1",
	       "time"=>"2",
	       #"outputType"=>"HTML",
	       "dataDir"=>$CollationDataPath,
           "outputDir"=>"../results"
	      };

my $p;
if ($OnWindows) {
	$p = $ICUPathLatest."/collperf/$WindowsPlatform/Release/collperf.exe";
} else {
	$p = $ICUPathLatest."/collperf/collperf";
}

# programs
# tests will be done for all the programs. Results will be stored and connected
my $test;
if ($OnWindows) {
	$tests = { 
	     "Key Gen null",  ["$p TestIcu_KeyGen_null", "$p TestPosix_KeyGen_null", "$p TestWin_KeyGen_null"],
	     "qsort strcoll null",  ["$p TestIcu_qsort_strcoll_null", "$p TestPosix_qsort_strcoll_null", "$p TestWin_qsort_CompareStringW_null"],
	     "qsort use key",  ["$p TestIcu_qsort_usekey", "$p TestPosix_qsort_usekey", "$p TestWin_qsort_usekey"],
	     "Binary Search icu strcoll null",  ["$p TestIcu_BinarySearch_strcoll_null", "$p TestPosix_BinarySearch_strcoll_null", "$p TestWin_BinarySearch_CompareStringW_null"],
	     "Binary Search icu use key",  ["$p TestIcu_BinarySearch_usekey", "$p TestPosix_BinarySearch_usekey", "$p TestWin_BinarySearch_usekey"],
	     # These are the original test. They are commented out to so that the above test can run and compare certain aspects of collation.
	     #"Key Gen ICU null",  ["$p TestIcu_KeyGen_null"],
	     #"Key Gen ICU len",  ["$p TestIcu_KeyGen_len"],
	     #"Key Gen POSIX",  ["$p TestPosix_KeyGen_null"],
	     #"Key Gen Win",  ["$p TestWin_KeyGen_null"],
	     #"Iteration icu forward null",  ["$p TestIcu_ForwardIter_null"],
	     #"Iteration icu forward len",  ["$p TestIcu_ForwardIter_len"],
	     #"Iteration icu backward null",  ["$p TestIcu_BackwardIter_null"],
	     #"Iteration icu backward len",  ["$p TestIcu_BackwardIter_len"],
	     #"Iteration/all icu forward null",  ["$p TestIcu_ForwardIter_all_null"],
	     #"Iteration/all icu forward len",  ["$p TestIcu_ForwardIter_all_len"],
	     #"Iteration/all icu backward null",  ["$p TestIcu_BackwardIter_all_null"],
	     #"Iteration/all icu backward len",  ["$p TestIcu_BackwardIter_all_len"],
	     #"qsort icu strcoll null",  ["$p TestIcu_qsort_strcoll_null"],
	     #"qsort icu strcoll len",  ["$p TestIcu_qsort_strcoll_len"],
	     #"qsort icu use key",  ["$p TestIcu_qsort_usekey"],
	     #"qsort posix strcoll null",  ["$p TestPosix_qsort_strcoll_null"],
	     #"qsort posix use key",  ["$p TestPosix_qsort_usekey"],
	     #"qsort win CompareStringW null",  ["$p TestWin_qsort_CompareStringW_null"],
	     #"qsort win CompareStringW len",  ["$p TestWin_qsort_CompareStringW_len"],
	     #"qsort win use key",  ["$p TestWin_qsort_usekey"],
	     #"Binary Search icu strcoll null",  ["$p TestIcu_BinarySearch_strcoll_null"],
	     #"Binary Search icu strcoll len",  ["$p TestIcu_BinarySearch_strcoll_len"],
	     #"Binary Search icu use key",  ["$p TestIcu_BinarySearch_usekey"],
	     #"Binary Search icu u_strcmp",  ["$p TestIcu_BinarySearch_strcmp"],
	     #"Binary Search icu cmpCPO",  ["$p TestIcu_BinarySearch_cmpCPO"],
	     #"Binary Search posix strcoll null",  ["$p TestPosix_BinarySearch_strcoll_null"],
	     #"Binary Search posix use key",  ["$p TestPosix_BinarySearch_usekey"],
	     #"Binary Search win CompareStringW null",  ["$p TestWin_BinarySearch_CompareStringW_null"],
	     #"Binary Search win CompareStringW len",  ["$p TestWin_BinarySearch_CompareStringW_len"],
	     #"Binary Search win use key",  ["$p TestWin_BinarySearch_usekey"],
	     #"Binary Search win wcscmp",  ["$p TestWin_BinarySearch_wcscmp"],
	    };
} else {
	$tests = { 
	     "Key Gen null",  ["$p TestIcu_KeyGen_null", "$p TestPosix_KeyGen_null"],
	     "qsort strcoll null",  ["$p TestIcu_qsort_strcoll_null", "$p TestPosix_qsort_strcoll_null"],
	     "qsort use key",  ["$p TestIcu_qsort_usekey", "$p TestPosix_qsort_usekey"],
	     "Binary Search icu strcoll null",  ["$p TestIcu_BinarySearch_strcoll_null", "$p TestPosix_BinarySearch_strcoll_null"],
	     "Binary Search icu use key",  ["$p TestIcu_BinarySearch_usekey", "$p TestPosix_BinarySearch_usekey"],
	};
}

my $dataFiles = {
		 "",
		 [
		  "TestNames_Asian.txt",
		  "TestNames_Chinese.txt",
		  "TestNames_Japanese.txt",
		  "TestNames_Japanese_h.txt",
		  "TestNames_Japanese_k.txt",
		  "TestNames_Korean.txt",
		  "TestNames_Latin.txt",
		  "TestNames_Russian.txt",
		  "TestNames_SerbianSH.txt",
		  "TestNames_SerbianSR.txt",
		  "TestNames_Simplified_Chinese.txt",
		  "TestNames_Thai.txt"
		 ]
		};

runTests($options, $tests, $dataFiles);
