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