+
+static void TestCLDRVersion(void) {
+ UVersionInfo zeroVersion;
+ UVersionInfo testExpect;
+ UVersionInfo testCurrent;
+ UVersionInfo cldrVersion;
+ char tmp[200];
+ UErrorCode status = U_ZERO_ERROR;
+
+ /* setup the constant value */
+ u_versionFromString(zeroVersion, "0.0.0.0");
+
+ /* test CLDR value from API */
+ ulocdata_getCLDRVersion(cldrVersion, &status);
+ if(U_FAILURE(status)) {
+ /* the show is pretty much over at this point */
+ log_err_status(status, "FAIL: ulocdata_getCLDRVersion() returned %s\n", u_errorName(status));
+ return;
+ } else {
+ u_versionToString(cldrVersion, tmp);
+ log_info("ulocdata_getCLDRVersion() returned: '%s'\n", tmp);
+ }
+
+
+ /* setup from resource bundle */
+ {
+ UResourceBundle *res;
+ const char *testdatapath;
+
+ status = U_ZERO_ERROR;
+ testdatapath = loadTestData(&status);
+ if(U_FAILURE(status)) {
+ log_data_err("Could not load testdata.dat - %s\n", u_errorName(status));
+ return;
+ }
+
+ res = ures_openDirect(testdatapath, "root", &status);
+ if(U_FAILURE(status)) {
+ log_err("Unable to ures_open(testdata, \"\") - %s\n", u_errorName(status
+));
+ return;
+ }
+ ures_getVersionByKey(res, "ExpectCLDRVersionAtLeast", testExpect, &status);
+ ures_getVersionByKey(res, "CurrentCLDRVersion", testCurrent, &status);
+ ures_close(res);
+ if(U_FAILURE(status)) {
+ log_err("Unable to get test data for CLDR version - %s\n", u_errorName(status));
+ }
+ }
+ if(U_FAILURE(status)) return;
+
+
+ u_versionToString(testExpect,tmp);
+ log_verbose("(data) ExpectCLDRVersionAtLeast { %s }\n", tmp);
+ if(memcmp(cldrVersion, testExpect, sizeof(UVersionInfo)) < 0) {
+ log_data_err("CLDR version is too old, expect at least %s.", tmp);
+ }
+ u_versionToString(testCurrent,tmp);
+ log_verbose("(data) CurrentCLDRVersion { %s }\n", tmp);
+ switch(memcmp(cldrVersion, testCurrent, sizeof(UVersionInfo))) {
+ case 0: break; /* OK- current. */
+ case -1: log_info("CLDR version is behind 'current' (for testdata/root.txt) %s. Some things may fail.\n", tmp); break;
+ case 1: log_info("CLDR version is ahead of 'current' (for testdata/root.txt) %s. Some things may fail.\n", tmp); break;
+ }
+
+}