#ifndef __CONVTEST_H__
#define __CONVTEST_H__
#include "unicode/utypes.h"
#if !UCONFIG_NO_LEGACY_CONVERSION
#include "unicode/ucnv.h"
#include "intltest.h"
struct ConversionCase {
int32_t caseNr;
const char *charset, *cbopt, *name;
UChar subString[16];
char subchar[8];
int8_t setSub;
const uint8_t *bytes;
int32_t bytesLength;
const UChar *unicode;
int32_t unicodeLength;
const int32_t *offsets;
const char *utf8;
int32_t utf8Length;
UBool finalFlush;
UBool fallbacks;
UErrorCode outErrorCode;
const uint8_t *invalidChars;
const UChar *invalidUChars;
int32_t invalidLength;
uint8_t resultBytes[200];
UChar resultUnicode[200];
int32_t resultOffsets[200];
int32_t resultLength;
UErrorCode resultErrorCode;
};
class ConversionTest : public IntlTest {
public:
ConversionTest();
virtual ~ConversionTest();
void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
void TestToUnicode();
void TestFromUnicode();
void TestGetUnicodeSet();
void TestGetUnicodeSet2();
void TestDefaultIgnorableCallback();
private:
UBool
ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback, const char *option);
UBool
FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback callback, const char *option);
UBool
checkToUnicode(ConversionCase &cc, UConverter *cnv, const char *name,
const UChar *result, int32_t resultLength,
const int32_t *resultOffsets,
UErrorCode resultErrorCode);
UBool
checkFromUnicode(ConversionCase &cc, UConverter *cnv, const char *name,
const uint8_t *result, int32_t resultLength,
const int32_t *resultOffsets,
UErrorCode resultErrorCode);
UConverter *
cnv_open(const char *name, UErrorCode &errorCode);
UConverter *utf8Cnv;
};
#endif
#endif