1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/********************************************************************
* COPYRIGHT:
* Copyright (c) 1997-2015, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
#ifndef _NUMBERFORMATROUNDTRIPTEST_
#define _NUMBERFORMATROUNDTRIPTEST_
#include "unicode/utypes.h"
#if !UCONFIG_NO_FORMATTING
#include "unicode/numfmt.h"
#include "unicode/fmtable.h"
#include "intltest.h"
/**
* Performs round-trip tests for NumberFormat
**/
class NumberFormatRoundTripTest : public IntlTest {
// IntlTest override
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
static UBool verbose;
static UBool STRING_COMPARE;
static UBool EXACT_NUMERIC_COMPARE;
static UBool DEBUG_VAR;
static double MAX_ERROR;
static double max_numeric_error;
static double min_numeric_error;
void start();
void test(NumberFormat *fmt);
void test(NumberFormat *fmt, double value);
void test(NumberFormat *fmt, int32_t value);
void test(NumberFormat *fmt, const Formattable& value);
static double randomDouble(double range);
static double proportionalError(const Formattable& a, const Formattable& b);
static UnicodeString& typeOf(const Formattable& n, UnicodeString& result);
static UnicodeString& escape(UnicodeString& s);
static inline UBool
isDouble(const Formattable& n)
{ return (n.getType() == Formattable::kDouble); }
static inline UBool
isLong(const Formattable& n)
{ return (n.getType() == Formattable::kLong); }
/*
* Return a random uint32_t
**/
static uint32_t randLong();
/**
* Return a random double 0 <= x < 1.0
**/
static double randFraction()
{
return static_cast<double>(randLong()) / static_cast<double>(0xFFFFFFFF);
}
protected:
UBool failure(UErrorCode status, const char* msg, UBool possibleDataError=false);
};
#endif /* #if !UCONFIG_NO_FORMATTING */
#endif // _NUMBERFORMATROUNDTRIPTEST_
//eof
|