Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: icu46/source/test/cintltst/cctest.c

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « icu46/source/test/cintltst/cconvtst.c ('k') | icu46/source/test/cintltst/ccurrtst.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: icu46/source/test/cintltst/cctest.c
===================================================================
--- icu46/source/test/cintltst/cctest.c (revision 0)
+++ icu46/source/test/cintltst/cctest.c (revision 0)
@@ -0,0 +1,97 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (c) 1997-2010, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+
+#include "unicode/ucnv.h"
+#include "unicode/ucnv_err.h"
+
+#include "cintltst.h"
+#include "ustr_cnv.h"
+#include <string.h>
+void TestDefaultConverterError(void); /* keep gcc happy */
+void TestDefaultConverterSet(void); /* keep gcc happy */
+
+
+/* This makes sure that a converter isn't leaked when an error is passed to
+ u_getDefaultConverter */
+void TestDefaultConverterError(void) {
+ UErrorCode err = U_ZERO_ERROR;
+
+ /* Remove the default converter */
+ ucnv_close(u_getDefaultConverter(&err));
+
+ if (U_FAILURE(err)) {
+ log_err("Didn't expect a failure yet %s\n", myErrorName(err));
+ return;
+ }
+
+ /* Set to any radom error state */
+ err = U_FILE_ACCESS_ERROR;
+ if (u_getDefaultConverter(&err) != NULL) {
+ log_err("Didn't expect to get a converter on a failure\n");
+ }
+}
+
+/* Get the default converter. Copy its name. Put it back. */
+static void copyDefaultConverterName(char *out, UErrorCode *status) {
+ UConverter *defConv;
+ const char *itsName;
+ out[0]=0;
+ if(U_FAILURE(*status)) return;
+ defConv = u_getDefaultConverter(status);
+ /* get its name */
+ itsName = ucnv_getName(defConv, status);
+ if(U_FAILURE(*status)) return;
+ strcpy(out, itsName);
+ /* put it back. */
+ u_releaseDefaultConverter(defConv);
+}
+
+/*
+ Changing the default name may not affect the actual name from u_getDefaultConverter
+ ( for example, if UTF-8 is the fixed converter ).
+ But, if it does cause a change, that change should be reflected when the converter is
+ set back.
+*/
+void TestDefaultConverterSet(void) {
+ UErrorCode status = U_ZERO_ERROR;
+ static char defaultName[UCNV_MAX_CONVERTER_NAME_LENGTH + 1];
+ static char nameBeforeSet[UCNV_MAX_CONVERTER_NAME_LENGTH + 1];
+ static char nameAfterSet[UCNV_MAX_CONVERTER_NAME_LENGTH + 1];
+ static char nameAfterRestore[UCNV_MAX_CONVERTER_NAME_LENGTH + 1];
+ static const char SET_TO[]="iso-8859-3";
+ strcpy(defaultName, ucnv_getDefaultName());
+
+ log_verbose("getDefaultName returned %s\n", defaultName);
+
+ /* first, flush any extant converter */
+ u_flushDefaultConverter();
+ copyDefaultConverterName(nameBeforeSet, &status);
+ log_verbose("name from u_getDefaultConverter() = %s\n", nameBeforeSet);
+ u_flushDefaultConverter();
+ ucnv_setDefaultName(SET_TO);
+ copyDefaultConverterName(nameAfterSet, &status);
+ log_verbose("name from u_getDefaultConverter() after set to %s (%s) = %s\n", SET_TO, ucnv_getDefaultName(), nameAfterSet);
+ ucnv_setDefaultName(defaultName);
+ copyDefaultConverterName(nameAfterRestore, &status);
+ log_verbose("name from u_getDefaultConverter() after restore = %s\n", nameAfterRestore);
+ u_flushDefaultConverter();
+
+ if(U_FAILURE(status)) {
+ log_err("Error in test: %s\n", u_errorName(status));
+ } else {
+ if(!strcmp(nameBeforeSet, nameAfterSet)) { /* changing the default didn't affect. */
+ log_info("Skipping test: ucnv_setDefaultName() did not affect actual name of %s\n", nameBeforeSet);
+ } else {
+ if(strcmp(nameBeforeSet, nameAfterRestore)) {
+ log_err("Error: u_getDefaultConverter() is still returning %s (expected %s) even though default converter was set back to %s (was %s)\n", nameAfterRestore, nameBeforeSet, defaultName , SET_TO);
+ } else {
+ log_verbose("Test passed. \n");
+ }
+ }
+ }
+}
+
+
Property changes on: icu46/source/test/cintltst/cctest.c
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « icu46/source/test/cintltst/cconvtst.c ('k') | icu46/source/test/cintltst/ccurrtst.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698