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-2013, International Business Machines Corporation and 6 * others. All Rights Reserved. 7 ********************************************************************/ 8 9 #ifndef _PluralRulesTest 10 #define _PluralRulesTest 11 12 #include "unicode/utypes.h" 13 14 #if !UCONFIG_NO_FORMATTING 15 16 #include "intltest.h" 17 #include "unicode/localpointer.h" 18 #include "unicode/plurrule.h" 19 20 /** 21 * Test basic functionality of various API functions 22 **/ 23 class PluralRulesTest : public IntlTest { 24 void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); 25 26 private: 27 /** 28 * Performs tests on many API functions, see detailed comments in source code 29 **/ 30 void testAPI(); 31 void testGetUniqueKeywordValue(); 32 void testGetSamples(); 33 void testGetFixedDecimalSamples(); 34 void testSamplesWithExponent(); 35 void testSamplesWithCompactNotation(); 36 void testWithin(); 37 void testGetAllKeywordValues(); 38 void testCompactDecimalPluralKeyword(); 39 void testScientificPluralKeyword(); 40 void testOrdinal(); 41 void testSelect(); 42 void testSelectRange(); 43 void testAvailableLocales(); 44 void testParseErrors(); 45 void testFixedDecimal(); 46 void testSelectTrailingZeros(); 47 void testLocaleExtension(); 48 49 void assertRuleValue(const UnicodeString& rule, double expected); 50 void assertRuleKeyValue(const UnicodeString& rule, const UnicodeString& key, 51 double expected); 52 void checkNewSamples(UnicodeString description, 53 const LocalPointer<PluralRules> &test, 54 UnicodeString keyword, 55 UnicodeString samplesString, 56 FixedDecimal firstInRange); 57 UnicodeString getPluralKeyword(const LocalPointer<PluralRules> &rules, 58 Locale locale, double number, const char16_t* skeleton); 59 void checkSelect(const LocalPointer<PluralRules> &rules, UErrorCode &status, 60 int32_t line, const char *keyword, ...); 61 void compareLocaleResults(const char* loc1, const char* loc2, const char* loc3); 62 }; 63 64 #endif /* #if !UCONFIG_NO_FORMATTING */ 65 66 #endif 67