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