1 // © 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /* 4 ******************************************************************************* 5 * 6 * Copyright (C) 2003-2006, International Business Machines 7 * Corporation and others. All Rights Reserved. 8 * 9 ******************************************************************************* 10 * file name: testidna.h 11 * encoding: UTF-8 12 * tab size: 8 (not used) 13 * indentation:4 14 * 15 * created on: 2003feb1 16 * created by: Ram Viswanadha 17 */ 18 19 #ifndef TESTIDNA_H 20 #define TESTIDNA_H 21 22 #include "unicode/utypes.h" 23 24 #if !UCONFIG_NO_IDNA && !UCONFIG_NO_TRANSLITERATION 25 26 #include "intltest.h" 27 #include "unicode/parseerr.h" 28 #include "unicode/uidna.h" 29 30 U_CDECL_BEGIN 31 typedef int32_t 32 (U_EXPORT2 *TestFunc) ( const UChar *src, int32_t srcLength, 33 UChar *dest, int32_t destCapacity, 34 int32_t options, UParseError *parseError, 35 UErrorCode *status); 36 typedef int32_t 37 (U_EXPORT2 *CompareFunc) (const UChar *s1, int32_t s1Len, 38 const UChar *s2, int32_t s2Len, 39 int32_t options, 40 UErrorCode *status); 41 42 43 U_CDECL_END 44 45 // test the API 46 47 class NamePrepTransform; 48 49 /** 50 * @test 51 * @summary General test of HexadecimalToUnicodeTransliterator 52 */ 53 class TestIDNA : public IntlTest { 54 public: 55 void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL); 56 void TestDataFile(); 57 void TestToASCII(); 58 void TestToUnicode(); 59 void TestIDNToUnicode(); 60 void TestIDNToASCII(); 61 void TestCompare(); 62 void TestErrorCases(); 63 void TestChaining(); 64 void TestRootLabelSeparator(); 65 void TestCompareReferenceImpl(); 66 void TestRefIDNA(); 67 void TestIDNAMonkeyTest(); 68 void TestConformance(); 69 static NamePrepTransform* getInstance(UErrorCode& status); 70 static NamePrepTransform* gPrep; 71 virtual ~TestIDNA(); 72 73 private: 74 void testToASCII(const char* testName, TestFunc func); 75 void testToUnicode(const char* testName, TestFunc func); 76 void testIDNToUnicode(const char* testName, TestFunc func); 77 void testIDNToASCII(const char* testName, TestFunc func); 78 void testCompare(const char* testName, CompareFunc func); 79 void testChaining(const char* toASCIIName, TestFunc toASCII, 80 const char* toUnicodeName, TestFunc toUnicode); 81 void debug(const UChar* src, int32_t srcLength, int32_t options); 82 // main testing functions 83 void testAPI(const UChar *src, const UChar *expected, const char *testName, 84 UBool useSTD3ASCIIRules, UErrorCode expectedStatus, 85 UBool doCompare, UBool testUnassigned, TestFunc func, UBool testSTD3ASCIIRules=TRUE); 86 87 void testCompare(const UChar* s1, int32_t s1Len, 88 const UChar* s2, int32_t s2Len, 89 const char* testName, CompareFunc func, 90 UBool isEqual); 91 92 void testErrorCases(const char* IDNToASCIIName, TestFunc IDNToASCII, 93 const char* IDNToUnicodeName, TestFunc IDNToUnicode); 94 95 void testChaining(const UChar* src,int32_t numIterations,const char* testName, 96 UBool useSTD3ASCIIRules, UBool caseInsensitive, TestFunc func); 97 98 void testRootLabelSeparator(const char* testName, CompareFunc func, 99 const char* IDNToASCIIName, TestFunc IDNToASCII, 100 const char* IDNToUnicodeName, TestFunc IDNToUnicode); 101 102 void testCompareReferenceImpl(const UChar* src, int32_t srcLen); 103 104 UnicodeString testCompareReferenceImpl(UnicodeString& src, 105 TestFunc refIDNA, const char* refIDNAName, 106 TestFunc uIDNA, const char* uIDNAName, 107 int32_t options); 108 109 void testConformance(const char* toASCIIName, TestFunc toASCII, 110 const char* IDNToASCIIName, TestFunc IDNToASCII, 111 const char* IDNToUnicodeName, TestFunc IDNToUnicode, 112 const char* toUnicodeName, TestFunc toUnicode 113 ); 114 115 }; 116 117 // test the TRIE data structure 118 int testData(TestIDNA& test); 119 120 #endif /* #if !UCONFIG_NO_IDNA */ 121 122 #endif 123