// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ******************************************************************************* * * Copyright (C) 2003-2006, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* * file name: testidna.h * encoding: UTF-8 * tab size: 8 (not used) * indentation:4 * * created on: 2003feb1 * created by: Ram Viswanadha */ #ifndef TESTIDNA_H #define TESTIDNA_H #include "unicode/utypes.h" #if !UCONFIG_NO_IDNA && !UCONFIG_NO_TRANSLITERATION #include "intltest.h" #include "unicode/parseerr.h" #include "unicode/uidna.h" U_CDECL_BEGIN typedef int32_t (U_EXPORT2 *TestFunc) ( const UChar *src, int32_t srcLength, UChar *dest, int32_t destCapacity, int32_t options, UParseError *parseError, UErrorCode *status); typedef int32_t (U_EXPORT2 *CompareFunc) (const UChar *s1, int32_t s1Len, const UChar *s2, int32_t s2Len, int32_t options, UErrorCode *status); U_CDECL_END // test the API class NamePrepTransform; /** * @test * @summary General test of HexadecimalToUnicodeTransliterator */ class TestIDNA : public IntlTest { public: void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL); void TestDataFile(); void TestToASCII(); void TestToUnicode(); void TestIDNToUnicode(); void TestIDNToASCII(); void TestCompare(); void TestErrorCases(); void TestChaining(); void TestRootLabelSeparator(); void TestCompareReferenceImpl(); void TestRefIDNA(); void TestIDNAMonkeyTest(); void TestConformance(); NamePrepTransform* getInstance(UErrorCode& status); NamePrepTransform* gPrep; TestIDNA() : gPrep(nullptr) {} virtual ~TestIDNA(); private: void testToASCII(const char* testName, TestFunc func); void testToUnicode(const char* testName, TestFunc func); void testIDNToUnicode(const char* testName, TestFunc func); void testIDNToASCII(const char* testName, TestFunc func); void testCompare(const char* testName, CompareFunc func); void testChaining(const char* toASCIIName, TestFunc toASCII, const char* toUnicodeName, TestFunc toUnicode); void debug(const UChar* src, int32_t srcLength, int32_t options); // main testing functions void testAPI(const UChar *src, const UChar *expected, const char *testName, UBool useSTD3ASCIIRules, UErrorCode expectedStatus, UBool doCompare, UBool testUnassigned, TestFunc func, UBool testSTD3ASCIIRules=TRUE); void testCompare(const UChar* s1, int32_t s1Len, const UChar* s2, int32_t s2Len, const char* testName, CompareFunc func, UBool isEqual); void testErrorCases(const char* IDNToASCIIName, TestFunc IDNToASCII, const char* IDNToUnicodeName, TestFunc IDNToUnicode); void testChaining(const UChar* src,int32_t numIterations,const char* testName, UBool useSTD3ASCIIRules, UBool caseInsensitive, TestFunc func); void testRootLabelSeparator(const char* testName, CompareFunc func, const char* IDNToASCIIName, TestFunc IDNToASCII, const char* IDNToUnicodeName, TestFunc IDNToUnicode); void testCompareReferenceImpl(const UChar* src, int32_t srcLen); UnicodeString testCompareReferenceImpl(UnicodeString& src, TestFunc refIDNA, const char* refIDNAName, TestFunc uIDNA, const char* uIDNAName, int32_t options); void testConformance(const char* toASCIIName, TestFunc toASCII, const char* IDNToASCIIName, TestFunc IDNToASCII, const char* IDNToUnicodeName, TestFunc IDNToUnicode, const char* toUnicodeName, TestFunc toUnicode ); }; // test the TRIE data structure int testData(TestIDNA& test); #endif /* #if !UCONFIG_NO_IDNA */ #endif