| // © 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 |