Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: source/test/intltest/datadrivennumberformattestsuite.h

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /************************************************************************
2 * COPYRIGHT:
3 * Copyright (c) 2015, International Business Machines Corporation
4 * and others. All Rights Reserved.
5 ************************************************************************/
6
7 #ifndef _DATADRIVENNUMBERFORMATTESTSUITE_H__
8 #define _DATADRIVENNUMBERFORMATTESTSUITE_H__
9
10 #include "unicode/utypes.h"
11
12 #if !UCONFIG_NO_FORMATTING
13
14 #include "unicode/uobject.h"
15 #include "unicode/unistr.h"
16 #include "numberformattesttuple.h"
17 #include "intltest.h"
18
19 struct UCHARBUF;
20 class IntlTest;
21
22 /**
23 * Performs various in-depth test on NumberFormat
24 **/
25 class DataDrivenNumberFormatTestSuite : public IntlTest {
26
27 public:
28 DataDrivenNumberFormatTestSuite() {
29 for (int32_t i = 0; i < UPRV_LENGTHOF(fPreviousFormatters); ++i) {
30 fPreviousFormatters[i] = NULL;
31 }
32 }
33
34 /**
35 * Runs the data driven test suite.
36 *
37 * @param fileName is the name of the file in the source/test/testdata.
38 * This should be just a filename such as "numberformattest.txt"
39 * @param runAllTests If TRUE, runs every test in fileName. if FALSE,
40 * skips the tests that are known to break for ICU4C.
41 */
42 void run(const char *fileName, UBool runAllTests);
43 virtual ~DataDrivenNumberFormatTestSuite();
44 protected:
45 /**
46 * Subclasses override this method to test formatting numbers.
47 * Subclasses must not override both isFormatPass methods.
48 * @param tuple the test data for current test. The format method can
49 * assume that the format and output fields are populated.
50 * @param appendErrorMessage any message describing failures appended
51 * here.
52 * @param status any error returned here.
53 * @return TRUE if test passed or FALSE if test failed.
54 */
55 virtual UBool isFormatPass(
56 const NumberFormatTestTuple &tuple,
57 UnicodeString &appendErrorMessage,
58 UErrorCode &status);
59
60
61 /**
62 * Subclasses override this method to test formatting numbers.
63 * Along with copy and assignment operators.
64 * @param tuple the test data for current test. The format method can
65 * assume that the format and output fields are populated.
66 * @param somePreviousFormatter A pointer to a previous formatter
67 * that the test framework owns. This formatter changes as tests
68 * are run. Subclasses should initialize a formatter and assign
69 * the newly initialized formatter to this formatter. In this way,
70 * assignment gets tested with multiple previous states.
71 * @param appendErrorMessage any message describing failures appended
72 * here.
73 * @param status any error returned here.
74 * @return TRUE if test passed or FALSE if test failed.
75 */
76 virtual UBool isFormatPass(
77 const NumberFormatTestTuple &tuple,
78 UObject *somePreviousFormatter,
79 UnicodeString &appendErrorMessage,
80 UErrorCode &status);
81 /**
82 * If subclass is testing formatting with copy and assignmet, it
83 * needs to override this method to return a newly allocated formatter.
84 */
85 virtual UObject *newFormatter(UErrorCode &status);
86
87 /**
88 * Tests toPattern method.
89 */
90 virtual UBool isToPatternPass(
91 const NumberFormatTestTuple &tuple,
92 UnicodeString &appendErrorMessage,
93 UErrorCode &status);
94 /**
95 * Test parsing.
96 */
97 virtual UBool isParsePass(
98 const NumberFormatTestTuple &tuple,
99 UnicodeString &appendErrorMessage,
100 UErrorCode &status);
101
102 /**
103 * Test parsing with currency.
104 */
105 virtual UBool isParseCurrencyPass(
106 const NumberFormatTestTuple &tuple,
107 UnicodeString &appendErrorMessage,
108 UErrorCode &status);
109
110 /**
111 * Test plural selection.
112 */
113 virtual UBool isSelectPass(
114 const NumberFormatTestTuple &tuple,
115 UnicodeString &appendErrorMessage,
116 UErrorCode &status);
117 private:
118 UnicodeString fFileLine;
119 int32_t fFileLineNumber;
120 UnicodeString fFileTestName;
121 NumberFormatTestTuple fTuple;
122 int32_t fFormatTestNumber;
123 UObject *fPreviousFormatters[13];
124
125 void setTupleField(UErrorCode &);
126 int32_t splitBy(
127 UnicodeString *columnValues,
128 int32_t columnValueCount,
129 UChar delimiter);
130 void showError(const char *message);
131 void showFailure(const UnicodeString &message);
132 void showLineInfo();
133 UBool breaksC();
134 UBool readLine(UCHARBUF *f, UErrorCode &);
135 UBool isPass(
136 const NumberFormatTestTuple &tuple,
137 UnicodeString &appendErrorMessage,
138 UErrorCode &status);
139 };
140 #endif /* !UCONFIG_NO_FORMATTING */
141 #endif // _DATADRIVENNUMBERFORMATTESTSUITE_
OLDNEW
« no previous file with comments | « source/test/intltest/csdetest.cpp ('k') | source/test/intltest/datadrivennumberformattestsuite.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698