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