18393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/*********************************************************************** 28393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * COPYRIGHT: 38393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Copyright (c) 2013, International Business Machines Corporation 48393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * and others. All Rights Reserved. 58393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius ***********************************************************************/ 68393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 78393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/*********************************************************************** 88393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * This testcase ported from ICU4J ( RegionTest.java ) to ICU4C * 98393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Try to keep them in sync if at all possible...! * 108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius ***********************************************************************/ 118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "unicode/utypes.h" 138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "cstring.h" 148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#if !UCONFIG_NO_FORMATTING 168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "unicode/region.h" 188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "regiontst.h" 198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliustypedef struct KnownRegion { 218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *code; 228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t numeric; 238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *parent; 248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius URegionType type; 258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *containingContinent; 268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} KnownRegion; 278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LENGTHOF(array) (int32_t)(sizeof(array) / sizeof((array)[0])) 298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusstatic KnownRegion knownRegions[] = { 318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Code, Num, Parent, Type, Containing Continent 328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TP" , 626, "035", URGN_TERRITORY, "142" }, 338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "001", 1, NULL , URGN_WORLD, NULL }, 348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "002", 2, "001", URGN_CONTINENT, NULL }, 358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "003", 3, NULL, URGN_GROUPING, NULL }, 368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "005", 5, "019", URGN_SUBCONTINENT, "019" }, 378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "009", 9, "001", URGN_CONTINENT, NULL}, 388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "011", 11, "002", URGN_SUBCONTINENT, "002" }, 398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "013", 13, "019", URGN_SUBCONTINENT, "019" }, 408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "014", 14, "002", URGN_SUBCONTINENT, "002" }, 418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "015", 15, "002", URGN_SUBCONTINENT, "002" }, 428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "017", 17, "002", URGN_SUBCONTINENT, "002" }, 438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "018", 18, "002", URGN_SUBCONTINENT, "002" }, 448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "019", 19, "001", URGN_CONTINENT, NULL }, 458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "021", 21, "019", URGN_SUBCONTINENT, "019" }, 468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "029", 29, "019", URGN_SUBCONTINENT, "019" }, 478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "030", 30, "142", URGN_SUBCONTINENT, "142" }, 488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "034", 34, "142", URGN_SUBCONTINENT, "142" }, 498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "035", 35, "142", URGN_SUBCONTINENT, "142" }, 508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "039", 39, "150", URGN_SUBCONTINENT, "150"}, 518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "053", 53, "009", URGN_SUBCONTINENT, "009" }, 528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "054", 54, "009", URGN_SUBCONTINENT, "009" }, 538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "057", 57, "009", URGN_SUBCONTINENT, "009" }, 548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "061", 61, "009", URGN_SUBCONTINENT, "009" }, 558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "142", 142, "001", URGN_CONTINENT, NULL }, 568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "143", 143, "142", URGN_SUBCONTINENT, "142" }, 578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "145", 145, "142", URGN_SUBCONTINENT, "142" }, 588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "150", 150, "001", URGN_CONTINENT, NULL }, 598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "151", 151, "150", URGN_SUBCONTINENT, "150" }, 608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "154", 154, "150", URGN_SUBCONTINENT, "150" }, 618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "155", 155, "150", URGN_SUBCONTINENT, "150" }, 628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "419", 419, NULL, URGN_GROUPING , NULL}, 638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AC" , -1, "QO" , URGN_TERRITORY, "009" }, 648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AD" , 20, "039", URGN_TERRITORY, "150" }, 658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AE" , 784, "145", URGN_TERRITORY, "142" }, 668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AF" , 4, "034", URGN_TERRITORY, "142" }, 678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AG" , 28, "029", URGN_TERRITORY, "019" }, 688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AI" , 660, "029", URGN_TERRITORY, "019" }, 698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AL" , 8, "039", URGN_TERRITORY, "150" }, 708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AM" , 51, "145", URGN_TERRITORY, "142" }, 718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AN" , 530, NULL, URGN_DEPRECATED, NULL }, 728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AO" , 24, "017", URGN_TERRITORY, "002" }, 738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AQ" , 10, "QO" , URGN_TERRITORY, "009" }, 748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AR" , 32, "005", URGN_TERRITORY, "019" }, 758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AS" , 16, "061", URGN_TERRITORY, "009" }, 768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AT" , 40, "155", URGN_TERRITORY, "150" }, 778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AU" , 36, "053", URGN_TERRITORY, "009" }, 788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AW" , 533, "029", URGN_TERRITORY, "019" }, 798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AX" , 248, "154", URGN_TERRITORY, "150" }, 808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AZ" , 31, "145", URGN_TERRITORY, "142" }, 818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BA" , 70, "039", URGN_TERRITORY, "150" }, 828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BB" , 52, "029", URGN_TERRITORY, "019" }, 838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BD" , 50, "034", URGN_TERRITORY, "142" }, 848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BE" , 56, "155", URGN_TERRITORY, "150" }, 858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BF" , 854, "011", URGN_TERRITORY, "002" }, 868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BG" , 100, "151", URGN_TERRITORY, "150" }, 878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BH" , 48, "145", URGN_TERRITORY, "142" }, 888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BI" , 108, "014", URGN_TERRITORY, "002" }, 898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BJ" , 204, "011", URGN_TERRITORY, "002" }, 908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BL" , 652, "029", URGN_TERRITORY, "019" }, 918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BM" , 60, "021", URGN_TERRITORY, "019" }, 928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BN" , 96, "035", URGN_TERRITORY, "142" }, 938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BO" , 68, "005", URGN_TERRITORY, "019" }, 948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BQ" , 535, "029", URGN_TERRITORY, "019" }, 958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BR" , 76, "005", URGN_TERRITORY, "019" }, 968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BS" , 44, "029", URGN_TERRITORY, "019" }, 978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BT" , 64, "034", URGN_TERRITORY, "142" }, 988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BU" , 104, "035", URGN_TERRITORY, "142" }, 998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BV" , 74, "QO" , URGN_TERRITORY, "009" }, 1008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BW" , 72, "018", URGN_TERRITORY, "002" }, 1018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BY" , 112, "151", URGN_TERRITORY, "150" }, 1028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "BZ" , 84, "013", URGN_TERRITORY, "019" }, 1038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CA" , 124, "021", URGN_TERRITORY, "019" }, 1048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CC" , 166, "QO" , URGN_TERRITORY, "009" }, 1058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CD" , 180, "017", URGN_TERRITORY, "002" }, 1068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CF" , 140, "017", URGN_TERRITORY, "002" }, 1078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CG" , 178, "017", URGN_TERRITORY, "002" }, 1088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CH" , 756, "155", URGN_TERRITORY, "150" }, 1098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CI" , 384, "011", URGN_TERRITORY, "002" }, 1108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CK" , 184, "061", URGN_TERRITORY, "009" }, 1118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CL" , 152, "005", URGN_TERRITORY, "019" }, 1128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CM" , 120, "017", URGN_TERRITORY, "002" }, 1138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CN" , 156, "030", URGN_TERRITORY, "142" }, 1148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CO" , 170, "005", URGN_TERRITORY, "019" }, 1158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CP" , -1 , "QO" , URGN_TERRITORY, "009" }, 1168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CR" , 188, "013", URGN_TERRITORY, "019" }, 1178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CU" , 192, "029", URGN_TERRITORY, "019" }, 1188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CV" , 132, "011", URGN_TERRITORY, "002" }, 1198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CW" , 531, "029", URGN_TERRITORY, "019" }, 1208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CX" , 162, "QO" , URGN_TERRITORY, "009" }, 1218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CY" , 196, "145", URGN_TERRITORY, "142" }, 1228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CZ" , 203, "151", URGN_TERRITORY, "150" }, 1238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DD" , 276, "155", URGN_TERRITORY, "150" }, 1248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DE" , 276, "155", URGN_TERRITORY, "150" }, 1258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DG" , -1 , "QO" , URGN_TERRITORY, "009" }, 1268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DJ" , 262, "014", URGN_TERRITORY, "002" }, 1278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DK" , 208, "154", URGN_TERRITORY, "150" }, 1288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DM" , 212, "029", URGN_TERRITORY, "019" }, 1298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DO" , 214, "029", URGN_TERRITORY, "019" }, 1308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DZ" , 12, "015", URGN_TERRITORY, "002" }, 1318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "EA" , -1, "015", URGN_TERRITORY, "002" }, 1328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "EC" , 218, "005", URGN_TERRITORY, "019" }, 1338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "EE" , 233, "154", URGN_TERRITORY, "150" }, 1348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "EG" , 818, "015", URGN_TERRITORY, "002" }, 1358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "EH" , 732, "015", URGN_TERRITORY, "002" }, 1368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ER" , 232, "014", URGN_TERRITORY, "002" }, 1378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ES" , 724, "039", URGN_TERRITORY, "150" }, 1388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ET" , 231, "014", URGN_TERRITORY, "002" }, 1398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "EU" , 967, NULL, URGN_GROUPING, NULL }, 1408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FI" , 246, "154", URGN_TERRITORY, "150" }, 1418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FJ" , 242, "054", URGN_TERRITORY, "009" }, 1428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FK" , 238, "005", URGN_TERRITORY, "019" }, 1438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FM" , 583, "057", URGN_TERRITORY, "009" }, 1448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FO" , 234, "154", URGN_TERRITORY, "150" }, 1458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FR" , 250, "155", URGN_TERRITORY, "150" }, 1468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FX" , 250, "155", URGN_TERRITORY, "150" }, 1478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GA" , 266, "017", URGN_TERRITORY, "002" }, 1488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GB" , 826, "154", URGN_TERRITORY, "150" }, 1498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GD" , 308, "029", URGN_TERRITORY, "019" }, 1508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GE" , 268, "145", URGN_TERRITORY, "142" }, 1518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GF" , 254, "005", URGN_TERRITORY, "019" }, 1528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GG" , 831, "154", URGN_TERRITORY, "150" }, 1538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GH" , 288, "011", URGN_TERRITORY, "002" }, 1548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GI" , 292, "039", URGN_TERRITORY, "150" }, 1558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GL" , 304, "021", URGN_TERRITORY, "019" }, 1568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GM" , 270, "011", URGN_TERRITORY, "002" }, 1578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GN" , 324, "011", URGN_TERRITORY, "002" }, 1588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GP" , 312, "029", URGN_TERRITORY, "019" }, 1598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GQ" , 226, "017", URGN_TERRITORY, "002" }, 1608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GR" , 300, "039", URGN_TERRITORY, "150" }, 1618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GS" , 239, "QO" , URGN_TERRITORY, "009" }, 1628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GT" , 320, "013", URGN_TERRITORY, "019" }, 1638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GU" , 316, "057", URGN_TERRITORY, "009" }, 1648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GW" , 624, "011", URGN_TERRITORY, "002" }, 1658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "GY" , 328, "005", URGN_TERRITORY, "019" }, 1668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "HK" , 344, "030", URGN_TERRITORY, "142" }, 1678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "HM" , 334, "QO" , URGN_TERRITORY, "009" }, 1688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "HN" , 340, "013", URGN_TERRITORY, "019" }, 1698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "HR" , 191, "039", URGN_TERRITORY, "150" }, 1708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "HT" , 332, "029", URGN_TERRITORY, "019" }, 1718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "HU" , 348, "151", URGN_TERRITORY, "150" }, 1728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IC" , -1, "015", URGN_TERRITORY, "002" }, 1738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ID" , 360, "035", URGN_TERRITORY, "142" }, 1748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IE" , 372, "154", URGN_TERRITORY, "150" }, 1758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IL" , 376, "145", URGN_TERRITORY, "142" }, 1768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IM" , 833, "154", URGN_TERRITORY, "150" }, 1778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IN" , 356, "034", URGN_TERRITORY, "142" }, 1788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IO" , 86, "QO" , URGN_TERRITORY, "009" }, 1798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IQ" , 368, "145", URGN_TERRITORY, "142" }, 1808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IR" , 364, "034", URGN_TERRITORY, "142" }, 1818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IS" , 352, "154", URGN_TERRITORY, "150" }, 1828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "IT" , 380, "039", URGN_TERRITORY, "150" }, 1838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "JE" , 832, "154", URGN_TERRITORY, "150" }, 1848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "JM" , 388, "029", URGN_TERRITORY, "019" }, 1858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "JO" , 400, "145", URGN_TERRITORY, "142" }, 1868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "JP" , 392, "030", URGN_TERRITORY, "142" }, 1878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KE" , 404, "014", URGN_TERRITORY, "002" }, 1888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KG" , 417, "143", URGN_TERRITORY, "142" }, 1898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KH" , 116, "035", URGN_TERRITORY, "142" }, 1908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KI" , 296, "057", URGN_TERRITORY, "009" }, 1918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KM" , 174, "014", URGN_TERRITORY, "002" }, 1928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KN" , 659, "029", URGN_TERRITORY, "019" }, 1938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KP" , 408, "030", URGN_TERRITORY, "142" }, 1948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KR" , 410, "030", URGN_TERRITORY, "142" }, 1958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KW" , 414, "145", URGN_TERRITORY, "142" }, 1968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KY" , 136, "029", URGN_TERRITORY, "019" }, 1978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "KZ" , 398, "143", URGN_TERRITORY, "142" }, 1988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LA" , 418, "035", URGN_TERRITORY, "142" }, 1998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LB" , 422, "145", URGN_TERRITORY, "142" }, 2008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LC" , 662, "029", URGN_TERRITORY, "019" }, 2018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LI" , 438, "155", URGN_TERRITORY, "150" }, 2028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LK" , 144, "034", URGN_TERRITORY, "142" }, 2038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LR" , 430, "011", URGN_TERRITORY, "002" }, 2048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LS" , 426, "018", URGN_TERRITORY, "002" }, 2058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LT" , 440, "154", URGN_TERRITORY, "150" }, 2068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LU" , 442, "155", URGN_TERRITORY, "150" }, 2078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LV" , 428, "154", URGN_TERRITORY, "150" }, 2088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "LY" , 434, "015", URGN_TERRITORY, "002" }, 2098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MA" , 504, "015", URGN_TERRITORY, "002" }, 2108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MC" , 492, "155", URGN_TERRITORY, "150" }, 2118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MD" , 498, "151", URGN_TERRITORY, "150" }, 2128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ME" , 499, "039", URGN_TERRITORY, "150" }, 2138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MF" , 663, "029", URGN_TERRITORY, "019" }, 2148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MG" , 450, "014", URGN_TERRITORY, "002" }, 2158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MH" , 584, "057", URGN_TERRITORY, "009" }, 2168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MK" , 807, "039", URGN_TERRITORY, "150" }, 2178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ML" , 466, "011", URGN_TERRITORY, "002" }, 2188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MM" , 104, "035", URGN_TERRITORY, "142" }, 2198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MN" , 496, "030", URGN_TERRITORY, "142" }, 2208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MO" , 446, "030", URGN_TERRITORY, "142" }, 2218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MP" , 580, "057", URGN_TERRITORY, "009" }, 2228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MQ" , 474, "029", URGN_TERRITORY, "019" }, 2238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MR" , 478, "011", URGN_TERRITORY, "002" }, 2248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MS" , 500, "029", URGN_TERRITORY, "019" }, 2258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MT" , 470, "039", URGN_TERRITORY, "150" }, 2268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MU" , 480, "014", URGN_TERRITORY, "002" }, 2278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MV" , 462, "034", URGN_TERRITORY, "142" }, 2288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MW" , 454, "014", URGN_TERRITORY, "002" }, 2298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MX" , 484, "013", URGN_TERRITORY, "019"}, 2308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MY" , 458, "035", URGN_TERRITORY, "142" }, 2318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "MZ" , 508, "014", URGN_TERRITORY, "002" }, 2328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NA" , 516, "018", URGN_TERRITORY, "002" }, 2338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NC" , 540, "054", URGN_TERRITORY, "009" }, 2348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NE" , 562, "011", URGN_TERRITORY, "002" }, 2358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NF" , 574, "053", URGN_TERRITORY, "009" }, 2368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NG" , 566, "011", URGN_TERRITORY, "002" }, 2378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NI" , 558, "013", URGN_TERRITORY, "019" }, 2388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NL" , 528, "155", URGN_TERRITORY, "150" }, 2398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NO" , 578, "154", URGN_TERRITORY, "150" }, 2408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NP" , 524, "034", URGN_TERRITORY, "142" }, 2418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NR" , 520, "057", URGN_TERRITORY, "009" }, 2428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NT" , 536, NULL , URGN_DEPRECATED, NULL }, 2438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NU" , 570, "061", URGN_TERRITORY, "009" }, 2448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NZ" , 554, "053", URGN_TERRITORY, "009" }, 2458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "OM" , 512, "145", URGN_TERRITORY, "142" }, 2468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PA" , 591, "013", URGN_TERRITORY, "019" }, 2478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PE" , 604, "005", URGN_TERRITORY, "019" }, 2488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PF" , 258, "061", URGN_TERRITORY, "009" }, 2498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PG" , 598, "054", URGN_TERRITORY, "009" }, 2508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PH" , 608, "035", URGN_TERRITORY, "142" }, 2518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PK" , 586, "034", URGN_TERRITORY, "142" }, 2528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PL" , 616, "151", URGN_TERRITORY, "150" }, 2538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PM" , 666, "021", URGN_TERRITORY, "019" }, 2548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PN" , 612, "061", URGN_TERRITORY, "009" }, 2558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PR" , 630, "029", URGN_TERRITORY, "019" }, 2568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PS" , 275, "145", URGN_TERRITORY, "142" }, 2578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PT" , 620, "039", URGN_TERRITORY, "150" }, 2588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PW" , 585, "057", URGN_TERRITORY, "009" }, 2598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PY" , 600, "005", URGN_TERRITORY, "019" }, 2608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "QA" , 634, "145", URGN_TERRITORY, "142" }, 2618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "QO" , 961, "009", URGN_SUBCONTINENT, "009" }, 2628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "QU" , 967, NULL, URGN_GROUPING, NULL }, 2638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "RE" , 638, "014", URGN_TERRITORY, "002" }, 2648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "RO" , 642, "151", URGN_TERRITORY, "150" }, 2658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "RS" , 688, "039", URGN_TERRITORY, "150" }, 2668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "RU" , 643, "151", URGN_TERRITORY, "150" }, 2678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "RW" , 646, "014", URGN_TERRITORY, "002" }, 2688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SA" , 682, "145", URGN_TERRITORY, "142" }, 2698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SB" , 90, "054", URGN_TERRITORY, "009" }, 2708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SC" , 690, "014", URGN_TERRITORY, "002" }, 2718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SD" , 729, "015", URGN_TERRITORY, "002" }, 2728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SE" , 752, "154", URGN_TERRITORY, "150" }, 2738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SG" , 702, "035", URGN_TERRITORY, "142" }, 2748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SH" , 654, "011", URGN_TERRITORY, "002" }, 2758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SI" , 705, "039", URGN_TERRITORY, "150" }, 2768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SJ" , 744, "154", URGN_TERRITORY, "150" }, 2778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SK" , 703, "151", URGN_TERRITORY, "150" }, 2788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SL" , 694, "011", URGN_TERRITORY, "002" }, 2798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SM" , 674, "039", URGN_TERRITORY, "150" }, 2808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SN" , 686, "011", URGN_TERRITORY, "002" }, 2818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SO" , 706, "014", URGN_TERRITORY, "002" }, 2828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SR" , 740, "005", URGN_TERRITORY, "019" }, 2838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SS" , 728, "015", URGN_TERRITORY, "002" }, 2848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ST" , 678, "017", URGN_TERRITORY, "002" }, 2858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SU" , 810, NULL , URGN_DEPRECATED , NULL}, 2868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SV" , 222, "013", URGN_TERRITORY, "019" }, 2878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SX" , 534, "029", URGN_TERRITORY, "019" }, 2888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SY" , 760, "145", URGN_TERRITORY, "142" }, 2898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SZ" , 748, "018", URGN_TERRITORY, "002" }, 2908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TA" , -1, "QO", URGN_TERRITORY, "009" }, 2918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TC" , 796, "029", URGN_TERRITORY, "019" }, 2928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TD" , 148, "017", URGN_TERRITORY, "002" }, 2938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TF" , 260, "QO" , URGN_TERRITORY, "009" }, 2948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TG" , 768, "011", URGN_TERRITORY, "002" }, 2958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TH" , 764, "035", URGN_TERRITORY, "142" }, 2968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TJ" , 762, "143", URGN_TERRITORY, "142" }, 2978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TK" , 772, "061", URGN_TERRITORY, "009" }, 2988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TL" , 626, "035", URGN_TERRITORY, "142" }, 2998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TM" , 795, "143", URGN_TERRITORY, "142" }, 3008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TN" , 788, "015", URGN_TERRITORY, "002" }, 3018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TO" , 776, "061", URGN_TERRITORY, "009" }, 3028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TP" , 626, "035", URGN_TERRITORY, "142" }, 3038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TR" , 792, "145", URGN_TERRITORY, "142" }, 3048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TT" , 780, "029", URGN_TERRITORY, "019" }, 3058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TV" , 798, "061", URGN_TERRITORY, "009" }, 3068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TW" , 158, "030", URGN_TERRITORY, "142" }, 3078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "TZ" , 834, "014", URGN_TERRITORY, "002" }, 3088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "UA" , 804, "151", URGN_TERRITORY, "150" }, 3098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "UG" , 800, "014", URGN_TERRITORY, "002" }, 3108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "UM" , 581, "QO" , URGN_TERRITORY, "009" }, 3118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "US" , 840, "021", URGN_TERRITORY, "019" }, 3128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "UY" , 858, "005", URGN_TERRITORY, "019" }, 3138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "UZ" , 860, "143", URGN_TERRITORY, "142" }, 3148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "VA" , 336, "039", URGN_TERRITORY, "150" }, 3158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "VC" , 670, "029", URGN_TERRITORY, "019" }, 3168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "VE" , 862, "005", URGN_TERRITORY, "019" }, 3178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "VG" , 92, "029", URGN_TERRITORY, "019" }, 3188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "VI" , 850, "029", URGN_TERRITORY, "019" }, 3198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "VN" , 704, "035", URGN_TERRITORY, "142" }, 3208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "VU" , 548, "054", URGN_TERRITORY, "009" }, 3218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "WF" , 876, "061", URGN_TERRITORY, "009" }, 3228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "WS" , 882, "061", URGN_TERRITORY, "009" }, 3238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "YD" , 887, "145", URGN_TERRITORY, "142" }, 3248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "YE" , 887, "145", URGN_TERRITORY, "142" }, 3258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "YT" , 175, "014", URGN_TERRITORY, "002" }, 3268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ZA" , 710, "018", URGN_TERRITORY, "002" }, 3278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ZM" , 894, "014", URGN_TERRITORY, "002" }, 3288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ZR" , 180, "017", URGN_TERRITORY, "002" }, 3298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ZW" , 716, "014", URGN_TERRITORY, "002" }, 3308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ZZ" , 999, NULL , URGN_UNKNOWN, NULL } 3318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius }; 3328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius// ***************************************************************************** 3348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius// class RegionTest 3358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius// ***************************************************************************** 3368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusRegionTest::RegionTest() { 3398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 3408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusRegionTest::~RegionTest() { 3428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 3438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid 3458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusRegionTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) 3468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{ 3478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius optionv = (par && *par=='v'); 3488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO_BEGIN; 3508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestKnownRegions); 3518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestGetInstanceString); 3528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestGetInstanceInt); 3538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestGetContainedRegions); 3548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestGetContainedRegionsWithType); 3558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestGetContainingRegion); 3568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestGetContainingRegionWithType); 3578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestGetPreferredValues); 3588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestContains); 3598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestAvailableTerritories); 3608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestNoContainedRegions); 3618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO_END; 3628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 3638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestKnownRegions() { 3668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(knownRegions) ; i++ ) { 3688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius KnownRegion rd = knownRegions[i]; 3698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 3708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(rd.code,status); 3718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( r ) { 3728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t n = r->getNumericCode(); 3738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t e = rd.numeric; 3748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( n != e ) { 3758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Numeric code mismatch for region %s. Expected:%d Got:%d",r->getRegionCode(),e,n); 3768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 3778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r->getType() != rd.type) { 3798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Expected region %s to be of type %d. Got: %d",r->getRegionCode(),rd.type,r->getType()); 3808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 3818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t nc = rd.numeric; 3838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( nc > 0 ) { 3848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *ncRegion = Region::getInstance(nc,status); 3858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( *ncRegion != *r && nc != 891 ) { // 891 is special case - CS and YU both deprecated codes for region 891 3868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Creating region %s by its numeric code returned a different region. Got: %s instead.",r->getRegionCode(),ncRegion->getRegionCode()); 3878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 3888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 3898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 3908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Known region %s was not recognized.",rd.code); 3918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 3928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 3938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 3948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 3958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestGetInstanceString() { 3968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius typedef struct TestData { 3978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *inputID; 3988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *expectedID; 3998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius URegionType expectedType; 4008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } TestData; 4018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius static TestData testData[] = { 4038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Input ID, Expected ID, Expected Type 4048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DE", "DE", URGN_TERRITORY }, // Normal region 4058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "QU", "EU", URGN_GROUPING }, // Alias to a grouping 4068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "DD", "DE", URGN_TERRITORY }, // Alias to a deprecated region (East Germany) with single preferred value 4078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "276", "DE", URGN_TERRITORY }, // Numeric code for Germany 4088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "278", "DE", URGN_TERRITORY }, // Numeric code for East Germany (Deprecated) 4098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SU", "SU", URGN_DEPRECATED }, // Alias to a deprecated region with multiple preferred values 4108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AN", "AN", URGN_DEPRECATED }, // Deprecated region with multiple preferred values 4118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SVK", "SK", URGN_TERRITORY } // 3-letter code - Slovakia 4128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius }; 4138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 4168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance((const char *)NULL,status); 4178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( status != U_ILLEGAL_ARGUMENT_ERROR ) { 4188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Calling Region::getInstance(NULL) should have triggered an U_ILLEGAL_ARGUMENT_ERROR, but didn't."); 4198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius status = U_ZERO_ERROR; 4228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius r = Region::getInstance("BOGUS",status); 4238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( status != U_ILLEGAL_ARGUMENT_ERROR ) { 4248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Calling Region::getInstance(\"BOGUS\") should have triggered an U_ILLEGAL_ARGUMENT_ERROR, but didn't."); 4258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(testData) ; i++ ) { 4298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TestData data = testData[i]; 4308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius status = U_ZERO_ERROR; 4318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius r = Region::getInstance(data.inputID,status); 4328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *id; 4338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius URegionType type; 4348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( r ) { 4358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius id = r->getRegionCode(); 4368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius type = r->getType(); 4378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 4388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius id = "NULL"; 4398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius type = URGN_UNKNOWN; 4408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( uprv_strcmp(id,data.expectedID)) { 4428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Unexpected region ID for Region::getInstance(\"%s\"); Expected: %s Got: %s",data.inputID,data.expectedID,id); 4438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( type != data.expectedType) { 4458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Unexpected region type for Region::getInstance(\"%s\"); Expected: %d Got: %d",data.inputID,data.expectedType,type); 4468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 4498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestGetInstanceInt() { 4518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius typedef struct TestData { 4528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t inputID; 4538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *expectedID; 4548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius URegionType expectedType; 4558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } TestData; 4568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius static TestData testData[] = { 4588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Input ID, Expected ID, Expected Type 4598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { 276, "DE", URGN_TERRITORY }, // Numeric code for Germany 4608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { 278, "DE", URGN_TERRITORY }, // Numeric code for East Germany (Deprecated) 4618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { 419, "419", URGN_GROUPING }, // Latin America 4628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { 736, "SD", URGN_TERRITORY }, // Sudan (pre-2011) - changed numeric code after South Sudan split off 4638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { 729, "SD", URGN_TERRITORY }, // Sudan (post-2011) - changed numeric code after South Sudan split off 4648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius }; 4658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 4678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius Region::getInstance(-123,status); 4688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( status != U_ILLEGAL_ARGUMENT_ERROR ) { 4698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Calling Region::getInstance(-123) should have triggered an U_ILLEGAL_ARGUMENT_ERROR, but didn't."); 4708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(testData) ; i++ ) { 4738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TestData data = testData[i]; 4748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius status = U_ZERO_ERROR; 4758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(data.inputID,status); 4768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *id; 4778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius URegionType type; 4788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( r ) { 4798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius id = r->getRegionCode(); 4808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius type = r->getType(); 4818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 4828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius id = "NULL"; 4838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius type = URGN_UNKNOWN; 4848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( uprv_strcmp(data.expectedID,id)) { 4868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Unexpected region ID for Region.getInstance(%d)); Expected: %s Got: %s",data.inputID,data.expectedID,id); 4878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( data.expectedType != type) { 4898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Unexpected region type for Region.getInstance(%d)); Expected: %d Got: %d",data.inputID,data.expectedType,type); 4908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 4928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 4938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestGetContainedRegions() { 4958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(knownRegions) ; i++ ) { 4968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius KnownRegion rd = knownRegions[i]; 4978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 4988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 4998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(rd.code,status); 5008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r) { 5018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r->getType() == URGN_GROUPING) { 5028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius continue; 5038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius StringEnumeration *containedRegions = r->getContainedRegions(); 5058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for ( int32_t i = 0 ; i < containedRegions->count(status); i++ ) { 5068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *crID = containedRegions->next(NULL,status); 5078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *cr = Region::getInstance(crID,status); 5088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *containingRegion = cr ? cr->getContainingRegion() : NULL; 5098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( !containingRegion || *containingRegion != *r ) { 5108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Region: %s contains region %s. Expected containing region of this region to be the original region, but got %s", 5118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius r->getRegionCode(),cr->getRegionCode(),containingRegion?containingRegion->getRegionCode():"NULL"); 5128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete containedRegions; 5158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 5168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Known region %s was not recognized.",rd.code); 5178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 5208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestGetContainedRegionsWithType() { 5228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(knownRegions) ; i++ ) { 5238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius KnownRegion rd = knownRegions[i]; 5248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 5258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(rd.code,status); 5278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r) { 5288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r->getType() != URGN_CONTINENT) { 5298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius continue; 5308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius StringEnumeration *containedRegions = r->getContainedRegions(URGN_TERRITORY); 5328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for ( int32_t j = 0 ; j < containedRegions->count(status); j++ ) { 5338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *crID = containedRegions->next(NULL,status); 5348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *cr = Region::getInstance(crID,status); 5358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *containingRegion = cr ? cr->getContainingRegion(URGN_CONTINENT) : NULL; 5368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( !containingRegion || *containingRegion != *r ) { 5378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Continent: %s contains territory %s. Expected containing continent of this region to be the original region, but got %s", 5388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius r->getRegionCode(),cr->getRegionCode(),containingRegion?containingRegion->getRegionCode():"NULL"); 5398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete containedRegions; 5428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 5438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Known region %s was not recognized.",rd.code); 5448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 5478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestGetContainingRegion() { 5498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(knownRegions) ; i++ ) { 5508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius KnownRegion rd = knownRegions[i]; 5518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 5528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(rd.code,status); 5538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r) { 5548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *c = r->getContainingRegion(); 5558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (rd.parent == NULL) { 5568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( c ) { 5578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Containing region for %s should have been NULL. Got: %s",r->getRegionCode(),c->getRegionCode()); 5588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 5608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *p = Region::getInstance(rd.parent,status); 5618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( !c || *p != *c ) { 5628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Expected containing continent of region %s to be %s. Got: %s", 5638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius r->getRegionCode(),p?p->getRegionCode():"NULL",c?c->getRegionCode():"NULL" ); 5648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 5678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Known region %s was not recognized.",rd.code); 5688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 5718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestGetContainingRegionWithType() { 5738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(knownRegions) ; i++ ) { 5748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius KnownRegion rd = knownRegions[i]; 5758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 5768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(rd.code,status); 5788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r) { 5798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *c = r->getContainingRegion(URGN_CONTINENT); 5808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (rd.containingContinent == NULL) { 5818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( c != NULL) { 5828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Containing continent for %s should have been NULL. Got: %s",r->getRegionCode(), c->getRegionCode()); 5838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 5858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *p = Region::getInstance(rd.containingContinent,status); 5868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( *p != *c ) { 5878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Expected containing continent of region %s to be %s. Got: %s", 5888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius r->getRegionCode(),p?p->getRegionCode():"NULL",c?c->getRegionCode():"NULL" ); 5898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 5928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Known region %s was not recognized.",rd.code); 5938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 5958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 5968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestGetPreferredValues() { 5988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius static const char *testData[6][17] = { 5998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Input ID, Expected Preferred Values... 6008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "AN", "CW", "SX", "BQ", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // Netherlands Antilles 6018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "CS", "RS", "ME", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // Serbia & Montenegro 6028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "FQ", "AQ", "TF", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // French Southern and Antarctic Territories 6038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "NT", "IQ", "SA", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // Neutral Zone 6048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "PC", "FM", "MH", "MP", "PW", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }, // Pacific Islands Trust Territory 6058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "SU", "RU", "AM", "AZ", "BY", "EE", "GE", "KZ", "KG", "LV", "LT", "MD", "TJ", "TM", "UA", "UZ" , NULL}, // Soviet Union 6068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius }; 6078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for ( int32_t i = 0 ; i < 6 ; i++ ) { 6098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char **data = testData[i]; 6108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 6118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(data[0],status); 6128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r) { 6138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius StringEnumeration *preferredValues = r->getPreferredValues(); 6148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for ( int i = 1 ; data[i] ; i++ ) { 6158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UBool found = FALSE; 6168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius preferredValues->reset(status); 6178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius while ( const char *check = preferredValues->next(NULL,status) ) { 6188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( !uprv_strcmp(check,data[i]) ) { 6198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius found = TRUE; 6208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius break; 6218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( !found ) { 6248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Region::getPreferredValues() for region \"%s\" should have contained \"%s\" but it didn't.",r->getRegionCode(),data[i]); 6258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete preferredValues; 6288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 6298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Known region %s was not recognized.",data[0]); 6308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 6338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestContains() { 6358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < LENGTHOF(knownRegions) ; i++ ) { 6368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius KnownRegion rd = knownRegions[i]; 6378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 6388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *r = Region::getInstance(rd.code,status); 6408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (r) { 6418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *c = r->getContainingRegion(); 6428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius while ( c ) { 6438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( !c->contains(*r)) { 6448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Region \"%s\" should have contained \"%s\" but it didn't.",c->getRegionCode(),r->getRegionCode()); 6458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius c = c->getContainingRegion(); 6478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 6498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Known region %s was not recognized.",rd.code); 6508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 6538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestAvailableTerritories() { 6558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Test to make sure that the set of territories contained in World and the set of all available 6568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // territories are one and the same. 6578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 6588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius StringEnumeration *availableTerritories = Region::getAvailable(URGN_TERRITORY); 6598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *world = Region::getInstance("001",status); 6608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (U_FAILURE(status)) { 6618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Region::getInstance(\"001\",status) failed: %s", u_errorName(status)); 6628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius return; 6638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius StringEnumeration *containedInWorld = world->getContainedRegions(URGN_TERRITORY); 6658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( !availableTerritories || !containedInWorld || *availableTerritories != *containedInWorld ) { 6668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius char availableTerritoriesString[1024] = ""; 6678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius char containedInWorldString[1024] = ""; 6688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( availableTerritories ) { 6698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < availableTerritories->count(status) ; i++ ) { 6708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( i > 0 ) { 6718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_strcat(availableTerritoriesString," "); 6728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_strcat(availableTerritoriesString,availableTerritories->next(NULL,status)); 6748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 6768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_strcpy(availableTerritoriesString,"NULL"); 6778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( containedInWorld ) { 6798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for (int32_t i = 0 ; i < containedInWorld->count(status) ; i++ ) { 6808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( i > 0 ) { 6818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_strcat(containedInWorldString," "); 6828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_strcat(containedInWorldString,containedInWorld->next(NULL,status)); 6848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 6868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_strcpy(containedInWorldString,"NULL"); 6878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Available territories and all territories contained in world should be the same set.\nAvailable = %s\nContained in World = %s", 6898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius availableTerritoriesString,containedInWorldString); 6908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 6918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete availableTerritories; 6928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete containedInWorld; 6938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 6948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid RegionTest::TestNoContainedRegions(void) { 6968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode status = U_ZERO_ERROR; 6978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const Region *region = Region::getInstance("BM",status); 6988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (U_FAILURE(status) || region == NULL) { 6998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dataerrln("Fail called to Region::getInstance(\"BM\", status) - %s", u_errorName(status)); 7008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius return; 7018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 7028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius StringEnumeration *containedRegions = region->getContainedRegions(); 7038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *emptyStr = containedRegions->next(NULL, status); 7048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (U_FAILURE(status)||(emptyStr!=NULL)) { 7058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius errln("Error, 'BM' should have no subregions, but returned str=%p, err=%s\n", emptyStr, u_errorName(status)); 7068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } else { 7078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius logln("Success - BM has no subregions\n"); 7088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 7098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete containedRegions; 7108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 7118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 7128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#endif /* #if !UCONFIG_NO_FORMATTING */ 7138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 7148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius//eof 715