|  | </<!DOCTYPE> | 
|  | <html xmlns:v="urn:schemas-microsoft-com:vml" | 
|  | xmlns:o="urn:schemas-microsoft-com:office:office" | 
|  | xmlns:w="urn:schemas-microsoft-com:office:word" | 
|  | xmlns="http://www.w3.org/TR/REC-html40"> | 
|  |  | 
|  | <head> | 
|  | <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"> | 
|  | <meta name=ProgId content=Word.Document> | 
|  | <meta name=Generator content="Microsoft Word 9"> | 
|  | <meta name=Originator content="Microsoft Word 9"> | 
|  | <link rel=File-List href="./cintltst_files/filelist.xml"> | 
|  | <link rel=Edit-Time-Data href="./cintltst_files/editdata.mso"> | 
|  | <!--[if !mso]> | 
|  | <style> | 
|  | v\:* {behavior:url(#default#VML);} | 
|  | o\:* {behavior:url(#default#VML);} | 
|  | w\:* {behavior:url(#default#VML);} | 
|  | .shape {behavior:url(#default#VML);} | 
|  | </style> | 
|  | <![endif]--> | 
|  | <title>CintlTst Test Suite Doumentation</title> | 
|  | <!--[if gte mso 9]><xml> | 
|  | <o:DocumentProperties> | 
|  | <o:Author>Helena Shih</o:Author> | 
|  | <o:Template>Normal</o:Template> | 
|  | <o:LastAuthor>Helena Shih</o:LastAuthor> | 
|  | <o:Revision>2</o:Revision> | 
|  | <o:TotalTime>1</o:TotalTime> | 
|  | <o:Created>2000-01-15T02:18:00Z</o:Created> | 
|  | <o:LastSaved>2000-01-15T02:19:00Z</o:LastSaved> | 
|  | <o:Pages>3</o:Pages> | 
|  | <o:Words>832</o:Words> | 
|  | <o:Characters>4747</o:Characters> | 
|  | <o:Company>IBM</o:Company> | 
|  | <o:Lines>39</o:Lines> | 
|  | <o:Paragraphs>9</o:Paragraphs> | 
|  | <o:CharactersWithSpaces>5829</o:CharactersWithSpaces> | 
|  | <o:Version>9.2720</o:Version> | 
|  | </o:DocumentProperties> | 
|  | </xml><![endif]--> | 
|  | <style> | 
|  | <!-- | 
|  | /* Style Definitions */ | 
|  | p.MsoNormal, li.MsoNormal, div.MsoNormal | 
|  | {mso-style-parent:""; | 
|  | margin:0in; | 
|  | margin-bottom:.0001pt; | 
|  | mso-pagination:widow-orphan; | 
|  | font-size:12.0pt; | 
|  | font-family:"Times New Roman"; | 
|  | mso-fareast-font-family:"Times New Roman";} | 
|  | p | 
|  | {font-size:12.0pt; | 
|  | font-family:"Times New Roman"; | 
|  | mso-fareast-font-family:"Times New Roman";} | 
|  | pre | 
|  | {margin:0in; | 
|  | margin-bottom:.0001pt; | 
|  | font-size:10.0pt; | 
|  | font-family:"Courier New"; | 
|  | mso-fareast-font-family:"Courier New";} | 
|  | @page Section1 | 
|  | {size:8.5in 11.0in; | 
|  | margin:1.0in 1.25in 1.0in 1.25in; | 
|  | mso-header-margin:.5in; | 
|  | mso-footer-margin:.5in; | 
|  | mso-paper-source:0;} | 
|  | div.Section1 | 
|  | {page:Section1;} | 
|  | --> | 
|  | </style> | 
|  | <!--[if gte mso 9]><xml> | 
|  | <o:shapedefaults v:ext="edit" spidmax="1027"/> | 
|  | </xml><![endif]--><!--[if gte mso 9]><xml> | 
|  | <o:shapelayout v:ext="edit"> | 
|  | <o:idmap v:ext="edit" data="1"/> | 
|  | </o:shapelayout></xml><![endif]--> | 
|  | </head> | 
|  |  | 
|  | <body bgcolor=white lang=EN-US link=blue vlink=blue style='tab-interval:.5in'> | 
|  |  | 
|  | <div class=Section1> | 
|  |  | 
|  | <h1>Cintltst Test Suite Documentation</h1> | 
|  |  | 
|  |  | 
|  | <div class=MsoNormal align=center style='text-align:center'> | 
|  |  | 
|  | <hr size=2 width="100%" align=center> | 
|  |  | 
|  | </div> | 
|  |  | 
|  |  | 
|  | <p><span style="mso-spacerun: yes"> </span>Copyright (C) 1998-2000, International | 
|  | Business Machines Corporation and others.<span style="mso-spacerun: yes">  | 
|  | </span>All Rights Reserved.</p> | 
|  |  | 
|  |  | 
|  | <div class=MsoNormal align=center style='text-align:center'> | 
|  |  | 
|  | <hr size=2 width="100%" align=center> | 
|  |  | 
|  | </div> | 
|  |  | 
|  |  | 
|  | <p>The cintltst Test Suite contains all the tests for International | 
|  | Components for Unicode C API. These tests may be automatically run by typing | 
|  | "cintltst" or "cintltst -all" at the command line. It | 
|  | depends on the C Test Framework. <br> | 
|  | "cintltst"<br> | 
|  | or<br> | 
|  | "cintltst -all"</p> | 
|  |  | 
|  | <h3>C Test FrameWork</h3> | 
|  |  | 
|  | <h4>Purpose:</h4> | 
|  |  | 
|  | <p>To enable the writing of tests entirely in C. The Framework has been | 
|  | designed to make creating tests or converting old ones as simple as possible, | 
|  | with a minimum of framework overhead. A sample test file, <a href="#demo.c">"demo.c"</a> | 
|  | is included at the end of this document. For more information regarding C test | 
|  | framework, please see the directory \intlwork\source\tools\ctestfw.</p> | 
|  |  | 
|  | <h4>Writing Test Functions</h4> | 
|  |  | 
|  | <p>The format of the test functions is like the following,</p> | 
|  |  | 
|  | <pre>void some_test()</pre><pre>{</pre><pre>}</pre> | 
|  |  | 
|  | <p>Output from the test is accomplished with three printf-like functions:</p> | 
|  |  | 
|  | <pre>void log_err ( const char *fmt, ... );</pre><pre>void log_info ( const char *fmt, ... );</pre><pre>void log_verbose ( const char *fmt, ... );</pre> | 
|  |  | 
|  | <p><strong>log_info() </strong>simply writes to the console, for informational | 
|  | messages.<br> | 
|  | <strong>log_verbose()</strong> writes to the console ONLY if the VEBOSE flag is | 
|  | turned on (or the -v option to the command line). It's useful for debugging. By | 
|  | default, VERBOSE flag is turned OFF.<br> | 
|  | <strong>log_error()</strong> is what should be called when a test failure is | 
|  | detected. The error will be then logged and error count will be incremented by | 
|  | one.</p> | 
|  |  | 
|  | <h4>Building a tree of tests</h4> | 
|  |  | 
|  | <p>To use the tests you must link them into a hierarchical structure. The root | 
|  | of the structure will be allocated for you.</p> | 
|  |  | 
|  | <pre>TestNode *root = NULL; /* empty */</pre><pre>addTest( &root, &some_test, "/test");</pre> | 
|  |  | 
|  | <p>The function pointer and an absolute 'path' to the test are supplied. Paths | 
|  | may be up to 127 chars in length and may be used to group tests.<br> | 
|  | <br> | 
|  | The calls to addTest should be placed in a function or a hierarchy of functions | 
|  | (perhaps mirroring the paths), please see the following demo.c example for more | 
|  | details.</p> | 
|  |  | 
|  | <h4>Running the tests</h4> | 
|  |  | 
|  | <p>A subtree may be extracted from another tree of tests for programmatic | 
|  | running of subtests</p> | 
|  |  | 
|  | <pre>TestNode* sub;</pre><pre>sub = getTest(root, "/mytests");</pre> | 
|  |  | 
|  | <p>And a tree of tests may be run simply by:</p> | 
|  |  | 
|  | <pre>runTests( root ); /* or 'sub' */</pre> | 
|  |  | 
|  | <p>Similarly, showTests() will list out the tests.<br> | 
|  | <br> | 
|  | However, it is easier to simply run at the command prompt with the Usage | 
|  | specified below.</p> | 
|  |  | 
|  | <h4>Globals</h4> | 
|  |  | 
|  | <p>The command line parser will manage resetting the error count, and printing | 
|  | a summary of the failed tests. But if you call runTest directly, for instance, | 
|  | you will need to manage these yourself.<br> | 
|  | <strong>ERROR_COUNT</strong> contains the number of times log_err was called. | 
|  | runTests resets it to zero before running the tests.<br> | 
|  | <strong>VERBOSITY</strong> should be 1 to allow log_verbose() data to be | 
|  | displayed otherwise 0 (default).</p> | 
|  |  | 
|  | <h3>Building</h3> | 
|  |  | 
|  | <p>To compile this test suite using MSVC, follow the instructions in <a | 
|  | href="../readme.html#HowToInstall">icu/source/readme.html#HowToInstall</a> for | 
|  | building the "allC" workspace. This builds the libraries as well as | 
|  | the cintltst executable.</p> | 
|  |  | 
|  | <h3>Executing</h3> | 
|  |  | 
|  | <p>To run the test suite from the command line, change directories to | 
|  | "icu/source/test/cintltst/Debug" for the debug build, (or | 
|  | "icu/source/test/cintltst/Release" for the releawse build) then type:<br> | 
|  | "cintltst".</p> | 
|  |  | 
|  | <h3>Usage</h3> | 
|  |  | 
|  | <pre>Type "cintltest -h" to see the usage:</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>### Syntax:</pre><pre>### Usage: [ -l ] [ -v ] [ -verbose] [-a] [ -all] [-n] \n [ -no_err_msg] [ -h ] [ /path/to/test ]</pre><pre>### -l To get a list of test names</pre><pre>### -all To run all the test</pre><pre>### -a To run all the test(same a -all)</pre><pre>### -verbose To turn ON verbosity</pre><pre>### -v To turn ON verbosity(same as -verbose)</pre><pre>### -h To print this message</pre><pre>### -n To turn OFF printing error messages</pre><pre>### -no_err_msg (same as -n)</pre><pre>### -[/subtest] To run a subtest</pre><pre>### For example to run just the utility tests type: cintltest /tsutil)</pre><pre>### To run just the locale test type: cintltst /tsutil/loctst</pre><pre>###<span style="mso-spacerun: yes">  </span></pre> | 
|  |  | 
|  | <p><a name=demo.c></a><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> | 
|  |  | 
|  | <h5><span style='font-size:12.0pt'>/******************** sample ctestfw test | 
|  | ********************<br> | 
|  | ********* Simply link this with libctestfw or ctestfw.dll ****<br> | 
|  | ************************* demo.c *****************************/</span></h5> | 
|  |  | 
|  | <pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>#include "stdlib.h"</pre><pre>#include "ctest.h"</pre><pre>#include "stdio.h"</pre><pre>#include "string.h"</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>/**</pre><pre>* Some sample dummy tests.</pre><pre>* the statics simply show how often the test is called.</pre><pre>*/</pre><pre>void mytest()</pre><pre>{</pre><pre><span style="mso-spacerun: yes">    </span>static i = 0;</pre><pre><span style="mso-spacerun: yes">    </span>log_info("I am a test[%d]\n", i++);</pre><pre>}</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>void mytest_err()</pre><pre>{</pre><pre><span style="mso-spacerun: yes">    </span>static i = 0;</pre><pre><span style="mso-spacerun: yes">    </span>log_err("I am a test containing an error[%d]\n", i++);</pre><pre><span style="mso-spacerun: yes">    </span>log_err("I am a test containing an error[%d]\n", i++);</pre><pre>}</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>void mytest_verbose()</pre><pre>{</pre><pre><span style="mso-spacerun: yes">    </span>/* will only show if verbose is on (-v) */</pre><pre><span style="mso-spacerun: yes">    </span>log_verbose("I am a verbose test, blabbing about nothing at all.\n");</pre><pre>}</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>/**</pre><pre>* Add your tests from this function</pre><pre>*/</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>void add_tests( TestNode** root )</pre><pre>{</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest, "/apple/bravo" );</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest, "/a/b/c/d/mytest");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest_err, "/d/e/f/h/junk");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest, "/a/b/c/d/another");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest, "/a/b/c/etest");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest_err, "/a/b/c");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest, "/bertrand/andre/damiba");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest_err, "/bertrand/andre/OJSimpson");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest, "/bertrand/andre/juice/oj");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest, "/bertrand/andre/juice/prune");</pre><pre><span style="mso-spacerun: yes">    </span>addTest(root, &mytest_verbose, "/verbose");</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>}</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>int main(int argc, const char *argv[])</pre><pre>{</pre><pre><span style="mso-spacerun: yes">    </span>TestNode *root = NULL;</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre><span style="mso-spacerun: yes">    </span>add_tests(&root); /* address of root ptr- will be filled in */</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre><span style="mso-spacerun: yes">    </span>/* Run the tests. An int is returned suitable for the OS status code.</pre><pre><span style="mso-spacerun: yes">    </span>(0 for success, neg for parameter errors, positive for the # of</pre><pre><span style="mso-spacerun: yes">    </span>failed tests) */</pre><pre><span style="mso-spacerun: yes">    </span>return processArgs( root, argc, argv );</pre><pre>}</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre> | 
|  |  | 
|  | <p><a href="../readme.html">ReadMe for </a><a href="../readme.html#API"> | 
|  | International Components for Unicode C API</a></p> | 
|  |  | 
|  |  | 
|  | <div class=MsoNormal align=center style='text-align:center'> | 
|  |  | 
|  | <hr size=2 width="100%" align=center> | 
|  |  | 
|  | </div> | 
|  |  | 
|  | </div> | 
|  |  | 
|  | </body> | 
|  |  | 
|  | </html> |