• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-2016, International Business Machines Corporation and
6  * others. All Rights Reserved.
7  ********************************************************************/
8 #ifndef _TESTMESSAGEFORMAT
9 #define _TESTMESSAGEFORMAT
10 
11 #include "unicode/utypes.h"
12 
13 #if !UCONFIG_NO_FORMATTING
14 
15 #include "unicode/unistr.h"
16 #include "unicode/fmtable.h"
17 #include "unicode/msgfmt.h"
18 #include "intltest.h"
19 
20 /**
21  * TestMessageFormat tests MessageFormat, and also a few unctions in ChoiceFormat
22  */
23 class TestMessageFormat: public IntlTest {
24 public:
25     void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
26 
27     /**
28      * regression test for a specific bug regarding ChoiceFormat boundaries
29      **/
30     void testBug1(void);
31     /**
32      * regression test for a specific bug regarding MessageFormat using ChoiceFormat
33      **/
34     void testBug2(void);
35     /**
36      * regression test for a specific bug involving NumberFormat and Locales
37      **/
38     void testBug3(void);
39     /**
40      * test MessageFormat with various given patterns
41      **/
42     void PatternTest(void);
43     /**
44      * test MesageFormat formatting functionality in a simple example
45      **/
46     void sample(void);
47 
48     /**
49     * tests the static MessageFormat::format method
50      **/
51     void testStaticFormat(/* char* par */);
52     /**
53      * tests MesageFormat functionality with a simple format
54      **/
55     void testSimpleFormat(/* char* par */);
56     /**
57      * tests MesageFormat functionality with a format including a ChoiceFormat
58      **/
59     void testMsgFormatChoice(/* char* par */);
60     /**
61      * tests MesageFormat functionality with a PluralFormat.
62      **/
63     void testMsgFormatPlural(/* char* par */);
64 
65     /**
66      * tests MessageFormat functionality with a SelectFormat.
67      **/
68     void testMsgFormatSelect(/* char* par */);
69 
70     void testApostropheInPluralAndSelect();
71 
72     /**
73      * Internal method to format a MessageFormat object with passed args
74      **/
75     void internalFormat(MessageFormat* msgFmt ,
76         Formattable* args , int32_t numOfArgs ,
77         UnicodeString expected, const char* errMsg);
78 
79     /**
80      * Internal method to create a MessageFormat object with passed args
81      **/
82     MessageFormat* internalCreate(
83         UnicodeString pattern ,Locale locale , UErrorCode& err, char* errMsg);
84 
85     /**
86      * Verify that MessageFormat accommodates more than 10 arguments
87      * and more than 10 subformats.
88      */
89     void TestUnlimitedArgsAndSubformats();
90 
91     /**
92      * Test RBNF extensions to MessageFormat.
93      */
94     void TestRBNF();
95 
96     void TestApostropheMode();
97 
98     void TestCompatibleApostrophe();
99 
100     /**
101      * ------------ API tests ----------
102      * These routines test various API functionality.
103      * In addition to the methods their name suggests,
104      * they often test other methods as well.
105      **/
106     void testCopyConstructor(void);
107     void testCopyConstructor2(void);
108     void testAssignment(void);
109     void testClone(void);
110     void testEquals(void);
111     void testNotEquals(void);
112     void testSetLocale(void);
113     void testFormat(void);
114     void testParse(void);
115     void testAdopt(void);
116     void TestTurkishCasing(void);
117     void testAutoQuoteApostrophe(void);
118     void testCoverage();
119     void testGetFormatNames();
120     void TestTrimArgumentName();
121     void TestSelectOrdinal();
122     void TestDecimals();
123     void TestArgIsPrefixOfAnother();
124     void TestMessageFormatNumberSkeleton();
125     void TestMessageFormatDateSkeleton();
126     void TestMessageFormatTimeSkeleton();
127 
128 private:
129     UnicodeString GetPatternAndSkipSyntax(const MessagePattern& pattern);
130     void doTheRealDateTimeSkeletonTesting(UDate testDate,
131         const char16_t* messagePattern, const char* localeName, const char16_t* expected,
132         IcuTestErrorCode& status);
133 };
134 
135 #endif /* #if !UCONFIG_NO_FORMATTING */
136 
137 #endif
138