#!/usr/bin/perl
#  ********************************************************************
#  * COPYRIGHT:
#  * Copyright (c) 2002, 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);


