]> granicus.if.org Git - icu/commitdiff
ICU-10822 C wrapper implementation for udat_get.../udat_setBooleanAttribute
authorScott Russell <DTownSMR@gmail.com>
Thu, 10 Apr 2014 19:49:13 +0000 (19:49 +0000)
committerScott Russell <DTownSMR@gmail.com>
Thu, 10 Apr 2014 19:49:13 +0000 (19:49 +0000)
X-SVN-Rev: 35615

icu4c/source/i18n/udat.cpp
icu4c/source/test/cintltst/cdtdptst.c
icu4c/source/test/cintltst/cdtdptst.h

index f28fec673bd2066dfca95ad0bbbfbcba8e5c73be..2a3456d1028a990bcfb3598469d4e9d9c15da105 100644 (file)
@@ -310,6 +310,26 @@ udat_setLenient(    UDateFormat*    fmt,
     ((DateFormat*)fmt)->setLenient(isLenient);
 }
 
+U_DRAFT UBool U_EXPORT2
+udat_getBooleanAttribute(const UDateFormat* fmt, 
+                         UDateFormatBooleanAttribute attr, 
+                         UErrorCode* status)
+{
+    if(U_FAILURE(*status)) return FALSE;
+    return ((DateFormat*)fmt)->getBooleanAttribute(attr, *status);
+    //return FALSE;
+}
+
+U_DRAFT void U_EXPORT2
+udat_setBooleanAttribute(UDateFormat *fmt, 
+                         UDateFormatBooleanAttribute attr, 
+                         UBool newValue, 
+                         UErrorCode* status)
+{
+    if(U_FAILURE(*status)) return;
+    ((DateFormat*)fmt)->setBooleanAttribute(attr, newValue, *status);
+}
+
 U_CAPI const UCalendar* U_EXPORT2
 udat_getCalendar(const UDateFormat* fmt)
 {
index e1b03dd9d4cda622cedb6baa81c617e3c7b36ed7..74dbb666aafb4212cefd8701c2db1e8b5014ed1d 100644 (file)
@@ -1,6 +1,6 @@
 /********************************************************************
  * COPYRIGHT: 
- * Copyright (c) 1997-2012, International Business Machines Corporation and
+ * Copyright (c) 1997-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************/
 /********************************************************************************
@@ -38,6 +38,8 @@ void addDtFrDepTest(TestNode** root)
     addTest(root, &TestRunTogetherPattern985, "tsformat/cdtdptst/TestRunTogetherPattern985");
     addTest(root, &TestCzechMonths459, "tsformat/cdtdptst/TestCzechMonths459");
     addTest(root, &TestQuotePattern161, "tsformat/cdtdptst/TestQuotePattern161");
+    addTest(root, &TestBooleanAttributes, "tsformat/cdtdptst/TestBooleanAttributes");
+
     
 }
 
@@ -349,4 +351,35 @@ void TestQuotePattern161()
     ctest_resetTimeZone();
 }
 
+/*
+ * Testing udat_getBooleanAttribute and  unum_setBooleanAttribute() to make sure basic C wrapper functionality is present
+ */
+static void TestBooleanAttributes(void)
+{
+    UDateFormat *en;
+    UErrorCode status=U_ZERO_ERROR;
+    UBool initialState = TRUE;
+    UBool switchedState = FALSE;
+        
+    log_verbose("\ncreating a date format with english locale\n");
+    en = udat_open(UDAT_FULL, UDAT_DEFAULT, "en_US", NULL, 0, NULL, 0, &status);
+    if(U_FAILURE(status)) {
+        log_data_err("error in creating the dateformat -> %s (Are you missing data?)\n", 
+            myErrorName(status) );
+        return;
+    }
+    
+    
+    initialState = udat_getBooleanAttribute(en, UDAT_PARSE_ALLOW_NUMERIC, &status);
+    if(initialState != TRUE) switchedState = TRUE;  // if it wasn't the default of TRUE, then flip what we expect
+
+    udat_setBooleanAttribute(en, UDAT_PARSE_ALLOW_NUMERIC, switchedState, &status);
+    if(switchedState != udat_getBooleanAttribute(en, UDAT_PARSE_ALLOW_NUMERIC, &status)) {
+        log_err("unable to switch states!");
+        return;
+    }
+
+    udat_close(en);
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
index 11fd9e5faaa93d6a656f689248203f5c7907e8a5..dc3223187a80cff4e506e8a11184d67ce543b2e7 100644 (file)
@@ -1,6 +1,6 @@
 /********************************************************************
  * COPYRIGHT: 
- * Copyright (c) 1997-2001, International Business Machines Corporation and
+ * Copyright (c) 1997-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************/
 /********************************************************************************
@@ -52,6 +52,11 @@ void TestQuotePattern161(void);
 /*Internal functions used*/
 void tryPat994(UDateFormat* format, const char* pat, const char* s, UDate expected);
 
+/*
+ * Testing udat_getBooleanAttribute and  unum_setBooleanAttribute()
+ */
+void TestBooleanAttributes(void);
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
 #endif