]> git.saurik.com Git - apple/icu.git/blame - icuSources/test/intltest/testidna.h
ICU-400.42.tar.gz
[apple/icu.git] / icuSources / test / intltest / testidna.h
CommitLineData
b75a7d8f
A
1/*
2 *******************************************************************************
3 *
46f4442e 4 * Copyright (C) 2003-2006, International Business Machines
b75a7d8f
A
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
b75a7d8f
A
24#include "intltest.h"
25#include "unicode/parseerr.h"
374ca955 26#include "unicode/uidna.h"
b75a7d8f
A
27
28U_CDECL_BEGIN
29typedef int32_t
374ca955 30(U_EXPORT2 *TestFunc) ( const UChar *src, int32_t srcLength,
b75a7d8f
A
31 UChar *dest, int32_t destCapacity,
32 int32_t options, UParseError *parseError,
33 UErrorCode *status);
34typedef int32_t
374ca955 35(U_EXPORT2 *CompareFunc) (const UChar *s1, int32_t s1Len,
b75a7d8f
A
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);
374ca955
A
68 static NamePrepTransform* gPrep;
69 virtual ~TestIDNA();
70
b75a7d8f
A
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);
374ca955 79 void debug(const UChar* src, int32_t srcLength, int32_t options);
b75a7d8f
A
80 // main testing functions
81 void testAPI(const UChar *src, const UChar *expected, const char *testName,
82 UBool useSTD3ASCIIRules, UErrorCode expectedStatus,
374ca955 83 UBool doCompare, UBool testUnassigned, TestFunc func, UBool testSTD3ASCIIRules=TRUE);
b75a7d8f
A
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
374ca955 90 void testErrorCases(const char* IDNToASCIIName, TestFunc IDNToASCII,
b75a7d8f
A
91 const char* IDNToUnicodeName, TestFunc IDNToUnicode);
92
46f4442e 93 void testChaining(const UChar* src,int32_t numIterations,const char* testName,
b75a7d8f
A
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);
374ca955
A
101
102 UnicodeString testCompareReferenceImpl(UnicodeString& src,
103 TestFunc refIDNA, const char* refIDNAName,
104 TestFunc uIDNA, const char* uIDNAName,
105 int32_t options);
b75a7d8f
A
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