Home | History | Annotate | Download | only in cintltst
      1 /********************************************************************
      2  * COPYRIGHT:
      3  * Copyright (c) 1997-2009, International Business Machines Corporation and
      4  * others. All Rights Reserved.
      5  ********************************************************************/
      6 /********************************************************************************
      7 *
      8 * File CESTST.C
      9 *
     10 * Modification History:
     11 *        Name                     Description
     12 *     Madhu Katragadda            Ported for C API
     13 *********************************************************************************/
     14 /**
     15  * CollationSpanishTest is a third level test class.  This tests the locale
     16  * specific primary, secondary and tertiary rules.  For example, the ignorable
     17  * character '-' in string "black-bird".  The en_US locale uses the default
     18  * collation rules as its sorting sequence.
     19  */
     20 
     21 #include <stdlib.h>
     22 
     23 #include "unicode/utypes.h"
     24 
     25 #if !UCONFIG_NO_COLLATION
     26 
     27 #include "unicode/ucol.h"
     28 #include "unicode/uloc.h"
     29 #include "cintltst.h"
     30 #include "cestst.h"
     31 #include "ccolltst.h"
     32 #include "callcoll.h"
     33 #include "unicode/ustring.h"
     34 #include "string.h"
     35 
     36 static UCollator *myCollation;
     37 const static UChar testSourceCases[][MAX_TOKEN_LEN] = {
     38     {0x0062/*'a'*/, 0x006c/*'l'*/, 0x0069/*'i'*/, 0x0061/*'a'*/, 0x0073/*'s'*/, 0x0000},
     39     {0x0045/*'E'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x0069/*'i'*/, 0x006f/*'o'*/, 0x0074/*'t'*/, 0x0000},
     40     {0x0048/*'H'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'o'*/, 0x0000},
     41     {0x0061/*'a'*/, 0x0063/*'c'*/, 0x0048/*'H'*/, 0x0063/*'c'*/, 0x0000},
     42     {0x0061/*'a'*/, 0x0063/*'c'*/, 0x0063/*'c'*/, 0x0000},
     43     {0x0061/*'a'*/, 0x006c/*'l'*/, 0x0069/*'i'*/, 0x0061/*'a'*/, 0x0073/*'s'*/, 0x0000},
     44     {0x0061/*'a'*/, 0x0063/*'c'*/, 0x0048/*'H'*/, 0x0063/*'c'*/, 0x0000},
     45     {0x0061/*'a'*/, 0x0063/*'c'*/, 0x0063/*'c'*/, 0x0000},
     46     {0x0048/*'H'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'o'*/, 0x0000},
     47 };
     48 
     49 const static UChar testTargetCases[][MAX_TOKEN_LEN] = {
     50     {0x0062/*'a'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x0069/*'i'*/, 0x0061/*'a'*/, 0x0073/*'s'*/, 0x0000},
     51     {0x0045/*'E'*/, 0x006d/*'m'*/, 0x0069/*'i'*/, 0x006f/*'o'*/, 0x0074/*'t'*/, 0x0000},
     52     {0x0068/*'h'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'O'*/, 0x0000},
     53     {0x0061/*'a'*/, 0x0043/*'C'*/, 0x0048/*'H'*/, 0x0063/*'c'*/, 0x0000},
     54     {0x0061/*'a'*/, 0x0043/*'C'*/, 0x0048/*'H'*/, 0x0063/*'c'*/, 0x0000},
     55     {0x0062/*'a'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x0069/*'i'*/, 0x0061/*'a'*/, 0x0073/*'s'*/, 0x0000},
     56     {0x0061/*'a'*/, 0x0043/*'C'*/, 0x0048/*'H'*/, 0x0063/*'c'*/, 0x0000},
     57     {0x0061/*'a'*/, 0x0043/*'C'*/, 0x0048/*'H'*/, 0x0063/*'c'*/, 0x0000},
     58     {0x0068/*'h'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'O'*/, 0x0000},
     59 };
     60 
     61 const static UCollationResult results[] = {
     62     UCOL_LESS,
     63     UCOL_LESS,
     64     UCOL_GREATER,
     65     UCOL_LESS,
     66     UCOL_LESS,
     67     /* test primary > 5*/
     68     UCOL_LESS,
     69     UCOL_EQUAL,
     70     UCOL_LESS,
     71     UCOL_EQUAL
     72 };
     73 
     74 
     75 void addSpanishCollTest(TestNode** root)
     76 {
     77 
     78 
     79     addTest(root, &TestPrimary, "tscoll/cestst/TestPrimary");
     80     addTest(root, &TestTertiary, "tscoll/cestst/TestTertiary");
     81 
     82 }
     83 
     84 
     85 static void TestTertiary( )
     86 {
     87 
     88     int32_t i;
     89     UErrorCode status = U_ZERO_ERROR;
     90     myCollation = ucol_open("es_ES", &status);
     91     if(U_FAILURE(status)){
     92         log_err_status(status, "ERROR: %s: in creation of rule based collator: %s\n", __FILE__, myErrorName(status));
     93         return;
     94     }
     95     log_verbose("Testing Spanish Collation with Tertiary strength\n");
     96     ucol_setStrength(myCollation, UCOL_TERTIARY);
     97     for (i = 0; i < 5 ; i++)
     98     {
     99         doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
    100     }
    101     ucol_close(myCollation);
    102 }
    103 
    104 static void TestPrimary()
    105 {
    106 
    107     int32_t i;
    108     UErrorCode status = U_ZERO_ERROR;
    109     myCollation = ucol_open("es_ES", &status);
    110     if(U_FAILURE(status)){
    111         log_err_status(status, "ERROR: %s: in creation of rule based collator: %s\n", __FILE__, myErrorName(status));
    112         return;
    113     }
    114     log_verbose("Testing Spanish Collation with Primary strength\n");
    115     ucol_setStrength(myCollation, UCOL_PRIMARY);
    116     for (i = 5; i < 9; i++)
    117     {
    118         doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
    119     }
    120     ucol_close(myCollation);
    121 }
    122 
    123 #endif /* #if !UCONFIG_NO_COLLATION */
    124