| Index: icu46/source/test/intltest/normconf.h
|
| ===================================================================
|
| --- icu46/source/test/intltest/normconf.h (revision 0)
|
| +++ icu46/source/test/intltest/normconf.h (revision 0)
|
| @@ -0,0 +1,105 @@
|
| +/*
|
| +************************************************************************
|
| +* Copyright (c) 1997-2003, International Business Machines
|
| +* Corporation and others. All Rights Reserved.
|
| +************************************************************************
|
| +*/
|
| +
|
| +#ifndef _NORMCONF
|
| +#define _NORMCONF
|
| +
|
| +#include "unicode/utypes.h"
|
| +
|
| +#if !UCONFIG_NO_NORMALIZATION
|
| +
|
| +#include "unicode/normlzr.h"
|
| +#include "intltest.h"
|
| +
|
| +typedef struct _FileStream FileStream;
|
| +
|
| +class NormalizerConformanceTest : public IntlTest {
|
| + Normalizer normalizer;
|
| +
|
| + public:
|
| + NormalizerConformanceTest();
|
| + virtual ~NormalizerConformanceTest();
|
| +
|
| + void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL);
|
| +
|
| + /**
|
| + * Test the conformance of Normalizer to
|
| + * http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
|
| + */
|
| + void TestConformance();
|
| + void TestConformance32();
|
| + void TestConformance(FileStream *input, int32_t options);
|
| +
|
| + // Specific tests for debugging. These are generally failures taken from
|
| + // the conformance file, but culled out to make debugging easier.
|
| + void TestCase6(void);
|
| +
|
| + private:
|
| + FileStream *openNormalizationTestFile(const char *filename);
|
| +
|
| + /**
|
| + * Verify the conformance of the given line of the Unicode
|
| + * normalization (UTR 15) test suite file. For each line,
|
| + * there are five columns, corresponding to field[0]..field[4].
|
| + *
|
| + * The following invariants must be true for all conformant implementations
|
| + * c2 == NFC(c1) == NFC(c2) == NFC(c3)
|
| + * c3 == NFD(c1) == NFD(c2) == NFD(c3)
|
| + * c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
|
| + * c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
|
| + *
|
| + * @param field the 5 columns
|
| + * @param line the source line from the test suite file
|
| + * @return true if the test passes
|
| + */
|
| + UBool checkConformance(const UnicodeString* field,
|
| + const char *line,
|
| + int32_t options,
|
| + UErrorCode &status);
|
| +
|
| + void iterativeNorm(const UnicodeString& str,
|
| + UNormalizationMode mode, int32_t options,
|
| + UnicodeString& result,
|
| + int8_t dir);
|
| +
|
| + /**
|
| + * @param op name of normalization form, e.g., "KC"
|
| + * @param s string being normalized
|
| + * @param got value received
|
| + * @param exp expected value
|
| + * @param msg description of this test
|
| + * @param return true if got == exp
|
| + */
|
| + UBool assertEqual(const char *op,
|
| + const UnicodeString& s,
|
| + const UnicodeString& got,
|
| + const UnicodeString& exp,
|
| + const char *msg,
|
| + int32_t field);
|
| +
|
| + /**
|
| + * Split a string into pieces based on the given delimiter
|
| + * character. Then, parse the resultant fields from hex into
|
| + * characters. That is, "0040 0400;0C00;0899" -> new String[] {
|
| + * "\u0040\u0400", "\u0C00", "\u0899" }. The output is assumed to
|
| + * be of the proper length already, and exactly output.length
|
| + * fields are parsed. If there are too few an exception is
|
| + * thrown. If there are too many the extras are ignored.
|
| + *
|
| + * @param buf scratch buffer
|
| + * @return FALSE upon failure
|
| + */
|
| + UBool hexsplit(const char *s, char delimiter,
|
| + UnicodeString output[], int32_t outputLength);
|
| +
|
| + void _testOneLine(const char *line);
|
| + void compare(const UnicodeString& s1,const UnicodeString& s2);
|
| +};
|
| +
|
| +#endif /* #if !UCONFIG_NO_NORMALIZATION */
|
| +
|
| +#endif
|
|
|
| Property changes on: icu46/source/test/intltest/normconf.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|