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