150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/********************************************************************
250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * COPYRIGHT:
354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Copyright (c) 2010-2012, International Business Machines Corporation and
450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * others. All Rights Reserved.
550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ********************************************************************/
650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho//
850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho//   file:  dcfmtest.h
950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho//
1050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho//   Data driven decimal formatter test.
1150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho//      Includes testing of both parsing and formatting.
1250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho//      Tests are in the text file dcfmtest.txt, in the source/test/testdata/ directory.
1350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho//
1450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
1550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#ifndef DCFMTEST_H
1650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define DCFMTEST_H
1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/utypes.h"
1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_REGULAR_EXPRESSIONS
2050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "intltest.h"
2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
2350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
2450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoclass DecimalFormatTest: public IntlTest {
2550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic:
2650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
2750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    DecimalFormatTest();
2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual ~DecimalFormatTest();
2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
3050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL );
3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    // The following are test functions that are visible from the intltest test framework.
3350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual void DataDrivenTests();
3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    // The following functions are internal to the decimal format tests.
3650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual UChar *ReadAndConvertFile(const char *fileName, int32_t &len, UErrorCode &status);
3750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual const char *getPath(char buffer[2048], const char *filename);
3850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual void execParseTest(int32_t lineNum,
3950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                              const UnicodeString &inputText,
4050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                              const UnicodeString &expectedType,
4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                              const UnicodeString &expectedDecimal,
4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                              UErrorCode &status);
4350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
4454dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusprivate:
4554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    enum EFormatInputType {
4654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        kFormattable,
4754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        kStringPiece
4854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    };
4954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
5054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliuspublic:
5150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual void execFormatTest(int32_t lineNum,
5250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                               const UnicodeString &pattern,
5350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                               const UnicodeString &round,
5450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                               const UnicodeString &input,
5550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                               const UnicodeString &expected,
5654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius                               EFormatInputType inType,
5750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                               UErrorCode &status);
5850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho};
5950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
6050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif   // !UCONFIG_NO_REGULAR_EXPRESSIONS
6150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif
62