Home | History | Annotate | Download | only in intltest
      1 //  2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /********************************************************************
      4  * Copyright (c) 1997-2009,2014, International Business Machines
      5  * Corporation and others. All Rights Reserved.
      6  ********************************************************************/
      7 
      8 #include "unicode/utypes.h"
      9 
     10 #if !UCONFIG_NO_COLLATION
     11 
     12 #ifndef _COLL
     13 #include "unicode/coll.h"
     14 #endif
     15 
     16 #ifndef _TBLCOLL
     17 #include "unicode/tblcoll.h"
     18 #endif
     19 
     20 #ifndef _UNISTR
     21 #include "unicode/unistr.h"
     22 #endif
     23 
     24 #ifndef _SORTKEY
     25 #include "unicode/sortkey.h"
     26 #endif
     27 
     28 #ifndef _FICOLL
     29 #include "ficoll.h"
     30 #endif
     31 
     32 #include "sfwdchit.h"
     33 
     34 CollationFinnishTest::CollationFinnishTest()
     35 : myCollation(0)
     36 {
     37     UErrorCode status = U_ZERO_ERROR;
     38     myCollation = Collator::createInstance(Locale("fi", "FI", "", "collation=standard"),status);
     39 }
     40 
     41 CollationFinnishTest::~CollationFinnishTest()
     42 {
     43     delete myCollation;
     44 }
     45 
     46 const UChar CollationFinnishTest::testSourceCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
     47     {0x77, 0x61, 0x74, 0},  // "wat"
     48     {0x76, 0x61, 0x74, 0},  // "vat"
     49     {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0},
     50     {0x4c, 0x00E5, 0x76, 0x69, 0},
     51     {0x77, 0x61, 0x74, 0}   // "wat"
     52 };
     53 
     54 const UChar CollationFinnishTest::testTargetCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
     55     {0x76, 0x61, 0x74, 0},  // "vat"
     56     {0x77, 0x61, 0x79, 0},
     57     {0x61, 0x78, 0x62, 0x65, 0x63, 0x6b, 0},
     58     {0x4c, 0x00E4, 0x77, 0x65, 0},
     59     {0x76, 0x61, 0x74, 0}   // "vat"
     60 };
     61 
     62 const Collator::EComparisonResult CollationFinnishTest::results[] = {
     63     Collator::GREATER,
     64     Collator::LESS,
     65     Collator::GREATER,
     66     Collator::LESS,
     67     // test primary > 4
     68     Collator::GREATER,  // v < w per cldrbug 6615
     69 };
     70 
     71 void CollationFinnishTest::TestTertiary(/* char* par */)
     72 {
     73     int32_t i = 0;
     74     myCollation->setStrength(Collator::TERTIARY);
     75     for (i = 0; i < 4 ; i++) {
     76         doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
     77     }
     78 }
     79 void CollationFinnishTest::TestPrimary(/* char* par */)
     80 {
     81     int32_t i;
     82     myCollation->setStrength(Collator::PRIMARY);
     83     for (i = 4; i < 5; i++) {
     84         doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
     85     }
     86 }
     87 
     88 void CollationFinnishTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
     89 {
     90     if (exec) logln("TestSuite CollationFinnishTest: ");
     91 
     92     if((!myCollation) && exec) {
     93       dataerrln(__FILE__ " cannot test - failed to create collator.");
     94       name = "some test";
     95       return;
     96     }
     97     switch (index) {
     98         case 0: name = "TestPrimary";   if (exec)   TestPrimary(/* par */); break;
     99         case 1: name = "TestTertiary";  if (exec)   TestTertiary(/* par */); break;
    100         default: name = ""; break;
    101     }
    102 }
    103 
    104 #endif /* #if !UCONFIG_NO_COLLATION */
    105