159d709d503bab6e2b61931737e662dd293b40578ccornelius/******************************************************************** 259d709d503bab6e2b61931737e662dd293b40578ccornelius * Copyright (c) 2013, International Business Machines Corporation 359d709d503bab6e2b61931737e662dd293b40578ccornelius * and others. All Rights Reserved. 459d709d503bab6e2b61931737e662dd293b40578ccornelius ********************************************************************/ 559d709d503bab6e2b61931737e662dd293b40578ccornelius/* C API TEST FOR UREGION */ 659d709d503bab6e2b61931737e662dd293b40578ccornelius/*********************************************************************** 759d709d503bab6e2b61931737e662dd293b40578ccornelius * Test cases ported from ICU4J ( RegionTest.java ) 859d709d503bab6e2b61931737e662dd293b40578ccornelius * to C++ (regiontst.cpp) to here. 959d709d503bab6e2b61931737e662dd293b40578ccornelius * Try to keep them in sync if at all possible...! 1059d709d503bab6e2b61931737e662dd293b40578ccornelius ***********************************************************************/ 1159d709d503bab6e2b61931737e662dd293b40578ccornelius 1259d709d503bab6e2b61931737e662dd293b40578ccornelius#include "unicode/utypes.h" 1359d709d503bab6e2b61931737e662dd293b40578ccornelius 1459d709d503bab6e2b61931737e662dd293b40578ccornelius#if !UCONFIG_NO_FORMATTING 1559d709d503bab6e2b61931737e662dd293b40578ccornelius 1659d709d503bab6e2b61931737e662dd293b40578ccornelius#include "unicode/ustring.h" 1759d709d503bab6e2b61931737e662dd293b40578ccornelius#include "unicode/uregion.h" 1859d709d503bab6e2b61931737e662dd293b40578ccornelius#include "unicode/uenum.h" 1959d709d503bab6e2b61931737e662dd293b40578ccornelius#include "cintltst.h" 2059d709d503bab6e2b61931737e662dd293b40578ccornelius#include "cmemory.h" 2159d709d503bab6e2b61931737e662dd293b40578ccornelius#include "cstring.h" 2259d709d503bab6e2b61931737e662dd293b40578ccornelius 2359d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestKnownRegions(void); 2459d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainedRegions(void); 2559d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainedRegionsWithType(void); 2659d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainingRegion(void); 2759d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainingRegionWithType(void); 2859d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetPreferredValues(void); 2959d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestContains(void); 3059d709d503bab6e2b61931737e662dd293b40578ccornelius 3159d709d503bab6e2b61931737e662dd293b40578ccorneliusvoid addURegionTest(TestNode** root); 3259d709d503bab6e2b61931737e662dd293b40578ccornelius 3359d709d503bab6e2b61931737e662dd293b40578ccornelius#define TESTCASE(x) addTest(root, &x, "tsformat/uregiontest/" #x) 3459d709d503bab6e2b61931737e662dd293b40578ccornelius 3559d709d503bab6e2b61931737e662dd293b40578ccorneliusvoid addURegionTest(TestNode** root) 3659d709d503bab6e2b61931737e662dd293b40578ccornelius{ 3759d709d503bab6e2b61931737e662dd293b40578ccornelius TESTCASE(TestKnownRegions); 3859d709d503bab6e2b61931737e662dd293b40578ccornelius TESTCASE(TestGetContainedRegions); 3959d709d503bab6e2b61931737e662dd293b40578ccornelius TESTCASE(TestGetContainedRegionsWithType); 4059d709d503bab6e2b61931737e662dd293b40578ccornelius TESTCASE(TestGetContainingRegion); 4159d709d503bab6e2b61931737e662dd293b40578ccornelius TESTCASE(TestGetContainingRegionWithType); 4259d709d503bab6e2b61931737e662dd293b40578ccornelius TESTCASE(TestGetPreferredValues); 4359d709d503bab6e2b61931737e662dd293b40578ccornelius TESTCASE(TestContains); 4459d709d503bab6e2b61931737e662dd293b40578ccornelius} 4559d709d503bab6e2b61931737e662dd293b40578ccornelius 4659d709d503bab6e2b61931737e662dd293b40578ccorneliustypedef struct KnownRegion { 4759d709d503bab6e2b61931737e662dd293b40578ccornelius const char *code; 4859d709d503bab6e2b61931737e662dd293b40578ccornelius int32_t numeric; 4959d709d503bab6e2b61931737e662dd293b40578ccornelius const char *parent; 5059d709d503bab6e2b61931737e662dd293b40578ccornelius URegionType type; 5159d709d503bab6e2b61931737e662dd293b40578ccornelius const char *containingContinent; 5259d709d503bab6e2b61931737e662dd293b40578ccornelius} KnownRegion; 5359d709d503bab6e2b61931737e662dd293b40578ccornelius 5459d709d503bab6e2b61931737e662dd293b40578ccornelius#define LENGTHOF(array) (int32_t)(sizeof(array) / sizeof((array)[0])) 5559d709d503bab6e2b61931737e662dd293b40578ccornelius 5659d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic KnownRegion knownRegions[] = { 5759d709d503bab6e2b61931737e662dd293b40578ccornelius // Code, Num, Parent, Type, Containing Continent 5859d709d503bab6e2b61931737e662dd293b40578ccornelius { "TP" , 626, "035", URGN_TERRITORY, "142" }, 5959d709d503bab6e2b61931737e662dd293b40578ccornelius { "001", 1, NULL , URGN_WORLD, NULL }, 6059d709d503bab6e2b61931737e662dd293b40578ccornelius { "002", 2, "001", URGN_CONTINENT, NULL }, 6159d709d503bab6e2b61931737e662dd293b40578ccornelius { "003", 3, NULL, URGN_GROUPING, NULL }, 6259d709d503bab6e2b61931737e662dd293b40578ccornelius { "005", 5, "019", URGN_SUBCONTINENT, "019" }, 6359d709d503bab6e2b61931737e662dd293b40578ccornelius { "009", 9, "001", URGN_CONTINENT, NULL}, 6459d709d503bab6e2b61931737e662dd293b40578ccornelius { "011", 11, "002", URGN_SUBCONTINENT, "002" }, 6559d709d503bab6e2b61931737e662dd293b40578ccornelius { "013", 13, "019", URGN_SUBCONTINENT, "019" }, 6659d709d503bab6e2b61931737e662dd293b40578ccornelius { "014", 14, "002", URGN_SUBCONTINENT, "002" }, 6759d709d503bab6e2b61931737e662dd293b40578ccornelius { "015", 15, "002", URGN_SUBCONTINENT, "002" }, 6859d709d503bab6e2b61931737e662dd293b40578ccornelius { "017", 17, "002", URGN_SUBCONTINENT, "002" }, 6959d709d503bab6e2b61931737e662dd293b40578ccornelius { "018", 18, "002", URGN_SUBCONTINENT, "002" }, 7059d709d503bab6e2b61931737e662dd293b40578ccornelius { "019", 19, "001", URGN_CONTINENT, NULL }, 7159d709d503bab6e2b61931737e662dd293b40578ccornelius { "021", 21, "019", URGN_SUBCONTINENT, "019" }, 7259d709d503bab6e2b61931737e662dd293b40578ccornelius { "029", 29, "019", URGN_SUBCONTINENT, "019" }, 7359d709d503bab6e2b61931737e662dd293b40578ccornelius { "030", 30, "142", URGN_SUBCONTINENT, "142" }, 7459d709d503bab6e2b61931737e662dd293b40578ccornelius { "034", 34, "142", URGN_SUBCONTINENT, "142" }, 7559d709d503bab6e2b61931737e662dd293b40578ccornelius { "035", 35, "142", URGN_SUBCONTINENT, "142" }, 7659d709d503bab6e2b61931737e662dd293b40578ccornelius { "039", 39, "150", URGN_SUBCONTINENT, "150"}, 7759d709d503bab6e2b61931737e662dd293b40578ccornelius { "053", 53, "009", URGN_SUBCONTINENT, "009" }, 7859d709d503bab6e2b61931737e662dd293b40578ccornelius { "054", 54, "009", URGN_SUBCONTINENT, "009" }, 7959d709d503bab6e2b61931737e662dd293b40578ccornelius { "057", 57, "009", URGN_SUBCONTINENT, "009" }, 8059d709d503bab6e2b61931737e662dd293b40578ccornelius { "061", 61, "009", URGN_SUBCONTINENT, "009" }, 8159d709d503bab6e2b61931737e662dd293b40578ccornelius { "142", 142, "001", URGN_CONTINENT, NULL }, 8259d709d503bab6e2b61931737e662dd293b40578ccornelius { "143", 143, "142", URGN_SUBCONTINENT, "142" }, 8359d709d503bab6e2b61931737e662dd293b40578ccornelius { "145", 145, "142", URGN_SUBCONTINENT, "142" }, 8459d709d503bab6e2b61931737e662dd293b40578ccornelius { "150", 150, "001", URGN_CONTINENT, NULL }, 8559d709d503bab6e2b61931737e662dd293b40578ccornelius { "151", 151, "150", URGN_SUBCONTINENT, "150" }, 8659d709d503bab6e2b61931737e662dd293b40578ccornelius { "154", 154, "150", URGN_SUBCONTINENT, "150" }, 8759d709d503bab6e2b61931737e662dd293b40578ccornelius { "155", 155, "150", URGN_SUBCONTINENT, "150" }, 8859d709d503bab6e2b61931737e662dd293b40578ccornelius { "419", 419, NULL, URGN_GROUPING , NULL}, 8959d709d503bab6e2b61931737e662dd293b40578ccornelius { "AC" , -1, "QO" , URGN_TERRITORY, "009" }, 9059d709d503bab6e2b61931737e662dd293b40578ccornelius { "AD" , 20, "039", URGN_TERRITORY, "150" }, 9159d709d503bab6e2b61931737e662dd293b40578ccornelius { "AE" , 784, "145", URGN_TERRITORY, "142" }, 9259d709d503bab6e2b61931737e662dd293b40578ccornelius { "AF" , 4, "034", URGN_TERRITORY, "142" }, 9359d709d503bab6e2b61931737e662dd293b40578ccornelius { "AG" , 28, "029", URGN_TERRITORY, "019" }, 9459d709d503bab6e2b61931737e662dd293b40578ccornelius { "AI" , 660, "029", URGN_TERRITORY, "019" }, 9559d709d503bab6e2b61931737e662dd293b40578ccornelius { "AL" , 8, "039", URGN_TERRITORY, "150" }, 9659d709d503bab6e2b61931737e662dd293b40578ccornelius { "AM" , 51, "145", URGN_TERRITORY, "142" }, 9759d709d503bab6e2b61931737e662dd293b40578ccornelius { "AN" , 530, NULL, URGN_DEPRECATED, NULL }, 9859d709d503bab6e2b61931737e662dd293b40578ccornelius { "AO" , 24, "017", URGN_TERRITORY, "002" }, 9959d709d503bab6e2b61931737e662dd293b40578ccornelius { "AQ" , 10, "QO" , URGN_TERRITORY, "009" }, 10059d709d503bab6e2b61931737e662dd293b40578ccornelius { "AR" , 32, "005", URGN_TERRITORY, "019" }, 10159d709d503bab6e2b61931737e662dd293b40578ccornelius { "AS" , 16, "061", URGN_TERRITORY, "009" }, 10259d709d503bab6e2b61931737e662dd293b40578ccornelius { "AT" , 40, "155", URGN_TERRITORY, "150" }, 10359d709d503bab6e2b61931737e662dd293b40578ccornelius { "AU" , 36, "053", URGN_TERRITORY, "009" }, 10459d709d503bab6e2b61931737e662dd293b40578ccornelius { "AW" , 533, "029", URGN_TERRITORY, "019" }, 10559d709d503bab6e2b61931737e662dd293b40578ccornelius { "AX" , 248, "154", URGN_TERRITORY, "150" }, 10659d709d503bab6e2b61931737e662dd293b40578ccornelius { "AZ" , 31, "145", URGN_TERRITORY, "142" }, 10759d709d503bab6e2b61931737e662dd293b40578ccornelius { "BA" , 70, "039", URGN_TERRITORY, "150" }, 10859d709d503bab6e2b61931737e662dd293b40578ccornelius { "BB" , 52, "029", URGN_TERRITORY, "019" }, 10959d709d503bab6e2b61931737e662dd293b40578ccornelius { "BD" , 50, "034", URGN_TERRITORY, "142" }, 11059d709d503bab6e2b61931737e662dd293b40578ccornelius { "BE" , 56, "155", URGN_TERRITORY, "150" }, 11159d709d503bab6e2b61931737e662dd293b40578ccornelius { "BF" , 854, "011", URGN_TERRITORY, "002" }, 11259d709d503bab6e2b61931737e662dd293b40578ccornelius { "BG" , 100, "151", URGN_TERRITORY, "150" }, 11359d709d503bab6e2b61931737e662dd293b40578ccornelius { "BH" , 48, "145", URGN_TERRITORY, "142" }, 11459d709d503bab6e2b61931737e662dd293b40578ccornelius { "BI" , 108, "014", URGN_TERRITORY, "002" }, 11559d709d503bab6e2b61931737e662dd293b40578ccornelius { "BJ" , 204, "011", URGN_TERRITORY, "002" }, 11659d709d503bab6e2b61931737e662dd293b40578ccornelius { "BL" , 652, "029", URGN_TERRITORY, "019" }, 11759d709d503bab6e2b61931737e662dd293b40578ccornelius { "BM" , 60, "021", URGN_TERRITORY, "019" }, 11859d709d503bab6e2b61931737e662dd293b40578ccornelius { "BN" , 96, "035", URGN_TERRITORY, "142" }, 11959d709d503bab6e2b61931737e662dd293b40578ccornelius { "BO" , 68, "005", URGN_TERRITORY, "019" }, 12059d709d503bab6e2b61931737e662dd293b40578ccornelius { "BQ" , 535, "029", URGN_TERRITORY, "019" }, 12159d709d503bab6e2b61931737e662dd293b40578ccornelius { "BR" , 76, "005", URGN_TERRITORY, "019" }, 12259d709d503bab6e2b61931737e662dd293b40578ccornelius { "BS" , 44, "029", URGN_TERRITORY, "019" }, 12359d709d503bab6e2b61931737e662dd293b40578ccornelius { "BT" , 64, "034", URGN_TERRITORY, "142" }, 12459d709d503bab6e2b61931737e662dd293b40578ccornelius { "BU" , 104, "035", URGN_TERRITORY, "142" }, 12559d709d503bab6e2b61931737e662dd293b40578ccornelius { "BV" , 74, "QO" , URGN_TERRITORY, "009" }, 12659d709d503bab6e2b61931737e662dd293b40578ccornelius { "BW" , 72, "018", URGN_TERRITORY, "002" }, 12759d709d503bab6e2b61931737e662dd293b40578ccornelius { "BY" , 112, "151", URGN_TERRITORY, "150" }, 12859d709d503bab6e2b61931737e662dd293b40578ccornelius { "BZ" , 84, "013", URGN_TERRITORY, "019" }, 12959d709d503bab6e2b61931737e662dd293b40578ccornelius { "CA" , 124, "021", URGN_TERRITORY, "019" }, 13059d709d503bab6e2b61931737e662dd293b40578ccornelius { "CC" , 166, "QO" , URGN_TERRITORY, "009" }, 13159d709d503bab6e2b61931737e662dd293b40578ccornelius { "CD" , 180, "017", URGN_TERRITORY, "002" }, 13259d709d503bab6e2b61931737e662dd293b40578ccornelius { "CF" , 140, "017", URGN_TERRITORY, "002" }, 13359d709d503bab6e2b61931737e662dd293b40578ccornelius { "CG" , 178, "017", URGN_TERRITORY, "002" }, 13459d709d503bab6e2b61931737e662dd293b40578ccornelius { "CH" , 756, "155", URGN_TERRITORY, "150" }, 13559d709d503bab6e2b61931737e662dd293b40578ccornelius { "CI" , 384, "011", URGN_TERRITORY, "002" }, 13659d709d503bab6e2b61931737e662dd293b40578ccornelius { "CK" , 184, "061", URGN_TERRITORY, "009" }, 13759d709d503bab6e2b61931737e662dd293b40578ccornelius { "CL" , 152, "005", URGN_TERRITORY, "019" }, 13859d709d503bab6e2b61931737e662dd293b40578ccornelius { "CM" , 120, "017", URGN_TERRITORY, "002" }, 13959d709d503bab6e2b61931737e662dd293b40578ccornelius { "CN" , 156, "030", URGN_TERRITORY, "142" }, 14059d709d503bab6e2b61931737e662dd293b40578ccornelius { "CO" , 170, "005", URGN_TERRITORY, "019" }, 14159d709d503bab6e2b61931737e662dd293b40578ccornelius { "CP" , -1 , "QO" , URGN_TERRITORY, "009" }, 14259d709d503bab6e2b61931737e662dd293b40578ccornelius { "CR" , 188, "013", URGN_TERRITORY, "019" }, 14359d709d503bab6e2b61931737e662dd293b40578ccornelius { "CU" , 192, "029", URGN_TERRITORY, "019" }, 14459d709d503bab6e2b61931737e662dd293b40578ccornelius { "CV" , 132, "011", URGN_TERRITORY, "002" }, 14559d709d503bab6e2b61931737e662dd293b40578ccornelius { "CW" , 531, "029", URGN_TERRITORY, "019" }, 14659d709d503bab6e2b61931737e662dd293b40578ccornelius { "CX" , 162, "QO" , URGN_TERRITORY, "009" }, 14759d709d503bab6e2b61931737e662dd293b40578ccornelius { "CY" , 196, "145", URGN_TERRITORY, "142" }, 14859d709d503bab6e2b61931737e662dd293b40578ccornelius { "CZ" , 203, "151", URGN_TERRITORY, "150" }, 14959d709d503bab6e2b61931737e662dd293b40578ccornelius { "DD" , 276, "155", URGN_TERRITORY, "150" }, 15059d709d503bab6e2b61931737e662dd293b40578ccornelius { "DE" , 276, "155", URGN_TERRITORY, "150" }, 15159d709d503bab6e2b61931737e662dd293b40578ccornelius { "DG" , -1 , "QO" , URGN_TERRITORY, "009" }, 15259d709d503bab6e2b61931737e662dd293b40578ccornelius { "DJ" , 262, "014", URGN_TERRITORY, "002" }, 15359d709d503bab6e2b61931737e662dd293b40578ccornelius { "DK" , 208, "154", URGN_TERRITORY, "150" }, 15459d709d503bab6e2b61931737e662dd293b40578ccornelius { "DM" , 212, "029", URGN_TERRITORY, "019" }, 15559d709d503bab6e2b61931737e662dd293b40578ccornelius { "DO" , 214, "029", URGN_TERRITORY, "019" }, 15659d709d503bab6e2b61931737e662dd293b40578ccornelius { "DZ" , 12, "015", URGN_TERRITORY, "002" }, 15759d709d503bab6e2b61931737e662dd293b40578ccornelius { "EA" , -1, "015", URGN_TERRITORY, "002" }, 15859d709d503bab6e2b61931737e662dd293b40578ccornelius { "EC" , 218, "005", URGN_TERRITORY, "019" }, 15959d709d503bab6e2b61931737e662dd293b40578ccornelius { "EE" , 233, "154", URGN_TERRITORY, "150" }, 16059d709d503bab6e2b61931737e662dd293b40578ccornelius { "EG" , 818, "015", URGN_TERRITORY, "002" }, 16159d709d503bab6e2b61931737e662dd293b40578ccornelius { "EH" , 732, "015", URGN_TERRITORY, "002" }, 16259d709d503bab6e2b61931737e662dd293b40578ccornelius { "ER" , 232, "014", URGN_TERRITORY, "002" }, 16359d709d503bab6e2b61931737e662dd293b40578ccornelius { "ES" , 724, "039", URGN_TERRITORY, "150" }, 16459d709d503bab6e2b61931737e662dd293b40578ccornelius { "ET" , 231, "014", URGN_TERRITORY, "002" }, 16559d709d503bab6e2b61931737e662dd293b40578ccornelius { "EU" , 967, NULL, URGN_GROUPING, NULL }, 16659d709d503bab6e2b61931737e662dd293b40578ccornelius { "FI" , 246, "154", URGN_TERRITORY, "150" }, 16759d709d503bab6e2b61931737e662dd293b40578ccornelius { "FJ" , 242, "054", URGN_TERRITORY, "009" }, 16859d709d503bab6e2b61931737e662dd293b40578ccornelius { "FK" , 238, "005", URGN_TERRITORY, "019" }, 16959d709d503bab6e2b61931737e662dd293b40578ccornelius { "FM" , 583, "057", URGN_TERRITORY, "009" }, 17059d709d503bab6e2b61931737e662dd293b40578ccornelius { "FO" , 234, "154", URGN_TERRITORY, "150" }, 17159d709d503bab6e2b61931737e662dd293b40578ccornelius { "FR" , 250, "155", URGN_TERRITORY, "150" }, 17259d709d503bab6e2b61931737e662dd293b40578ccornelius { "FX" , 250, "155", URGN_TERRITORY, "150" }, 17359d709d503bab6e2b61931737e662dd293b40578ccornelius { "GA" , 266, "017", URGN_TERRITORY, "002" }, 17459d709d503bab6e2b61931737e662dd293b40578ccornelius { "GB" , 826, "154", URGN_TERRITORY, "150" }, 17559d709d503bab6e2b61931737e662dd293b40578ccornelius { "GD" , 308, "029", URGN_TERRITORY, "019" }, 17659d709d503bab6e2b61931737e662dd293b40578ccornelius { "GE" , 268, "145", URGN_TERRITORY, "142" }, 17759d709d503bab6e2b61931737e662dd293b40578ccornelius { "GF" , 254, "005", URGN_TERRITORY, "019" }, 17859d709d503bab6e2b61931737e662dd293b40578ccornelius { "GG" , 831, "154", URGN_TERRITORY, "150" }, 17959d709d503bab6e2b61931737e662dd293b40578ccornelius { "GH" , 288, "011", URGN_TERRITORY, "002" }, 18059d709d503bab6e2b61931737e662dd293b40578ccornelius { "GI" , 292, "039", URGN_TERRITORY, "150" }, 18159d709d503bab6e2b61931737e662dd293b40578ccornelius { "GL" , 304, "021", URGN_TERRITORY, "019" }, 18259d709d503bab6e2b61931737e662dd293b40578ccornelius { "GM" , 270, "011", URGN_TERRITORY, "002" }, 18359d709d503bab6e2b61931737e662dd293b40578ccornelius { "GN" , 324, "011", URGN_TERRITORY, "002" }, 18459d709d503bab6e2b61931737e662dd293b40578ccornelius { "GP" , 312, "029", URGN_TERRITORY, "019" }, 18559d709d503bab6e2b61931737e662dd293b40578ccornelius { "GQ" , 226, "017", URGN_TERRITORY, "002" }, 18659d709d503bab6e2b61931737e662dd293b40578ccornelius { "GR" , 300, "039", URGN_TERRITORY, "150" }, 18759d709d503bab6e2b61931737e662dd293b40578ccornelius { "GS" , 239, "QO" , URGN_TERRITORY, "009" }, 18859d709d503bab6e2b61931737e662dd293b40578ccornelius { "GT" , 320, "013", URGN_TERRITORY, "019" }, 18959d709d503bab6e2b61931737e662dd293b40578ccornelius { "GU" , 316, "057", URGN_TERRITORY, "009" }, 19059d709d503bab6e2b61931737e662dd293b40578ccornelius { "GW" , 624, "011", URGN_TERRITORY, "002" }, 19159d709d503bab6e2b61931737e662dd293b40578ccornelius { "GY" , 328, "005", URGN_TERRITORY, "019" }, 19259d709d503bab6e2b61931737e662dd293b40578ccornelius { "HK" , 344, "030", URGN_TERRITORY, "142" }, 19359d709d503bab6e2b61931737e662dd293b40578ccornelius { "HM" , 334, "QO" , URGN_TERRITORY, "009" }, 19459d709d503bab6e2b61931737e662dd293b40578ccornelius { "HN" , 340, "013", URGN_TERRITORY, "019" }, 19559d709d503bab6e2b61931737e662dd293b40578ccornelius { "HR" , 191, "039", URGN_TERRITORY, "150" }, 19659d709d503bab6e2b61931737e662dd293b40578ccornelius { "HT" , 332, "029", URGN_TERRITORY, "019" }, 19759d709d503bab6e2b61931737e662dd293b40578ccornelius { "HU" , 348, "151", URGN_TERRITORY, "150" }, 19859d709d503bab6e2b61931737e662dd293b40578ccornelius { "IC" , -1, "015", URGN_TERRITORY, "002" }, 19959d709d503bab6e2b61931737e662dd293b40578ccornelius { "ID" , 360, "035", URGN_TERRITORY, "142" }, 20059d709d503bab6e2b61931737e662dd293b40578ccornelius { "IE" , 372, "154", URGN_TERRITORY, "150" }, 20159d709d503bab6e2b61931737e662dd293b40578ccornelius { "IL" , 376, "145", URGN_TERRITORY, "142" }, 20259d709d503bab6e2b61931737e662dd293b40578ccornelius { "IM" , 833, "154", URGN_TERRITORY, "150" }, 20359d709d503bab6e2b61931737e662dd293b40578ccornelius { "IN" , 356, "034", URGN_TERRITORY, "142" }, 20459d709d503bab6e2b61931737e662dd293b40578ccornelius { "IO" , 86, "QO" , URGN_TERRITORY, "009" }, 20559d709d503bab6e2b61931737e662dd293b40578ccornelius { "IQ" , 368, "145", URGN_TERRITORY, "142" }, 20659d709d503bab6e2b61931737e662dd293b40578ccornelius { "IR" , 364, "034", URGN_TERRITORY, "142" }, 20759d709d503bab6e2b61931737e662dd293b40578ccornelius { "IS" , 352, "154", URGN_TERRITORY, "150" }, 20859d709d503bab6e2b61931737e662dd293b40578ccornelius { "IT" , 380, "039", URGN_TERRITORY, "150" }, 20959d709d503bab6e2b61931737e662dd293b40578ccornelius { "JE" , 832, "154", URGN_TERRITORY, "150" }, 21059d709d503bab6e2b61931737e662dd293b40578ccornelius { "JM" , 388, "029", URGN_TERRITORY, "019" }, 21159d709d503bab6e2b61931737e662dd293b40578ccornelius { "JO" , 400, "145", URGN_TERRITORY, "142" }, 21259d709d503bab6e2b61931737e662dd293b40578ccornelius { "JP" , 392, "030", URGN_TERRITORY, "142" }, 21359d709d503bab6e2b61931737e662dd293b40578ccornelius { "KE" , 404, "014", URGN_TERRITORY, "002" }, 21459d709d503bab6e2b61931737e662dd293b40578ccornelius { "KG" , 417, "143", URGN_TERRITORY, "142" }, 21559d709d503bab6e2b61931737e662dd293b40578ccornelius { "KH" , 116, "035", URGN_TERRITORY, "142" }, 21659d709d503bab6e2b61931737e662dd293b40578ccornelius { "KI" , 296, "057", URGN_TERRITORY, "009" }, 21759d709d503bab6e2b61931737e662dd293b40578ccornelius { "KM" , 174, "014", URGN_TERRITORY, "002" }, 21859d709d503bab6e2b61931737e662dd293b40578ccornelius { "KN" , 659, "029", URGN_TERRITORY, "019" }, 21959d709d503bab6e2b61931737e662dd293b40578ccornelius { "KP" , 408, "030", URGN_TERRITORY, "142" }, 22059d709d503bab6e2b61931737e662dd293b40578ccornelius { "KR" , 410, "030", URGN_TERRITORY, "142" }, 22159d709d503bab6e2b61931737e662dd293b40578ccornelius { "KW" , 414, "145", URGN_TERRITORY, "142" }, 22259d709d503bab6e2b61931737e662dd293b40578ccornelius { "KY" , 136, "029", URGN_TERRITORY, "019" }, 22359d709d503bab6e2b61931737e662dd293b40578ccornelius { "KZ" , 398, "143", URGN_TERRITORY, "142" }, 22459d709d503bab6e2b61931737e662dd293b40578ccornelius { "LA" , 418, "035", URGN_TERRITORY, "142" }, 22559d709d503bab6e2b61931737e662dd293b40578ccornelius { "LB" , 422, "145", URGN_TERRITORY, "142" }, 22659d709d503bab6e2b61931737e662dd293b40578ccornelius { "LC" , 662, "029", URGN_TERRITORY, "019" }, 22759d709d503bab6e2b61931737e662dd293b40578ccornelius { "LI" , 438, "155", URGN_TERRITORY, "150" }, 22859d709d503bab6e2b61931737e662dd293b40578ccornelius { "LK" , 144, "034", URGN_TERRITORY, "142" }, 22959d709d503bab6e2b61931737e662dd293b40578ccornelius { "LR" , 430, "011", URGN_TERRITORY, "002" }, 23059d709d503bab6e2b61931737e662dd293b40578ccornelius { "LS" , 426, "018", URGN_TERRITORY, "002" }, 23159d709d503bab6e2b61931737e662dd293b40578ccornelius { "LT" , 440, "154", URGN_TERRITORY, "150" }, 23259d709d503bab6e2b61931737e662dd293b40578ccornelius { "LU" , 442, "155", URGN_TERRITORY, "150" }, 23359d709d503bab6e2b61931737e662dd293b40578ccornelius { "LV" , 428, "154", URGN_TERRITORY, "150" }, 23459d709d503bab6e2b61931737e662dd293b40578ccornelius { "LY" , 434, "015", URGN_TERRITORY, "002" }, 23559d709d503bab6e2b61931737e662dd293b40578ccornelius { "MA" , 504, "015", URGN_TERRITORY, "002" }, 23659d709d503bab6e2b61931737e662dd293b40578ccornelius { "MC" , 492, "155", URGN_TERRITORY, "150" }, 23759d709d503bab6e2b61931737e662dd293b40578ccornelius { "MD" , 498, "151", URGN_TERRITORY, "150" }, 23859d709d503bab6e2b61931737e662dd293b40578ccornelius { "ME" , 499, "039", URGN_TERRITORY, "150" }, 23959d709d503bab6e2b61931737e662dd293b40578ccornelius { "MF" , 663, "029", URGN_TERRITORY, "019" }, 24059d709d503bab6e2b61931737e662dd293b40578ccornelius { "MG" , 450, "014", URGN_TERRITORY, "002" }, 24159d709d503bab6e2b61931737e662dd293b40578ccornelius { "MH" , 584, "057", URGN_TERRITORY, "009" }, 24259d709d503bab6e2b61931737e662dd293b40578ccornelius { "MK" , 807, "039", URGN_TERRITORY, "150" }, 24359d709d503bab6e2b61931737e662dd293b40578ccornelius { "ML" , 466, "011", URGN_TERRITORY, "002" }, 24459d709d503bab6e2b61931737e662dd293b40578ccornelius { "MM" , 104, "035", URGN_TERRITORY, "142" }, 24559d709d503bab6e2b61931737e662dd293b40578ccornelius { "MN" , 496, "030", URGN_TERRITORY, "142" }, 24659d709d503bab6e2b61931737e662dd293b40578ccornelius { "MO" , 446, "030", URGN_TERRITORY, "142" }, 24759d709d503bab6e2b61931737e662dd293b40578ccornelius { "MP" , 580, "057", URGN_TERRITORY, "009" }, 24859d709d503bab6e2b61931737e662dd293b40578ccornelius { "MQ" , 474, "029", URGN_TERRITORY, "019" }, 24959d709d503bab6e2b61931737e662dd293b40578ccornelius { "MR" , 478, "011", URGN_TERRITORY, "002" }, 25059d709d503bab6e2b61931737e662dd293b40578ccornelius { "MS" , 500, "029", URGN_TERRITORY, "019" }, 25159d709d503bab6e2b61931737e662dd293b40578ccornelius { "MT" , 470, "039", URGN_TERRITORY, "150" }, 25259d709d503bab6e2b61931737e662dd293b40578ccornelius { "MU" , 480, "014", URGN_TERRITORY, "002" }, 25359d709d503bab6e2b61931737e662dd293b40578ccornelius { "MV" , 462, "034", URGN_TERRITORY, "142" }, 25459d709d503bab6e2b61931737e662dd293b40578ccornelius { "MW" , 454, "014", URGN_TERRITORY, "002" }, 25559d709d503bab6e2b61931737e662dd293b40578ccornelius { "MX" , 484, "013", URGN_TERRITORY, "019"}, 25659d709d503bab6e2b61931737e662dd293b40578ccornelius { "MY" , 458, "035", URGN_TERRITORY, "142" }, 25759d709d503bab6e2b61931737e662dd293b40578ccornelius { "MZ" , 508, "014", URGN_TERRITORY, "002" }, 25859d709d503bab6e2b61931737e662dd293b40578ccornelius { "NA" , 516, "018", URGN_TERRITORY, "002" }, 25959d709d503bab6e2b61931737e662dd293b40578ccornelius { "NC" , 540, "054", URGN_TERRITORY, "009" }, 26059d709d503bab6e2b61931737e662dd293b40578ccornelius { "NE" , 562, "011", URGN_TERRITORY, "002" }, 26159d709d503bab6e2b61931737e662dd293b40578ccornelius { "NF" , 574, "053", URGN_TERRITORY, "009" }, 26259d709d503bab6e2b61931737e662dd293b40578ccornelius { "NG" , 566, "011", URGN_TERRITORY, "002" }, 26359d709d503bab6e2b61931737e662dd293b40578ccornelius { "NI" , 558, "013", URGN_TERRITORY, "019" }, 26459d709d503bab6e2b61931737e662dd293b40578ccornelius { "NL" , 528, "155", URGN_TERRITORY, "150" }, 26559d709d503bab6e2b61931737e662dd293b40578ccornelius { "NO" , 578, "154", URGN_TERRITORY, "150" }, 26659d709d503bab6e2b61931737e662dd293b40578ccornelius { "NP" , 524, "034", URGN_TERRITORY, "142" }, 26759d709d503bab6e2b61931737e662dd293b40578ccornelius { "NR" , 520, "057", URGN_TERRITORY, "009" }, 26859d709d503bab6e2b61931737e662dd293b40578ccornelius { "NT" , 536, NULL , URGN_DEPRECATED, NULL }, 26959d709d503bab6e2b61931737e662dd293b40578ccornelius { "NU" , 570, "061", URGN_TERRITORY, "009" }, 27059d709d503bab6e2b61931737e662dd293b40578ccornelius { "NZ" , 554, "053", URGN_TERRITORY, "009" }, 27159d709d503bab6e2b61931737e662dd293b40578ccornelius { "OM" , 512, "145", URGN_TERRITORY, "142" }, 27259d709d503bab6e2b61931737e662dd293b40578ccornelius { "PA" , 591, "013", URGN_TERRITORY, "019" }, 27359d709d503bab6e2b61931737e662dd293b40578ccornelius { "PE" , 604, "005", URGN_TERRITORY, "019" }, 27459d709d503bab6e2b61931737e662dd293b40578ccornelius { "PF" , 258, "061", URGN_TERRITORY, "009" }, 27559d709d503bab6e2b61931737e662dd293b40578ccornelius { "PG" , 598, "054", URGN_TERRITORY, "009" }, 27659d709d503bab6e2b61931737e662dd293b40578ccornelius { "PH" , 608, "035", URGN_TERRITORY, "142" }, 27759d709d503bab6e2b61931737e662dd293b40578ccornelius { "PK" , 586, "034", URGN_TERRITORY, "142" }, 27859d709d503bab6e2b61931737e662dd293b40578ccornelius { "PL" , 616, "151", URGN_TERRITORY, "150" }, 27959d709d503bab6e2b61931737e662dd293b40578ccornelius { "PM" , 666, "021", URGN_TERRITORY, "019" }, 28059d709d503bab6e2b61931737e662dd293b40578ccornelius { "PN" , 612, "061", URGN_TERRITORY, "009" }, 28159d709d503bab6e2b61931737e662dd293b40578ccornelius { "PR" , 630, "029", URGN_TERRITORY, "019" }, 28259d709d503bab6e2b61931737e662dd293b40578ccornelius { "PS" , 275, "145", URGN_TERRITORY, "142" }, 28359d709d503bab6e2b61931737e662dd293b40578ccornelius { "PT" , 620, "039", URGN_TERRITORY, "150" }, 28459d709d503bab6e2b61931737e662dd293b40578ccornelius { "PW" , 585, "057", URGN_TERRITORY, "009" }, 28559d709d503bab6e2b61931737e662dd293b40578ccornelius { "PY" , 600, "005", URGN_TERRITORY, "019" }, 28659d709d503bab6e2b61931737e662dd293b40578ccornelius { "QA" , 634, "145", URGN_TERRITORY, "142" }, 28759d709d503bab6e2b61931737e662dd293b40578ccornelius { "QO" , 961, "009", URGN_SUBCONTINENT, "009" }, 28859d709d503bab6e2b61931737e662dd293b40578ccornelius { "QU" , 967, NULL, URGN_GROUPING, NULL }, 28959d709d503bab6e2b61931737e662dd293b40578ccornelius { "RE" , 638, "014", URGN_TERRITORY, "002" }, 29059d709d503bab6e2b61931737e662dd293b40578ccornelius { "RO" , 642, "151", URGN_TERRITORY, "150" }, 29159d709d503bab6e2b61931737e662dd293b40578ccornelius { "RS" , 688, "039", URGN_TERRITORY, "150" }, 29259d709d503bab6e2b61931737e662dd293b40578ccornelius { "RU" , 643, "151", URGN_TERRITORY, "150" }, 29359d709d503bab6e2b61931737e662dd293b40578ccornelius { "RW" , 646, "014", URGN_TERRITORY, "002" }, 29459d709d503bab6e2b61931737e662dd293b40578ccornelius { "SA" , 682, "145", URGN_TERRITORY, "142" }, 29559d709d503bab6e2b61931737e662dd293b40578ccornelius { "SB" , 90, "054", URGN_TERRITORY, "009" }, 29659d709d503bab6e2b61931737e662dd293b40578ccornelius { "SC" , 690, "014", URGN_TERRITORY, "002" }, 29759d709d503bab6e2b61931737e662dd293b40578ccornelius { "SD" , 729, "015", URGN_TERRITORY, "002" }, 29859d709d503bab6e2b61931737e662dd293b40578ccornelius { "SE" , 752, "154", URGN_TERRITORY, "150" }, 29959d709d503bab6e2b61931737e662dd293b40578ccornelius { "SG" , 702, "035", URGN_TERRITORY, "142" }, 30059d709d503bab6e2b61931737e662dd293b40578ccornelius { "SH" , 654, "011", URGN_TERRITORY, "002" }, 30159d709d503bab6e2b61931737e662dd293b40578ccornelius { "SI" , 705, "039", URGN_TERRITORY, "150" }, 30259d709d503bab6e2b61931737e662dd293b40578ccornelius { "SJ" , 744, "154", URGN_TERRITORY, "150" }, 30359d709d503bab6e2b61931737e662dd293b40578ccornelius { "SK" , 703, "151", URGN_TERRITORY, "150" }, 30459d709d503bab6e2b61931737e662dd293b40578ccornelius { "SL" , 694, "011", URGN_TERRITORY, "002" }, 30559d709d503bab6e2b61931737e662dd293b40578ccornelius { "SM" , 674, "039", URGN_TERRITORY, "150" }, 30659d709d503bab6e2b61931737e662dd293b40578ccornelius { "SN" , 686, "011", URGN_TERRITORY, "002" }, 30759d709d503bab6e2b61931737e662dd293b40578ccornelius { "SO" , 706, "014", URGN_TERRITORY, "002" }, 30859d709d503bab6e2b61931737e662dd293b40578ccornelius { "SR" , 740, "005", URGN_TERRITORY, "019" }, 30959d709d503bab6e2b61931737e662dd293b40578ccornelius { "SS" , 728, "015", URGN_TERRITORY, "002" }, 31059d709d503bab6e2b61931737e662dd293b40578ccornelius { "ST" , 678, "017", URGN_TERRITORY, "002" }, 31159d709d503bab6e2b61931737e662dd293b40578ccornelius { "SU" , 810, NULL , URGN_DEPRECATED , NULL}, 31259d709d503bab6e2b61931737e662dd293b40578ccornelius { "SV" , 222, "013", URGN_TERRITORY, "019" }, 31359d709d503bab6e2b61931737e662dd293b40578ccornelius { "SX" , 534, "029", URGN_TERRITORY, "019" }, 31459d709d503bab6e2b61931737e662dd293b40578ccornelius { "SY" , 760, "145", URGN_TERRITORY, "142" }, 31559d709d503bab6e2b61931737e662dd293b40578ccornelius { "SZ" , 748, "018", URGN_TERRITORY, "002" }, 31659d709d503bab6e2b61931737e662dd293b40578ccornelius { "TA" , -1, "QO", URGN_TERRITORY, "009" }, 31759d709d503bab6e2b61931737e662dd293b40578ccornelius { "TC" , 796, "029", URGN_TERRITORY, "019" }, 31859d709d503bab6e2b61931737e662dd293b40578ccornelius { "TD" , 148, "017", URGN_TERRITORY, "002" }, 31959d709d503bab6e2b61931737e662dd293b40578ccornelius { "TF" , 260, "QO" , URGN_TERRITORY, "009" }, 32059d709d503bab6e2b61931737e662dd293b40578ccornelius { "TG" , 768, "011", URGN_TERRITORY, "002" }, 32159d709d503bab6e2b61931737e662dd293b40578ccornelius { "TH" , 764, "035", URGN_TERRITORY, "142" }, 32259d709d503bab6e2b61931737e662dd293b40578ccornelius { "TJ" , 762, "143", URGN_TERRITORY, "142" }, 32359d709d503bab6e2b61931737e662dd293b40578ccornelius { "TK" , 772, "061", URGN_TERRITORY, "009" }, 32459d709d503bab6e2b61931737e662dd293b40578ccornelius { "TL" , 626, "035", URGN_TERRITORY, "142" }, 32559d709d503bab6e2b61931737e662dd293b40578ccornelius { "TM" , 795, "143", URGN_TERRITORY, "142" }, 32659d709d503bab6e2b61931737e662dd293b40578ccornelius { "TN" , 788, "015", URGN_TERRITORY, "002" }, 32759d709d503bab6e2b61931737e662dd293b40578ccornelius { "TO" , 776, "061", URGN_TERRITORY, "009" }, 32859d709d503bab6e2b61931737e662dd293b40578ccornelius { "TP" , 626, "035", URGN_TERRITORY, "142" }, 32959d709d503bab6e2b61931737e662dd293b40578ccornelius { "TR" , 792, "145", URGN_TERRITORY, "142" }, 33059d709d503bab6e2b61931737e662dd293b40578ccornelius { "TT" , 780, "029", URGN_TERRITORY, "019" }, 33159d709d503bab6e2b61931737e662dd293b40578ccornelius { "TV" , 798, "061", URGN_TERRITORY, "009" }, 33259d709d503bab6e2b61931737e662dd293b40578ccornelius { "TW" , 158, "030", URGN_TERRITORY, "142" }, 33359d709d503bab6e2b61931737e662dd293b40578ccornelius { "TZ" , 834, "014", URGN_TERRITORY, "002" }, 33459d709d503bab6e2b61931737e662dd293b40578ccornelius { "UA" , 804, "151", URGN_TERRITORY, "150" }, 33559d709d503bab6e2b61931737e662dd293b40578ccornelius { "UG" , 800, "014", URGN_TERRITORY, "002" }, 33659d709d503bab6e2b61931737e662dd293b40578ccornelius { "UM" , 581, "QO" , URGN_TERRITORY, "009" }, 33759d709d503bab6e2b61931737e662dd293b40578ccornelius { "US" , 840, "021", URGN_TERRITORY, "019" }, 33859d709d503bab6e2b61931737e662dd293b40578ccornelius { "UY" , 858, "005", URGN_TERRITORY, "019" }, 33959d709d503bab6e2b61931737e662dd293b40578ccornelius { "UZ" , 860, "143", URGN_TERRITORY, "142" }, 34059d709d503bab6e2b61931737e662dd293b40578ccornelius { "VA" , 336, "039", URGN_TERRITORY, "150" }, 34159d709d503bab6e2b61931737e662dd293b40578ccornelius { "VC" , 670, "029", URGN_TERRITORY, "019" }, 34259d709d503bab6e2b61931737e662dd293b40578ccornelius { "VE" , 862, "005", URGN_TERRITORY, "019" }, 34359d709d503bab6e2b61931737e662dd293b40578ccornelius { "VG" , 92, "029", URGN_TERRITORY, "019" }, 34459d709d503bab6e2b61931737e662dd293b40578ccornelius { "VI" , 850, "029", URGN_TERRITORY, "019" }, 34559d709d503bab6e2b61931737e662dd293b40578ccornelius { "VN" , 704, "035", URGN_TERRITORY, "142" }, 34659d709d503bab6e2b61931737e662dd293b40578ccornelius { "VU" , 548, "054", URGN_TERRITORY, "009" }, 34759d709d503bab6e2b61931737e662dd293b40578ccornelius { "WF" , 876, "061", URGN_TERRITORY, "009" }, 34859d709d503bab6e2b61931737e662dd293b40578ccornelius { "WS" , 882, "061", URGN_TERRITORY, "009" }, 34959d709d503bab6e2b61931737e662dd293b40578ccornelius { "YD" , 887, "145", URGN_TERRITORY, "142" }, 35059d709d503bab6e2b61931737e662dd293b40578ccornelius { "YE" , 887, "145", URGN_TERRITORY, "142" }, 35159d709d503bab6e2b61931737e662dd293b40578ccornelius { "YT" , 175, "014", URGN_TERRITORY, "002" }, 35259d709d503bab6e2b61931737e662dd293b40578ccornelius { "ZA" , 710, "018", URGN_TERRITORY, "002" }, 35359d709d503bab6e2b61931737e662dd293b40578ccornelius { "ZM" , 894, "014", URGN_TERRITORY, "002" }, 35459d709d503bab6e2b61931737e662dd293b40578ccornelius { "ZR" , 180, "017", URGN_TERRITORY, "002" }, 35559d709d503bab6e2b61931737e662dd293b40578ccornelius { "ZW" , 716, "014", URGN_TERRITORY, "002" }, 35659d709d503bab6e2b61931737e662dd293b40578ccornelius { "ZZ" , 999, NULL , URGN_UNKNOWN, NULL }, 35759d709d503bab6e2b61931737e662dd293b40578ccornelius { NULL , 0, NULL , URGN_UNKNOWN, NULL } /* terminator */ 35859d709d503bab6e2b61931737e662dd293b40578ccornelius }; 35959d709d503bab6e2b61931737e662dd293b40578ccornelius 36059d709d503bab6e2b61931737e662dd293b40578ccornelius 36159d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestKnownRegions() { 36259d709d503bab6e2b61931737e662dd293b40578ccornelius const KnownRegion * rd; 36359d709d503bab6e2b61931737e662dd293b40578ccornelius for (rd = knownRegions; rd->code != NULL ; rd++ ) { 36459d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status = U_ZERO_ERROR; 36559d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *r = uregion_getRegionFromCode(rd->code, &status); 36659d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 36759d709d503bab6e2b61931737e662dd293b40578ccornelius int32_t n = uregion_getNumericCode(r); 36859d709d503bab6e2b61931737e662dd293b40578ccornelius int32_t e = rd->numeric; 36959d709d503bab6e2b61931737e662dd293b40578ccornelius if ( n != e ) { 37059d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Numeric code mismatch for region %s. Expected:%d Got:%d\n", uregion_getRegionCode(r), e, n ); 37159d709d503bab6e2b61931737e662dd293b40578ccornelius } 37259d709d503bab6e2b61931737e662dd293b40578ccornelius if (uregion_getType(r) != rd->type) { 37359d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Expected region %s to be of type %d. Got: %d\n", uregion_getRegionCode(r), rd->type, uregion_getType(r) ); 37459d709d503bab6e2b61931737e662dd293b40578ccornelius } 37559d709d503bab6e2b61931737e662dd293b40578ccornelius if ( e > 0 ) { 37659d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *ncRegion = uregion_getRegionFromNumericCode(e, &status); 37759d709d503bab6e2b61931737e662dd293b40578ccornelius if ( !uregion_areEqual(ncRegion, r) && e != 891 ) { // 891 is special case - CS and YU both deprecated codes for region 891 37859d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Creating region %s by its numeric code returned a different region. Got: %s instead.\n", 37959d709d503bab6e2b61931737e662dd293b40578ccornelius uregion_getRegionCode(r), uregion_getRegionCode(ncRegion) ); 38059d709d503bab6e2b61931737e662dd293b40578ccornelius } 38159d709d503bab6e2b61931737e662dd293b40578ccornelius } 38259d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 38359d709d503bab6e2b61931737e662dd293b40578ccornelius log_data_err("ERROR: Known region %s was not recognized.\n", rd->code); 38459d709d503bab6e2b61931737e662dd293b40578ccornelius } 38559d709d503bab6e2b61931737e662dd293b40578ccornelius } 38659d709d503bab6e2b61931737e662dd293b40578ccornelius} 38759d709d503bab6e2b61931737e662dd293b40578ccornelius 38859d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainedRegions() { 38959d709d503bab6e2b61931737e662dd293b40578ccornelius const KnownRegion * rd; 39059d709d503bab6e2b61931737e662dd293b40578ccornelius for (rd = knownRegions; rd->code != NULL ; rd++ ) { 39159d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status = U_ZERO_ERROR; 39259d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *r = uregion_getRegionFromCode(rd->code, &status); 39359d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 39459d709d503bab6e2b61931737e662dd293b40578ccornelius UEnumeration *containedRegions; 39559d709d503bab6e2b61931737e662dd293b40578ccornelius const char *crID; 39659d709d503bab6e2b61931737e662dd293b40578ccornelius if (uregion_getType(r) == URGN_GROUPING) { 39759d709d503bab6e2b61931737e662dd293b40578ccornelius continue; 39859d709d503bab6e2b61931737e662dd293b40578ccornelius } 39959d709d503bab6e2b61931737e662dd293b40578ccornelius containedRegions = uregion_getContainedRegions(r, &status); 40059d709d503bab6e2b61931737e662dd293b40578ccornelius if (containedRegions != NULL) { 40159d709d503bab6e2b61931737e662dd293b40578ccornelius while ((crID = uenum_next(containedRegions, NULL, &status)) != NULL && U_SUCCESS(status) ) { 40259d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *cr = uregion_getRegionFromCode(crID, &status); 40359d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *containingRegion = (cr)? uregion_getContainingRegion(cr) : NULL; 40459d709d503bab6e2b61931737e662dd293b40578ccornelius if ( !containingRegion || !uregion_areEqual(containingRegion, r) ) { 40559d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Region: %s contains region %s. Expected containing region of this region to be the original region, but got %s\n", 40659d709d503bab6e2b61931737e662dd293b40578ccornelius uregion_getRegionCode(r), uregion_getRegionCode(cr), (containingRegion)?uregion_getRegionCode(containingRegion):"NULL" ); 40759d709d503bab6e2b61931737e662dd293b40578ccornelius } 40859d709d503bab6e2b61931737e662dd293b40578ccornelius } 40959d709d503bab6e2b61931737e662dd293b40578ccornelius uenum_close(containedRegions); 41059d709d503bab6e2b61931737e662dd293b40578ccornelius } 41159d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 41259d709d503bab6e2b61931737e662dd293b40578ccornelius log_data_err("ERROR: Known region %s was not recognized.\n", rd->code); 41359d709d503bab6e2b61931737e662dd293b40578ccornelius } 41459d709d503bab6e2b61931737e662dd293b40578ccornelius } 41559d709d503bab6e2b61931737e662dd293b40578ccornelius} 41659d709d503bab6e2b61931737e662dd293b40578ccornelius 41759d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainedRegionsWithType() { 41859d709d503bab6e2b61931737e662dd293b40578ccornelius const KnownRegion * rd; 41959d709d503bab6e2b61931737e662dd293b40578ccornelius for (rd = knownRegions; rd->code != NULL ; rd++ ) { 42059d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status = U_ZERO_ERROR; 42159d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *r = uregion_getRegionFromCode(rd->code, &status); 42259d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 42359d709d503bab6e2b61931737e662dd293b40578ccornelius UEnumeration *containedRegions; 42459d709d503bab6e2b61931737e662dd293b40578ccornelius const char *crID; 42559d709d503bab6e2b61931737e662dd293b40578ccornelius if (uregion_getType(r) != URGN_CONTINENT) { 42659d709d503bab6e2b61931737e662dd293b40578ccornelius continue; 42759d709d503bab6e2b61931737e662dd293b40578ccornelius } 42859d709d503bab6e2b61931737e662dd293b40578ccornelius containedRegions = uregion_getContainedRegionsOfType(r, URGN_TERRITORY, &status); 42959d709d503bab6e2b61931737e662dd293b40578ccornelius if (containedRegions != NULL) { 43059d709d503bab6e2b61931737e662dd293b40578ccornelius while ((crID = uenum_next(containedRegions, NULL, &status)) != NULL && U_SUCCESS(status) ) { 43159d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *cr = uregion_getRegionFromCode(crID, &status); 43259d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *containingRegion = (cr)? uregion_getContainingRegionOfType(cr, URGN_CONTINENT) : NULL; 43359d709d503bab6e2b61931737e662dd293b40578ccornelius if ( !containingRegion || !uregion_areEqual(containingRegion, r) ) { 43459d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Continent: %s contains territory %s. Expected containing continent of this region to be the original region, but got %s\n", 43559d709d503bab6e2b61931737e662dd293b40578ccornelius uregion_getRegionCode(r), uregion_getRegionCode(cr), (containingRegion)?uregion_getRegionCode(containingRegion):"NULL" ); 43659d709d503bab6e2b61931737e662dd293b40578ccornelius } 43759d709d503bab6e2b61931737e662dd293b40578ccornelius } 43859d709d503bab6e2b61931737e662dd293b40578ccornelius uenum_close(containedRegions); 43959d709d503bab6e2b61931737e662dd293b40578ccornelius } 44059d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 44159d709d503bab6e2b61931737e662dd293b40578ccornelius log_data_err("ERROR: Known region %s was not recognized.\n", rd->code); 44259d709d503bab6e2b61931737e662dd293b40578ccornelius } 44359d709d503bab6e2b61931737e662dd293b40578ccornelius } 44459d709d503bab6e2b61931737e662dd293b40578ccornelius} 44559d709d503bab6e2b61931737e662dd293b40578ccornelius 44659d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainingRegion() { 44759d709d503bab6e2b61931737e662dd293b40578ccornelius const KnownRegion * rd; 44859d709d503bab6e2b61931737e662dd293b40578ccornelius for (rd = knownRegions; rd->code != NULL ; rd++ ) { 44959d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status = U_ZERO_ERROR; 45059d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *r = uregion_getRegionFromCode(rd->code, &status); 45159d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 45259d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *c = uregion_getContainingRegion(r); 45359d709d503bab6e2b61931737e662dd293b40578ccornelius if (rd->parent == NULL) { 45459d709d503bab6e2b61931737e662dd293b40578ccornelius if ( c ) { 45559d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Containing region for %s should have been NULL. Got: %s\n", uregion_getRegionCode(r), uregion_getRegionCode(c) ); 45659d709d503bab6e2b61931737e662dd293b40578ccornelius } 45759d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 45859d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *p = uregion_getRegionFromCode(rd->parent, &status); 45959d709d503bab6e2b61931737e662dd293b40578ccornelius if ( c == NULL || !uregion_areEqual(p, c) ) { 46059d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Expected containing continent of region %s to be %s. Got: %s\n", 46159d709d503bab6e2b61931737e662dd293b40578ccornelius uregion_getRegionCode(r), (p)?uregion_getRegionCode(p):"NULL", (c)?uregion_getRegionCode(c):"NULL" ); 46259d709d503bab6e2b61931737e662dd293b40578ccornelius } 46359d709d503bab6e2b61931737e662dd293b40578ccornelius } 46459d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 46559d709d503bab6e2b61931737e662dd293b40578ccornelius log_data_err("ERROR: Known region %s was not recognized.\n", rd->code); 46659d709d503bab6e2b61931737e662dd293b40578ccornelius } 46759d709d503bab6e2b61931737e662dd293b40578ccornelius } 46859d709d503bab6e2b61931737e662dd293b40578ccornelius} 46959d709d503bab6e2b61931737e662dd293b40578ccornelius 47059d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetContainingRegionWithType() { 47159d709d503bab6e2b61931737e662dd293b40578ccornelius const KnownRegion * rd; 47259d709d503bab6e2b61931737e662dd293b40578ccornelius for (rd = knownRegions; rd->code != NULL ; rd++ ) { 47359d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status = U_ZERO_ERROR; 47459d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *r = uregion_getRegionFromCode(rd->code, &status); 47559d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 47659d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *c = uregion_getContainingRegionOfType(r, URGN_CONTINENT); 47759d709d503bab6e2b61931737e662dd293b40578ccornelius if (rd->containingContinent == NULL) { 47859d709d503bab6e2b61931737e662dd293b40578ccornelius if ( c != NULL) { 47959d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Containing continent for %s should have been NULL. Got: %s\n", uregion_getRegionCode(r), uregion_getRegionCode(c) ); 48059d709d503bab6e2b61931737e662dd293b40578ccornelius } 48159d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 48259d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *p = uregion_getRegionFromCode(rd->containingContinent, &status); 48359d709d503bab6e2b61931737e662dd293b40578ccornelius if ( !uregion_areEqual(p, c) ) { 48459d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Expected containing continent of region %s to be %s. Got: %s\n", 48559d709d503bab6e2b61931737e662dd293b40578ccornelius uregion_getRegionCode(r), (p)?uregion_getRegionCode(p):"NULL", (c)?uregion_getRegionCode(c):"NULL" ); 48659d709d503bab6e2b61931737e662dd293b40578ccornelius } 48759d709d503bab6e2b61931737e662dd293b40578ccornelius } 48859d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 48959d709d503bab6e2b61931737e662dd293b40578ccornelius log_data_err("ERROR: Known region %s was not recognized.\n", rd->code); 49059d709d503bab6e2b61931737e662dd293b40578ccornelius } 49159d709d503bab6e2b61931737e662dd293b40578ccornelius } 49259d709d503bab6e2b61931737e662dd293b40578ccornelius} 49359d709d503bab6e2b61931737e662dd293b40578ccornelius 49459d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic const char * expectPrefRegions0[] = { "AN","CW","SX","BQ",NULL }; /* Netherlands Antilles */ 49559d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic const char * expectPrefRegions1[] = { "CS","RS","ME",NULL }; /* Serbia & Montenegro */ 49659d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic const char * expectPrefRegions2[] = { "FQ","AQ","TF",NULL }; /* French Southern and Antarctic Territories */ 49759d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic const char * expectPrefRegions3[] = { "NT","IQ","SA",NULL }; /* Neutral Zone */ 49859d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic const char * expectPrefRegions4[] = { "PC","FM","MH","MP","PW",NULL }; /* Pacific Islands Trust Territory */ 49959d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic const char * expectPrefRegions5[] = { "SU","RU","AM","AZ","BY","EE","GE","KZ","KG","LV","LT","MD","TJ","TM","UA","UZ",NULL }; /* Soviet Union */ 50059d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic const char ** expectPrefRegionsTestData[] = { 50159d709d503bab6e2b61931737e662dd293b40578ccornelius expectPrefRegions0, 50259d709d503bab6e2b61931737e662dd293b40578ccornelius expectPrefRegions1, 50359d709d503bab6e2b61931737e662dd293b40578ccornelius expectPrefRegions2, 50459d709d503bab6e2b61931737e662dd293b40578ccornelius expectPrefRegions3, 50559d709d503bab6e2b61931737e662dd293b40578ccornelius expectPrefRegions4, 50659d709d503bab6e2b61931737e662dd293b40578ccornelius expectPrefRegions5, 50759d709d503bab6e2b61931737e662dd293b40578ccornelius NULL 50859d709d503bab6e2b61931737e662dd293b40578ccornelius}; 50959d709d503bab6e2b61931737e662dd293b40578ccornelius 51059d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestGetPreferredValues() { 51159d709d503bab6e2b61931737e662dd293b40578ccornelius const char *** testDataPtr = expectPrefRegionsTestData; 51259d709d503bab6e2b61931737e662dd293b40578ccornelius const char ** regionListPtr; 51359d709d503bab6e2b61931737e662dd293b40578ccornelius while ( (regionListPtr = *testDataPtr++) != NULL ) { 51459d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status = U_ZERO_ERROR; 51559d709d503bab6e2b61931737e662dd293b40578ccornelius const char * deprecatedCode = *regionListPtr++; 51659d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *r = uregion_getRegionFromCode(deprecatedCode, &status); 51759d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 51859d709d503bab6e2b61931737e662dd293b40578ccornelius UEnumeration *preferredRegions = uregion_getPreferredValues(r, &status); 51959d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 52059d709d503bab6e2b61931737e662dd293b40578ccornelius if (preferredRegions != NULL) { 52159d709d503bab6e2b61931737e662dd293b40578ccornelius const char * preferredCode; 52259d709d503bab6e2b61931737e662dd293b40578ccornelius while ( (preferredCode = *regionListPtr++) != NULL ) { 52359d709d503bab6e2b61931737e662dd293b40578ccornelius const char *check; 52459d709d503bab6e2b61931737e662dd293b40578ccornelius UBool found = FALSE; 52559d709d503bab6e2b61931737e662dd293b40578ccornelius uenum_reset(preferredRegions, &status); 52659d709d503bab6e2b61931737e662dd293b40578ccornelius while ((check = uenum_next(preferredRegions, NULL, &status)) != NULL && U_SUCCESS(status) ) { 52759d709d503bab6e2b61931737e662dd293b40578ccornelius if ( !uprv_strcmp(check,preferredCode) ) { 52859d709d503bab6e2b61931737e662dd293b40578ccornelius found = TRUE; 52959d709d503bab6e2b61931737e662dd293b40578ccornelius break; 53059d709d503bab6e2b61931737e662dd293b40578ccornelius } 53159d709d503bab6e2b61931737e662dd293b40578ccornelius } 53259d709d503bab6e2b61931737e662dd293b40578ccornelius if ( !found ) { 53359d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: uregion_getPreferredValues for region \"%s\" should have contained \"%s\" but it didn't.\n", uregion_getRegionCode(r), preferredCode); 53459d709d503bab6e2b61931737e662dd293b40578ccornelius } 53559d709d503bab6e2b61931737e662dd293b40578ccornelius } 53659d709d503bab6e2b61931737e662dd293b40578ccornelius uenum_close(preferredRegions); 53759d709d503bab6e2b61931737e662dd293b40578ccornelius } 53859d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 53959d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: uregion_getPreferredValues failed for region %s.\n", uregion_getRegionCode(r)); 54059d709d503bab6e2b61931737e662dd293b40578ccornelius } 54159d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 54259d709d503bab6e2b61931737e662dd293b40578ccornelius log_data_err("ERROR: Known region %s was not recognized.\n", deprecatedCode); 54359d709d503bab6e2b61931737e662dd293b40578ccornelius } 54459d709d503bab6e2b61931737e662dd293b40578ccornelius } 54559d709d503bab6e2b61931737e662dd293b40578ccornelius} 54659d709d503bab6e2b61931737e662dd293b40578ccornelius 54759d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void TestContains() { 54859d709d503bab6e2b61931737e662dd293b40578ccornelius const KnownRegion * rd; 54959d709d503bab6e2b61931737e662dd293b40578ccornelius for (rd = knownRegions; rd->code != NULL ; rd++ ) { 55059d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status = U_ZERO_ERROR; 55159d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *r = uregion_getRegionFromCode(rd->code, &status); 55259d709d503bab6e2b61931737e662dd293b40578ccornelius if ( U_SUCCESS(status) ) { 55359d709d503bab6e2b61931737e662dd293b40578ccornelius const URegion *c = uregion_getContainingRegion(r); 55459d709d503bab6e2b61931737e662dd293b40578ccornelius while (c != NULL) { 55559d709d503bab6e2b61931737e662dd293b40578ccornelius if ( !uregion_contains(c, r) ) { 55659d709d503bab6e2b61931737e662dd293b40578ccornelius log_err("ERROR: Region \"%s\" should have contained \"%s\" but it didn't.\n", uregion_getRegionCode(c), uregion_getRegionCode(r) ); 55759d709d503bab6e2b61931737e662dd293b40578ccornelius } 55859d709d503bab6e2b61931737e662dd293b40578ccornelius c = uregion_getContainingRegion(c); 55959d709d503bab6e2b61931737e662dd293b40578ccornelius } 56059d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 56159d709d503bab6e2b61931737e662dd293b40578ccornelius log_data_err("ERROR: Known region %s was not recognized.\n", rd->code); 56259d709d503bab6e2b61931737e662dd293b40578ccornelius } 56359d709d503bab6e2b61931737e662dd293b40578ccornelius } 56459d709d503bab6e2b61931737e662dd293b40578ccornelius} 56559d709d503bab6e2b61931737e662dd293b40578ccornelius 56659d709d503bab6e2b61931737e662dd293b40578ccornelius#endif /* #if !UCONFIG_NO_FORMATTING */ 567