1103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/* 264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert *********************************************************************** 30596faeddefbf198de137d5e893708495ab1584cFredrik Roubert * © 2016 and later: Unicode, Inc. and others. 464339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert * License & terms of use: http://www.unicode.org/copyright.html#License 564339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert *********************************************************************** 664339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert *********************************************************************** 78de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert * Copyright (c) 2011-2016,International Business Machines 8103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Corporation and others. All Rights Reserved. 964339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert *********************************************************************** 10103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 11103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include <stdio.h> 1254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include <string.h> 1354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 148de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert#include "cmemory.h" 15103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "sieve.h" 16103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/utimer.h" 17103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "udbgutil.h" 1854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/ustring.h" 19103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/decimfmt.h" 2054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/udat.h" 21fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusU_NAMESPACE_USE 2254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 2354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if U_PLATFORM_IMPLEMENTS_POSIX 2454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include <unistd.h> 2554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 2654dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic void usage(const char *prog) { 2754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "Usage: %s [ -f outfile.xml ] [ -t 'TestName' ]\n", prog); 2854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 2954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 3054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 31103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid runTests(void); 32103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifndef ITERATIONS 3454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define ITERATIONS 5 3554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 3654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 37fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#ifndef TEST_LOCALE 38fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define TEST_LOCALE "en_US" 39fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif 4054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 41103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusFILE *out = NULL; 42103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusUErrorCode setupStatus = U_ZERO_ERROR; 4354dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusconst char *outName = NULL; 4454dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusint listmode = 0; 4554dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusconst char *testName = NULL; 4654dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusconst char *progname = NULL; 4754dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusint errflg = 0; 4854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusint testhit = 0; 4954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 5054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusint testMatch(const char *aName) { 5154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(testName==NULL) return 1; 5254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int len = strlen(testName); 5354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(testName[len-1]=='*') { 5454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return strncmp(testName,aName,len-1); 5554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 5654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return strcmp(testName,aName); 5754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 5854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 59103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 6054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusint main(int argc, char * const * argv){ 61103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if U_DEBUG 62103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(stderr,"%s: warning: U_DEBUG is on.\n", argv[0]); 63103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 64103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if U_DEBUG 65103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 66103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double m; 67103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double s = uprv_getSieveTime(&m); 68103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(stderr, "** Standard sieve time: %.9fs +/- %.9fs (%d iterations)\n", s,m, (int)U_LOTS_OF_TIMES); 69103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 70103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 71103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 7254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if U_PLATFORM_IMPLEMENTS_POSIX 7354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int c; 74fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius //extern int optind; 7554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius extern char *optarg; 7654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius while((c=getopt(argc,argv,"lf:t:")) != EOF) { 7754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius switch(c) { 7854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius case 'f': 7954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius outName = optarg; 8054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius break; 8154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius case 'l': 8254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius listmode++; 8354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius break; 8454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius case 't': 8554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius testName = optarg; 8654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius break; 8754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius case '?': 8854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errflg++; 8954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 9054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(errflg) { 9154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius usage(progname); 9254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return 0; 9354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 9454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 9554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /* for ( ; optind < argc; optind++) { ... argv[optind] } */ 9654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#else 97103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(argc==2) { 9854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius outName = argv[1]; 9954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else if(argc>2) { 10054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "Err: usage: %s [ output-file.xml ]\n", argv[0]); 10154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 10254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 10354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 10454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(listmode && outName != NULL ) { 10554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "Warning: no output when list mode\n"); 10654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius outName=NULL; 10754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 10854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 10954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(outName != NULL) { 11054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 11154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 11254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius out=fopen(outName,"w"); 113103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(out==NULL) { 11454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr,"Err: can't open %s for writing.\n", outName); 115103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return 1; 11654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 11754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "# writing results to %s\n", outName); 118103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 119103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(out, "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); 120103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(out, "<tests icu=\"%s\">\n", U_ICU_VERSION); 121103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(out, "<!-- %s -->\n", U_COPYRIGHT_STRING); 12254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 12354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "# (no output)\n"); 12454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 125fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 12654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(listmode && testName!=NULL) { 12754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "ERR: no -l mode when specific test with -t\n"); 12854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius usage(progname); 129103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return 1; 130103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 131103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 13254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 133103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTests(); 134fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 135103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 136103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(out!=NULL) { 13754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifndef SKIP_INFO 138103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius udbg_writeIcuInfo(out); 13954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 140103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(out, "</tests>\n"); 141103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fclose(out); 142103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 143103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 144103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_FAILURE(setupStatus)) { 145103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(stderr, "Error in tests: %s\n", u_errorName(setupStatus)); 146103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return 1; 147103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 148fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 149103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return 0; 150103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 151103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 152103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass HowExpensiveTest { 153103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 154103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual ~HowExpensiveTest(){} 155103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 156103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius HowExpensiveTest(const char *name, const char *file, int32_t line) : fName(name), fFile(file), fLine(line) {} 157103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 158103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 159fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @return number of iterations 160103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 161103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual int32_t run() = 0; 162fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius virtual void warmup() { run(); } 163103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 16454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual const char *getName() { return fName; } 16554dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliuspublic: 166103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual int32_t runTest(double *subTime) { 167103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UTimer a,b; 168103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius utimer_getTime(&a); 169103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t iter = run(); 170103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius utimer_getTime(&b); 171103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius *subTime = utimer_getDeltaSeconds(&a,&b); 172103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return iter; 173103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 174103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 175103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual int32_t runTests(double *subTime, double *marginOfError) { 176103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius warmup(); /* warmup */ 177103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double times[ITERATIONS]; 178103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int subIterations = 0; 179103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for(int i=0;i<ITERATIONS;i++) { 180103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius subIterations = runTest(×[i]); 181103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if U_DEBUG 182103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(stderr, "trial: %d/%d = %.9fs\n", i, ITERATIONS,times[i]); 183103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fflush(stderr); 184103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 185103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 18654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius uint32_t iterations = ITERATIONS; 18754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius *subTime = uprv_getMeanTime(times,&iterations,marginOfError); 188103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return subIterations; 189103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 190103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 191103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fName; 192103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fFile; 193103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t fLine; 194103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t fIterations; 195103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 196103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 197103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid runTestOn(HowExpensiveTest &t) { 19854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(U_FAILURE(setupStatus)) return; // silently 19954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char *tn = t.getName(); 20054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(testName!=NULL && testMatch(tn)) return; // skipped. 20154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(listmode) { 20254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "%s:%d:\t%s\n", t.fFile, t.fLine, t.getName()); 20354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius testhit++; 20454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return; 20554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 20654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "%s:%d: Running: %s\n", t.fFile, t.fLine, t.getName()); 20754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius testhit++; 20854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 209103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double sieveTime = uprv_getSieveTime(NULL); 210103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double st; 211103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double me; 212fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 213103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fflush(stdout); 214103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fflush(stderr); 215103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t iter = t.runTests(&st,&me); 21654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(U_FAILURE(setupStatus)) { 21754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "Error in tests: %s\n", u_errorName(setupStatus)); 21854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return; 21954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 220103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fflush(stdout); 221103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fflush(stderr); 222fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 223103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double stn = st/sieveTime; 224103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 22554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius printf("%s\t%.9f\t%.9f +/- %.9f, @ %d iter\n", t.getName(),stn,st,me,iter); 226103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 227103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(out!=NULL) { 228103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fprintf(out, " <test name=\"%s\" standardizedTime=\"%f\" realDuration=\"%f\" marginOfError=\"%f\" iterations=\"%d\" />\n", 22954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius tn,stn,st,me,iter); 230103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fflush(out); 231103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 232103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 233103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 234103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/* ------------------- test code here --------------------- */ 235103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 236103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass SieveTest : public HowExpensiveTest { 237103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 238103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual ~SieveTest(){} 239103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius SieveTest():HowExpensiveTest("SieveTest",__FILE__,__LINE__){} 240103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual int32_t run(){return 0;} // dummy 241103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t runTest(double *subTime) { 242103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius *subTime = uprv_getSieveTime(NULL); 243103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return U_LOTS_OF_TIMES; 244103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 245103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual int32_t runTests(double *subTime, double *marginOfError) { 246103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius *subTime = uprv_getSieveTime(marginOfError); 247103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return U_LOTS_OF_TIMES; 248103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 249103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 250103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 251103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 252103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/* ------- NumParseTest ------------- */ 253103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/unum.h" 254103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/* open and close tests */ 255103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define OCName(svc,ub,testn,suffix,n) testn ## svc ## ub ## suffix ## n 256103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define OCStr(svc,ub,suffix,n) "Test_" # svc # ub # suffix # n 257103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define OCRun(svc,ub,suffix) svc ## ub ## suffix 258103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius// TODO: run away screaming 259103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define OpenCloseTest(n, svc,suffix,c,a,d) class OCName(svc,_,Test_,suffix,n) : public HowExpensiveTest { public: OCName(svc,_,Test_,suffix,n)():HowExpensiveTest(OCStr(svc,_,suffix,n),__FILE__,__LINE__) c int32_t run() { int32_t i; for(i=0;i<U_LOTS_OF_TIMES;i++){ OCRun(svc,_,close) ( OCRun(svc,_,suffix) a ); } return i; } void warmup() { OCRun(svc,_,close) ( OCRun(svc,_,suffix) a); } virtual ~ OCName(svc,_,Test_,suffix,n) () d }; 260103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define QuickTest(n,c,r,d) class n : public HowExpensiveTest { public: n():HowExpensiveTest(#n,__FILE__,__LINE__) c int32_t run() r virtual ~n () d }; 261103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 262103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass NumTest : public HowExpensiveTest { 263103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprivate: 264103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double fExpect; 265103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNumberFormat *fFmt; 266103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fPat; 267103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fString; 268103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const UChar *fStr; 269103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t fLen; 270103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fFile; 271103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int fLine; 272103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCPat; 273103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCStr; 274103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char name[100]; 275103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 276103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getName() { 277103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(name[0]==0) { 278103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius sprintf(name,"%s:p=|%s|,str=|%s|",getClassName(),fCPat,fCStr); 279103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 280103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return name; 281103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 282103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 283103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UNumberFormat* initFmt() { 284fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus); 285103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 286103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getClassName() { 287103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return "NumTest"; 288103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 289103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 290fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius NumTest(const char *pat, const char *num, double expect, const char *FILE, int LINE) 291103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius : HowExpensiveTest("(n/a)",FILE, LINE), 292103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fExpect(expect), 293103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt(0), 294103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fPat(pat, -1, US_INV), 295103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fString(num,-1,US_INV), 296103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fStr(fString.getTerminatedBuffer()), 297103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLen(u_strlen(fStr)), 298103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile(FILE), 299103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLine(LINE), 300103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCPat(pat), 301103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCStr(num) 302103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 303103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius name[0]=0; 304103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 305103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void warmup() { 306103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt = initFmt(); 307103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus)) { 308103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double trial = unum_parseDouble(fFmt,fStr,fLen, NULL, &setupStatus); 309103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus) && trial!=fExpect) { 310103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius setupStatus = U_INTERNAL_PROGRAM_ERROR; 311fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius printf("%s:%d: warmup() %s got %.8f expected %.8f\n", 312103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile,fLine,getName(),trial,fExpect); 313103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 314103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 315103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 316103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t run() { 317103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double trial=0.0; 318103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int i; 319103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for(i=0;i<U_LOTS_OF_TIMES;i++){ 320103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius trial = unum_parse(fFmt,fStr,fLen, NULL, &setupStatus); 321103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 322103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return i; 323103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 324103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual ~NumTest(){} 325103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 326103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 327103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define DO_NumTest(p,n,x) { NumTest t(p,n,x,__FILE__,__LINE__); runTestOn(t); } 328103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 329103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 330fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusclass AttrNumTest : public NumTest 331103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius{ 332103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprivate: 333103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNumberFormatAttribute fAttr; 334103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t fAttrValue; 335103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char name2[100]; 336103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 337103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getClassName() { 338103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius sprintf(name2,"AttrNumTest:%d=%d", fAttr,fAttrValue); 339103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return name2; 340103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 341103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 342fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius AttrNumTest(const char *pat, const char *num, double expect, const char *FILE, int LINE, UNumberFormatAttribute attr, int32_t newValue) 343103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius : NumTest(pat,num,expect,FILE,LINE), 344103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fAttr(attr), 345103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fAttrValue(newValue) 346103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 347103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 348103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UNumberFormat* initFmt() { 349103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNumberFormat *fmt = NumTest::initFmt(); 350103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius unum_setAttribute(fmt, fAttr,fAttrValue); 351103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return fmt; 352103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 353103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 354103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 355103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define DO_AttrNumTest(p,n,x,a,v) { AttrNumTest t(p,n,x,__FILE__,__LINE__,a,v); runTestOn(t); } 356103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 35754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 358fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusclass NOXNumTest : public NumTest 35954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius{ 36054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusprivate: 36154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UNumberFormatAttribute fAttr; 36254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t fAttrValue; 36354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius char name2[100]; 36454dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusprotected: 36554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual const char *getClassName() { 36654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius sprintf(name2,"NOXNumTest:%d=%d", fAttr,fAttrValue); 36754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return name2; 36854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 36954dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliuspublic: 370fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius NOXNumTest(const char *pat, const char *num, double expect, const char *FILE, int LINE /*, UNumberFormatAttribute attr, int32_t newValue */) 37154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius : NumTest(pat,num,expect,FILE,LINE) /* , 37254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fAttr(attr), 37354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fAttrValue(newValue) */ 37454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 37554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 37654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual UNumberFormat* initFmt() { 37754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UNumberFormat *fmt = NumTest::initFmt(); 37854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius //unum_setAttribute(fmt, fAttr,fAttrValue); 37954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return fmt; 38054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 38154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius}; 38254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 38354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define DO_NOXNumTest(p,n,x) { NOXNumTest t(p,n,x,__FILE__,__LINE__); runTestOn(t); } 38454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 385103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define DO_TripleNumTest(p,n,x) DO_AttrNumTest(p,n,x,UNUM_PARSE_ALL_INPUT,UNUM_YES) \ 386103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_AttrNumTest(p,n,x,UNUM_PARSE_ALL_INPUT,UNUM_NO) \ 387103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_AttrNumTest(p,n,x,UNUM_PARSE_ALL_INPUT,UNUM_MAYBE) 388103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 389103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 390103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass NumFmtTest : public HowExpensiveTest { 391103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprivate: 392103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius double fExpect; 393103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNumberFormat *fFmt; 394103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fPat; 395103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fString; 396103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const UChar *fStr; 397103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t fLen; 398103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fFile; 399103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int fLine; 400103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCPat; 401103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCStr; 402103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char name[100]; 403103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 404103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getName() { 405103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(name[0]==0) { 406103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius sprintf(name,"%s:p=|%s|,str=|%s|",getClassName(),fCPat,fCStr); 407103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 408103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return name; 409103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 410103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 411103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UNumberFormat* initFmt() { 412fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus); 413103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 414103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getClassName() { 415103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return "NumFmtTest"; 416103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 417103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 418fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius NumFmtTest(const char *pat, const char *num, double expect, const char *FILE, int LINE) 419103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius : HowExpensiveTest("(n/a)",FILE, LINE), 420103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fExpect(expect), 421103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt(0), 422103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fPat(pat, -1, US_INV), 423103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fString(num,-1,US_INV), 424103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fStr(fString.getTerminatedBuffer()), 425103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLen(u_strlen(fStr)), 426103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile(FILE), 427103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLine(LINE), 428103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCPat(pat), 429103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCStr(num) 430103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 431103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius name[0]=0; 432103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 433103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void warmup() { 434103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt = initFmt(); 435103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UChar buf[100]; 436103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus)) { 437103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t trial = unum_formatDouble(fFmt,fExpect, buf, 100, NULL, &setupStatus); 438fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius if(!U_SUCCESS(setupStatus) 439103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius || trial!=fLen 440103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ||trial<=0 441103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius || u_strncmp(fStr,buf,trial) ) { 442103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char strBuf[200]; 443103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius u_strToUTF8(strBuf,200,NULL,buf,trial+1,&setupStatus); 444fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius printf("%s:%d: warmup() %s got %s expected %s, err %s\n", 445103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile,fLine,getName(),strBuf,fCStr, u_errorName(setupStatus)); 446103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius setupStatus = U_INTERNAL_PROGRAM_ERROR; 447103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 448103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 449103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 450103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t run() { 451103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t trial; 452103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int i; 453103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UChar buf[100]; 454103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus)) { 455103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for(i=0;i<U_LOTS_OF_TIMES;i++){ 456103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius trial = unum_formatDouble(fFmt,fExpect, buf, 100, NULL, &setupStatus); 457103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 458103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 459103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return i; 460103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 461103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual ~NumFmtTest(){} 462103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 463103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 464103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define DO_NumFmtTest(p,n,x) { NumFmtTest t(p,n,x,__FILE__,__LINE__); runTestOn(t); } 465103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 466103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass NumFmtInt64Test : public HowExpensiveTest { 467fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliuspublic: 468fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius enum EMode { 469fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kDefault, 470fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kPattern, 471fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kApplyPattern, 472fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kGroupOff, 473fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius kApplyGroupOff 474fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius }; 475103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprivate: 476fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius EMode fMode; 477103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int64_t fExpect; 478103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNumberFormat *fFmt; 479103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fPat; 480103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fString; 481103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const UChar *fStr; 482103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t fLen; 483103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fFile; 484103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int fLine; 485103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCPat; 486103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCStr; 487103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char name[100]; 488103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 489103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getName() { 490103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(name[0]==0) { 491103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius sprintf(name,"%s:p=|%s|,str=|%s|",getClassName(),fCPat,fCStr); 492103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 493103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return name; 494103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 495103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 496103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UNumberFormat* initFmt() { 497fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius switch(fMode) { 498fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case kPattern: 499fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus); 500fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case kApplyPattern: 501fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { 502fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UNumberFormat *fmt = unum_open(UNUM_DECIMAL, NULL, -1, TEST_LOCALE, 0, &setupStatus); 503fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius unum_applyPattern(fmt, FALSE, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus); 504fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return fmt; 505fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 506fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case kGroupOff: 507fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { 508fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UNumberFormat *fmt = unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus); 509fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius unum_setAttribute(fmt, UNUM_GROUPING_USED, UNUM_NO); 510fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return fmt; 511fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 512fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case kApplyGroupOff: 513fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { 514fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UNumberFormat *fmt = unum_open(UNUM_DECIMAL, NULL, -1, TEST_LOCALE, 0, &setupStatus); 515fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius unum_applyPattern(fmt, FALSE, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus); 516fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius unum_setAttribute(fmt, UNUM_GROUPING_USED, UNUM_NO); 517fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return fmt; 518fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 519fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius default: 520fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case kDefault: 521fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return unum_open(UNUM_DEFAULT, NULL, -1, TEST_LOCALE, 0, &setupStatus); 522fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 523103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 524103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getClassName() { 525fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius switch(fMode) { 526fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case EMode::kDefault: 527fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return "NumFmtInt64Test (default)"; 528fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case EMode::kPattern: 529fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return "NumFmtInt64Test (pattern)"; 530fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case EMode::kApplyPattern: 531fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return "NumFmtInt64Test (applypattern)"; 532fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case EMode::kGroupOff: 533fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return "NumFmtInt64Test (pattern, group=off)"; 534fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius case EMode::kApplyGroupOff: 535fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return "NumFmtInt64Test (applypattern, group=off)"; 536fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius default: 537fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return "NumFmtInt64Test (? ? ?)"; 538fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 539103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 540103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 541fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius NumFmtInt64Test(const char *pat, const char *num, int64_t expect, const char *FILE, int LINE, EMode mode) 542103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius : HowExpensiveTest("(n/a)",FILE, LINE), 543fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius fMode(mode), 544103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fExpect(expect), 545103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt(0), 546103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fPat(pat, -1, US_INV), 547103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fString(num,-1,US_INV), 548103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fStr(fString.getTerminatedBuffer()), 549103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLen(u_strlen(fStr)), 550103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile(FILE), 551103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLine(LINE), 552103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCPat(pat), 553103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCStr(num) 554103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 555103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius name[0]=0; 556103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 557103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void warmup() { 558103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt = initFmt(); 559103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UChar buf[100]; 560103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus)) { 561103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t trial = unum_formatInt64(fFmt,fExpect, buf, 100, NULL, &setupStatus); 562fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius if(!U_SUCCESS(setupStatus) 563103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius || trial!=fLen 564103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ||trial<=0 565103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius || u_strncmp(fStr,buf,trial) ) { 566103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char strBuf[200]; 567103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius u_strToUTF8(strBuf,200,NULL,buf,trial+1,&setupStatus); 568fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius printf("%s:%d: warmup() %s got %s (len %d) expected %s (len %d), err %s\n", 569103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile,fLine,getName(),strBuf,trial,fCStr,fLen, u_errorName(setupStatus)); 570103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius setupStatus = U_INTERNAL_PROGRAM_ERROR; 571103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 572103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 573103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 574103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t run() { 575103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t trial; 576103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int i; 577103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UChar buf[100]; 578103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus)) { 579103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for(i=0;i<U_LOTS_OF_TIMES;i++){ 580103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius trial = unum_formatInt64(fFmt,fExpect, buf, 100, NULL, &setupStatus); 581103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 582103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 583103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return i; 584103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 585103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual ~NumFmtInt64Test(){} 586103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 587103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 588fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/** 589fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * unum_open .. with pattern, == new DecimalFormat(pattern) 590fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 591fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define DO_NumFmtInt64Test(p,n,x) { NumFmtInt64Test t(p,n,x,__FILE__,__LINE__,NumFmtInt64Test::EMode::kPattern); runTestOn(t); } 592fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/** 593fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * unum_open(UNUM_DECIMAL), then 594fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 595fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define DO_NumFmtInt64Test_apply(p,n,x) { NumFmtInt64Test t(p,n,x,__FILE__,__LINE__,NumFmtInt64Test::EMode::kApplyPattern); runTestOn(t); } 596fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 597fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define DO_NumFmtInt64Test_default(p,n,x) { NumFmtInt64Test t(p,n,x,__FILE__,__LINE__,NumFmtInt64Test::EMode::kDefault); runTestOn(t); } 598fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define DO_NumFmtInt64Test_gr0(p,n,x) { NumFmtInt64Test t(p,n,x,__FILE__,__LINE__,NumFmtInt64Test::EMode::kGroupOff); runTestOn(t); } 599fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define DO_NumFmtInt64Test_applygr0(p,n,x) { NumFmtInt64Test t(p,n,x,__FILE__,__LINE__,NumFmtInt64Test::EMode::kApplyGroupOff); runTestOn(t); } 600103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 601103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 602103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusclass NumFmtStringPieceTest : public HowExpensiveTest { 603103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprivate: 604103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const StringPiece &fExpect; 605103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNumberFormat *fFmt; 606103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fPat; 607103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString fString; 608103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const UChar *fStr; 609103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t fLen; 610103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fFile; 611103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int fLine; 612103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCPat; 613103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *fCStr; 614103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char name[100]; 615103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 616103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getName() { 617103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(name[0]==0) { 618103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius sprintf(name,"%s:p=|%s|,str=|%s|,sp=|%s|",getClassName(),fCPat,fCStr, fExpect.data()); 619103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 620103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return name; 621103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 622103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusprotected: 623103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual UNumberFormat* initFmt() { 624103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DecimalFormat *d = new DecimalFormat(setupStatus); 625103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UParseError pe; 626103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius d->applyPattern(fPat, pe, setupStatus); 627103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return (UNumberFormat*) d; 628103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 629103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual const char *getClassName() { 630103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return "NumFmtStringPieceTest"; 631103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 632103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliuspublic: 633fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius NumFmtStringPieceTest(const char *pat, const char *num, const StringPiece& expect, const char *FILE, int LINE) 634103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius : HowExpensiveTest("(n/a)",FILE, LINE), 635103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fExpect(expect), 636103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt(0), 637103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fPat(pat, -1, US_INV), 638103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fString(num,-1,US_INV), 639103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fStr(fString.getTerminatedBuffer()), 640103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLen(u_strlen(fStr)), 641103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile(FILE), 642103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLine(LINE), 643103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCPat(pat), 644103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fCStr(num) 645103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 646103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius name[0]=0; 647103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 648103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void warmup() { 649103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFmt = initFmt(); 650103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString buf; 651103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus)) { 652103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius buf.remove(); 653103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ((const DecimalFormat*)fFmt)->format(fExpect, buf, NULL, setupStatus); 654fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius if(!U_SUCCESS(setupStatus) 655103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius || fString!=buf 656103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ) { 657103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius char strBuf[200]; 658103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius u_strToUTF8(strBuf,200,NULL,buf.getTerminatedBuffer(),buf.length()+1,&setupStatus); 659fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius printf("%s:%d: warmup() %s got %s (len %d) expected %s (len %d), err %s\n", 660103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fFile,fLine,getName(),strBuf,buf.length(),fCStr,fLen, u_errorName(setupStatus)); 661103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius setupStatus = U_INTERNAL_PROGRAM_ERROR; 662103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 663103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 664103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 665fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 666103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t run() { 667fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#if U_DEBUG 668103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t trial; 669fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif 67054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int i=0; 671103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString buf; 672103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if(U_SUCCESS(setupStatus)) { 673103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for(i=0;i<U_LOTS_OF_TIMES;i++){ 674103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius buf.remove(); 675103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ((const DecimalFormat*)fFmt)->format(fExpect, buf, NULL, setupStatus); 676103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 677103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 678103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return i; 679103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 680103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual ~NumFmtStringPieceTest(){} 681103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 682103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 683103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define DO_NumFmtStringPieceTest(p,n,x) { NumFmtStringPieceTest t(p,n,x,__FILE__,__LINE__); runTestOn(t); } 684103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 685103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius// TODO: move, scope. 686103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic UChar pattern[] = { 0x23 }; // '#' 68754dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar strdot[] = { '2', '.', '0', 0 }; 68854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar strspc[] = { '2', ' ', 0 }; 68954dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar strgrp[] = {'2',',','2','2','2', 0 }; 69054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar strbeng[] = {0x09E8,0x09E8,0x09E8,0x09E8, 0 }; 691103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 692103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusUNumberFormat *NumParseTest_fmt; 693103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 694103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius// TODO: de-uglify. 695fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusQuickTest(NumParseTest,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; static UChar str[] = { 0x31 };double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,str,1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);}) 696103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 697fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusQuickTest(NumParseTestdot,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strdot,1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);}) 698fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusQuickTest(NumParseTestspc,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strspc,1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);}) 699fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusQuickTest(NumParseTestgrp,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strgrp,-1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);}) 70054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 701fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusQuickTest(NumParseTestbeng,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strbeng,-1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);}) 70254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 70354dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusUDateFormat *DateFormatTest_fmt = NULL; 70454dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusUDate sometime = 100000000.0; 70554dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusUChar onekbuf[1024]; 7068de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubertconst int32_t onekbuf_len = UPRV_LENGTHOF(onekbuf); 70754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 708fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 70954dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusQuickTest(DateFormatTestBasic, \ 71054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { \ 71154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DateFormatTest_fmt = udat_open(UDAT_DEFAULT, UDAT_DEFAULT, NULL, NULL, -1, NULL, -1, &setupStatus); \ 71254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius }, \ 71354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { \ 71454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int i; \ 71554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for(i=0;i<U_LOTS_OF_TIMES;i++) \ 71654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { \ 71754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius udat_format(DateFormatTest_fmt, sometime, onekbuf, onekbuf_len, NULL, &setupStatus); \ 71854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } \ 71954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return i; \ 72054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius }, \ 72154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { \ 72254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius udat_close(DateFormatTest_fmt); \ 72354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } \ 72454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ) 72554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 726103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 727103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusQuickTest(NullTest,{},{int j=U_LOTS_OF_TIMES;while(--j);return U_LOTS_OF_TIMES;},{}) 72854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 72954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if 0 73054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include <time.h> 73154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 73254dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusQuickTest(RandomTest,{},{timespec ts; ts.tv_sec=rand()%4; int j=U_LOTS_OF_TIMES;while(--j) { ts.tv_nsec=100000+(rand()%10000)*1000000; nanosleep(&ts,NULL); return j;} return U_LOTS_OF_TIMES;},{}) 73354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 73454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 735fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusOpenCloseTest(pattern,unum,open,{},(UNUM_PATTERN_DECIMAL,pattern,1,TEST_LOCALE,0,&setupStatus),{}) 736fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusOpenCloseTest(default,unum,open,{},(UNUM_DEFAULT,NULL,-1,TEST_LOCALE,0,&setupStatus),{}) 73754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if !UCONFIG_NO_CONVERSION 738103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/ucnv.h" 739103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusOpenCloseTest(gb18030,ucnv,open,{},("gb18030",&setupStatus),{}) 74054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 741103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/ures.h" 742103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusOpenCloseTest(root,ures,open,{},(NULL,"root",&setupStatus),{}) 743103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 744103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid runTests() { 745103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 746103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius SieveTest t; 747103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTestOn(t); 748103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 74954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if 0 75054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 75154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius RandomTest t; 75254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius runTestOn(t); 75354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 75454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 755103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 756103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius NullTest t; 757103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTestOn(t); 758103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 75954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 76054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifndef SKIP_DATEFMT_TESTS 761103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 76254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DateFormatTestBasic t; 763103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTestOn(t); 764103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 765103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 766103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 76754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifndef SKIP_NUMPARSE_TESTS 76854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 76954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // parse tests 77054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 77154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("#","0",0.0); 77254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("#","2.0",2.0); 77354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("#","2 ",2); 77454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("#","-2 ",-2); 77554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("+#","+2",2); 77654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("#,###.0","2222.0",2222.0); 77754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("#.0","1.000000000000000000000000000000000000000000000000000000000000000000000000000000",1.0); 77854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_NumTest("#","123456",123456); 77954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 78054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // attr 78154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifdef HAVE_UNUM_MAYBE 78254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_AttrNumTest("#","0",0.0,UNUM_PARSE_ALL_INPUT,UNUM_YES); 78354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_AttrNumTest("#","0",0.0,UNUM_PARSE_ALL_INPUT,UNUM_NO); 78454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_AttrNumTest("#","0",0.0,UNUM_PARSE_ALL_INPUT,UNUM_MAYBE); 78554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_TripleNumTest("#","2.0",2.0); 78654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DO_AttrNumTest("#.0","1.000000000000000000000000000000000000000000000000000000000000000000000000000000",1.0,UNUM_PARSE_ALL_INPUT,UNUM_NO); 78754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 78854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 78954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 79054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // { NumParseTestgrp t; runTestOn(t); } 79154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { NumParseTestbeng t; runTestOn(t); } 79254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 79354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 79454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 795103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 796103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef SKIP_NUMFORMAT_TESTS 797103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // format tests 798fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { 799fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 800103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("0000","0001",1); 801103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("0000","0000",0); 802103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius StringPiece sp3456("3456"); 803103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("0000","3456",sp3456); 804103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("#","3456",sp3456); 805103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius StringPiece sp3("3"); 806103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("0000","0003",sp3); 807103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("#","3",sp3); 808103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius StringPiece spn3("-3"); 809103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("0000","-0003",spn3); 810103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("#","-3",spn3); 811103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius StringPiece spPI("123.456"); 812103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("#.0000","123.4560",spPI); 813103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtStringPieceTest("#.00","123.46",spPI); 814fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 815103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtTest("#","0",0.0); 816103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtTest("#","12345",12345); 817103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtTest("#","-2",-2); 818103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtTest("+#","+2",2); 819fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 820103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("#","-682",-682); 821103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("#","0",0); 822103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("#","12345",12345); 823fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test("#,###","12,345",12345); 824103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("#","1234",1234); 825103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("#","123",123); 826fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test("#,###","123",123); 827fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_apply("#","123",123); 828fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_apply("#","12345",12345); 829fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_apply("#,###","123",123); 830fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_apply("#,###","12,345",12345); 831fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_default("","123",123); 832fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_default("","12,345",12345); 833fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_applygr0("#","123",123); 834fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_applygr0("#","12345",12345); 835fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_applygr0("#,###","123",123); 836fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_applygr0("#,###","12345",12345); 837fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_gr0("#","123",123); 838fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_gr0("#","12345",12345); 839fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_gr0("#,###","123",123); 840fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DO_NumFmtInt64Test_gr0("#,###","12345",12345); 841103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("#","-2",-2); 842103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DO_NumFmtInt64Test("+#","+2",2); 843103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 844103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 84554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifndef SKIP_NUM_OPEN_TEST 846103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 847103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Test_unum_opendefault t; 848103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTestOn(t); 849103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 850103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 85154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius Test_unum_openpattern t; 852103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTestOn(t); 853103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 85454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 85554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 85654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif /* skip numformat tests */ 85754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if !UCONFIG_NO_CONVERSION 858103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 85954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius Test_ucnv_opengb18030 t; 860103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTestOn(t); 861103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 86254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif 863103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 864103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Test_ures_openroot t; 865103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius runTestOn(t); 866103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 86754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 86854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(testhit==0) { 86954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "ERROR: no tests matched.\n"); 87054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 871103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 872