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

use strict;

#Assume we are running outside of the icu source
use lib './icu-3.0/icu/source/test/perf/perldriver';

use PerfFramework;

my $options = {
	       "title"=>"Conversion performance regression (ICU 2.8 and 3.0)",
	       "headers"=>"ICU28 ICU30",
	       "operationIs"=>"code point",
	       "timePerOperationIs"=>"Time per code point",
	       "passes"=>"10",
	       "time"=>"5",
	       #"outputType"=>"HTML",
	       "dataDir"=>"c:/src/perf/data",
	       "outputDir"=>"results_ICU4C"
	      };

# programs

my $p1 = "icu-2.8/icu/bin/convperf28.exe";
my $p2 = "icu-3.0/icu/bin/convperf30.exe";

my $dataFiles = "";


my $tests = { 
	     "UTF-8 From Unicode",          ["$p1 TestICU_UTF8_FromUnicode"  ,    "$p2 TestICU_UTF8_FromUnicode" ],
	     "UTF-8 To Unicode",            ["$p1 TestICU_UTF8_ToUnicode"    ,    "$p2 TestICU_UTF8_ToUnicode" ],
         ####
	     "ISO-8859-1 From Unicode",     ["$p1 TestICU_Latin1_FromUnicode"  ,  "$p2 TestICU_Latin1_FromUnicode" ],
	     "ISO-8859-1 To Unicode",       ["$p1 TestICU_Latin1_ToUnicode"    ,  "$p2 TestICU_Latin1_ToUnicode" ],
         ####
	     "Shift-JIS From Unicode",      ["$p1 TestICU_SJIS_FromUnicode"  ,    "$p2 TestICU_SJIS_FromUnicode" ],
	     "Shift-JIS To Unicode",        ["$p1 TestICU_SJIS_ToUnicode"    ,    "$p2 TestICU_SJIS_ToUnicode" ],
         ####
	     "EUC-JP From Unicode",         ["$p1 TestICU_EUCJP_FromUnicode"  ,   "$p2 TestICU_EUCJP_FromUnicode" ],
	     "EUC-JP To Unicode",           ["$p1 TestICU_EUCJP_ToUnicode"    ,   "$p2 TestICU_EUCJP_ToUnicode" ],
         ####
	     "GB2312 From Unicode",         ["$p1 TestICU_GB2312_FromUnicode"  ,  "$p2 TestICU_GB2312_FromUnicode" ],
	     "GB2312 To Unicode",           ["$p1 TestICU_GB2312_ToUnicode"    ,  "$p2 TestICU_GB2312_ToUnicode" ],
         ####
	     "ISO2022KR From Unicode",      ["$p1 TestICU_ISO2022KR_FromUnicode",  "$p2 TestICU_ISO2022KR_FromUnicode" ],
	     "ISO2022KR To Unicode",        ["$p1 TestICU_ISO2022KR_ToUnicode"  ,  "$p2 TestICU_ISO2022KR_ToUnicode" ],
         ####
	     "ISO2022JP From Unicode",      ["$p1 TestICU_ISO2022JP_FromUnicode", "$p2 TestICU_ISO2022JP_FromUnicode" ],
	     "ISO2022JP To Unicode",        ["$p1 TestICU_ISO2022JP_ToUnicode"  ,  "$p2 TestICU_ISO2022JP_ToUnicode" ],
	    };
	    

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


