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