1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/********************************************************************
4 * Copyright (c) 1997-2016, International Business Machines Corporation and
5 * others. All Rights Reserved.
6 ********************************************************************/
7
8#include "unicode/uniset.h"
9#include "intltest.h"
10
11/** Helper function for TestUnicodeData */
12U_CFUNC void U_CALLCONV unicodeDataLineFn(void *context,
13                              char *fields[][2], int32_t fieldCount,
14                              UErrorCode *pErrorCode);
15
16U_CFUNC void U_CALLCONV
17derivedPropsLineFn(void *context,
18                   char *fields[][2], int32_t fieldCount,
19                   UErrorCode *pErrorCode);
20
21U_NAMESPACE_BEGIN
22
23class Hashtable;
24
25U_NAMESPACE_END
26
27/**
28 * Test API and functionality of class Unicode
29 **/
30class UnicodeTest: public IntlTest {
31public:
32    UnicodeTest();
33    virtual ~UnicodeTest();
34
35    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
36
37    void TestAdditionalProperties();
38    void TestBinaryValues();
39    void TestConsistency();
40    void TestPatternProperties();
41    void TestScriptMetadata();
42    void TestBidiPairedBracketType();
43    void TestEmojiProperties();
44    void TestDefaultScriptExtensions();
45
46private:
47
48    friend void U_CALLCONV unicodeDataLineFn(void *context,
49                              char *fields[][2], int32_t fieldCount,
50                              UErrorCode *pErrorCode);
51
52    friend void U_CALLCONV
53    derivedPropsLineFn(void *context,
54                           char *fields[][2], int32_t fieldCount,
55                           UErrorCode *pErrorCode);
56
57    UnicodeSet derivedProps[30];
58    U_NAMESPACE_QUALIFIER Hashtable *unknownPropertyNames;
59
60    UBool compareUSets(const UnicodeSet &a, const UnicodeSet &b,
61                       const char *a_name, const char *b_name,
62                       UBool diffIsError);
63};
64