]> git.saurik.com Git - apple/icu.git/blob - icuSources/test/intltest/tsnmfmt.h
ICU-64252.0.1.tar.gz
[apple/icu.git] / icuSources / test / intltest / tsnmfmt.h
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /********************************************************************
4 * COPYRIGHT:
5 * Copyright (c) 1997-2003, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 ********************************************************************/
8
9 #ifndef _INTLTESTNUMBERFORMAT
10 #define _INTLTESTNUMBERFORMAT
11
12
13 #include "unicode/utypes.h"
14
15 #if !UCONFIG_NO_FORMATTING
16
17 #include "unicode/numfmt.h"
18 #include "unicode/locid.h"
19 #include "intltest.h"
20
21
22 /**
23 * This test does round-trip testing (format -> parse -> format -> parse -> etc.) of
24 * NumberFormat.
25 */
26 class IntlTestNumberFormat: public IntlTest {
27 void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
28
29 private:
30
31 /**
32 * call tryIt with many variations, called by testLocale
33 **/
34 void testFormat(/* char* par */);
35 /**
36 * perform tests using aNumber and fFormat, called in many variations
37 **/
38 void tryIt(double aNumber);
39 /**
40 * perform tests using aNumber and fFormat, called in many variations
41 **/
42 void tryIt(int32_t aNumber);
43 /**
44 * test NumberFormat::getAvailableLocales
45 **/
46 void testAvailableLocales(/* char* par */);
47 /**
48 * call testLocale for all locales
49 **/
50 void monsterTest(/* char *par */);
51 /**
52 * call testFormat for currency, percent and plain number instances
53 **/
54 void testLocale(/* char *par, */const Locale& locale, const UnicodeString& localeName);
55
56 NumberFormat* fFormat;
57 UErrorCode fStatus;
58 Locale fLocale;
59
60 public:
61
62 virtual ~IntlTestNumberFormat();
63
64 /*
65 * Return a random double that isn't too large.
66 */
67 static double getSafeDouble(double smallerThanMax);
68
69 /*
70 * Return a random double
71 **/
72 static double randDouble();
73
74 /*
75 * Return a random uint32_t
76 **/
77 static uint32_t randLong();
78
79 /**
80 * Return a random double 0 <= x < 1.0
81 **/
82 static double randFraction()
83 {
84 return (double)randLong() / (double)0xFFFFFFFF;
85 }
86
87 };
88
89 #endif /* #if !UCONFIG_NO_FORMATTING */
90
91 #endif