16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#!/usr/bin/perl
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#  ********************************************************************
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#  * COPYRIGHT:
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#  * Copyright (c) 2003-2013, International Business Machines Corporation and
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#  * others. All Rights Reserved.
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#  ********************************************************************
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#use strict;
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgrequire "../perldriver/Common.pl";
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguse lib '../perldriver';
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguse PerfFramework;
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgmy $options = {
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "title"=>"Unicode String performance: ICU ".$ICULatestVersion." vs. STDLib",
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "headers"=>"StdLib ICU".$ICULatestVersion,
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "operationIs"=>"Unicode String",
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "timePerOperationIs"=>"Time per Unicode String",
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "passes"=>"5",
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "time"=>"2",
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    #"outputType"=>"HTML",
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "dataDir"=>$CollationDataPath,
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "outputDir"=>"../results"
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# programs
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# tests will be done for all the programs. Results will be stored and connected
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgmy $p;
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgif ($OnWindows) {
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    $p = "cd ".$ICULatest."/bin && ".$ICUPathLatest."/ustrperf/$WindowsPlatform/Release/stringperf.exe -l -u";
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} else {
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    $p = "LD_LIBRARY_PATH=".$ICULatest."/source/lib:".$ICULatest."/source/tools/ctestfw ".$ICUPathLatest."/ustrperf/stringperf -l -u";
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgmy $tests = {
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Object Construction(empty string)",      ["$p,TestStdLibCtor"         , "$p,TestCtor"         ],
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Object Construction(single char)",       ["$p,TestStdLibCtor1"        , "$p,TestCtor1"        ],
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Object Construction(another string)",    ["$p,TestStdLibCtor2"        , "$p,TestCtor2"        ],
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Object Construction(string literal)",    ["$p,TestStdLibCtor3"        , "$p,TestCtor3"        ],
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "String Assignment(helper)",              ["$p,TestStdLibAssign"       , "$p,TestAssign"       ],
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "String Assignment(string literal)",      ["$p,TestStdLibAssign1"      , "$p,TestAssign1"      ],
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "String Assignment(another string)",      ["$p,TestStdLibAssign2"      , "$p,TestAssign2"      ],
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Get String or Character",                ["$p,TestStdLibGetch"        , "$p,TestGetch"        ],
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "Concatenation",                          ["$p,TestStdLibCatenate"     , "$p,TestCatenate"     ],
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "String Scanning(char)",                  ["$p,TestStdLibScan"         , "$p,TestScan"         ],
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "String Scanning(string)",                ["$p,TestStdLibScan1"        , "$p,TestScan1"        ],
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "String Scanning(char set)",              ["$p,TestStdLibScan2"        , "$p,TestScan2"        ],
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgmy $dataFiles = {
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    "",
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    [
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Asian.txt",
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Chinese.txt",
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Simplified_Chinese.txt",
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Japanese_h.txt",
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Japanese_k.txt",
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Korean.txt",
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Latin.txt",
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_SerbianSH.txt",
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_SerbianSR.txt",
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "TestNames_Thai.txt",
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "Testnames_Russian.txt",
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        "th18057.txt",
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ]
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgrunTests($options, $tests, $dataFiles);
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# The whole command line would be something like:
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org# 	stringperf.exe -p 5 -t 2 -f c:/src/data/perf/TestNames_Asian.txt -l -u TestStdLibCatenate