1 /*
2  *******************************************************************************
3  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
4  * others. All Rights Reserved.                                                *
5  *******************************************************************************
6  */
7 
8 #ifndef ITRBNF_H
9 #define ITRBNF_H
10 
11 #include "unicode/utypes.h"
12 
13 #if !UCONFIG_NO_FORMATTING
14 
15 #include "intltest.h"
16 #include "unicode/rbnf.h"
17 
18 
19 class IntlTestRBNF : public IntlTest {
20  public:
21 
22   // IntlTest override
23   virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par);
24 
25 #if U_HAVE_RBNF
26   /**
27    * Perform an API test
28    */
29   virtual void TestAPI();
30 
31   void TestMultiplePluralRules();
32 
33   /**
34    * Perform a simple spot check on the FractionalRuleSet logic
35    */
36   virtual void TestFractionalRuleSet();
37 
38 #if 0
39   /**
40    * Perform API tests on llong
41    */
42   virtual void TestLLong();
43   virtual void TestLLongConstructors();
44   virtual void TestLLongSimpleOperators();
45 #endif
46 
47   /**
48    * Perform a simple spot check on the English spellout rules
49    */
50   virtual void TestEnglishSpellout();
51 
52   /**
53    * Perform a simple spot check on the English ordinal-abbreviation rules
54    */
55   virtual void TestOrdinalAbbreviations();
56 
57   /**
58    * Perform a simple spot check on the duration-formatting rules
59    */
60   virtual void TestDurations();
61 
62   /**
63    * Perform a simple spot check on the Spanish spellout rules
64    */
65   virtual void TestSpanishSpellout();
66 
67   /**
68    * Perform a simple spot check on the French spellout rules
69    */
70   virtual void TestFrenchSpellout();
71 
72   /**
73    * Perform a simple spot check on the Swiss French spellout rules
74    */
75   virtual void TestSwissFrenchSpellout();
76 
77   /**
78    * Check that Belgian French matches Swiss French spellout rules
79    */
80   virtual void TestBelgianFrenchSpellout();
81 
82   /**
83    * Perform a simple spot check on the Italian spellout rules
84    */
85   virtual void TestItalianSpellout();
86 
87   /**
88    * Perform a simple spot check on the Portuguese spellout rules
89    */
90   virtual void TestPortugueseSpellout();
91 
92   /**
93    * Perform a simple spot check on the German spellout rules
94    */
95   virtual void TestGermanSpellout();
96 
97   /**
98    * Perform a simple spot check on the Thai spellout rules
99    */
100   virtual void TestThaiSpellout();
101 
102   /**
103    * Perform a simple spot check on the Swedish spellout rules
104    */
105   virtual void TestSwedishSpellout();
106 
107   /**
108    * Perform a simple spot check on small values
109    */
110   virtual void TestSmallValues();
111 
112   /**
113    * Test localizations using string data.
114    */
115   virtual void TestLocalizations();
116 
117   /**
118    * Test that all locales construct ok.
119    */
120   virtual void TestAllLocales();
121 
122   /**
123    * Test that hebrew fractions format without trailing '<'
124    */
125   virtual void TestHebrewFraction();
126 
127   /**
128    * Regression test, don't truncate
129    * when doing multiplier substitution to a number format rule.
130    */
131   virtual void TestMultiplierSubstitution();
132 
133   /**
134    * Test the setDecimalFormatSymbols in RBNF
135    */
136   virtual void TestSetDecimalFormatSymbols();
137 
138   /**
139    * Test the plural rules in RBNF
140    */
141   virtual void TestPluralRules();
142 
143  protected:
144   virtual void doTest(RuleBasedNumberFormat* formatter, const char* const testData[][2], UBool testParsing);
145   virtual void doLenientParseTest(RuleBasedNumberFormat* formatter, const char* testData[][2]);
146 
147 /* U_HAVE_RBNF */
148 #else
149 
150   virtual void TestRBNFDisabled();
151 
152 /* U_HAVE_RBNF */
153 #endif
154 };
155 
156 #endif /* #if !UCONFIG_NO_FORMATTING */
157 
158 // endif ITRBNF_H
159 #endif
160