1 // 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /******************************************************************** 4 * COPYRIGHT: 5 * Copyright (c) 1997-2016, International Business Machines 6 * Corporation and others. All Rights Reserved. 7 ********************************************************************/ 8 /******************************************************************************** 9 * 10 * File CFORMTST.C 11 * 12 * Modification History: 13 * Name Description 14 * Madhu Katragadda Creation 15 ********************************************************************************* 16 */ 17 18 /* FormatTest is a medium top level test for everything in the C FORMAT API */ 19 20 #include "unicode/utypes.h" 21 22 #if !UCONFIG_NO_FORMATTING 23 24 #include "cintltst.h" 25 #include "cformtst.h" 26 27 void addCalTest(TestNode**); 28 void addDateForTest(TestNode**); 29 void addDateTimePatternGeneratorTest(TestNode**); 30 void addDateIntervalFormatTest(TestNode**); 31 void addRelativeDateFormatTest(TestNode**); 32 void addNumForTest(TestNode**); 33 void addMsgForTest(TestNode**); 34 void addDateForRgrTest(TestNode**); 35 void addNumFrDepTest(TestNode**); 36 void addDtFrDepTest(TestNode**); 37 void addUtmsTest(TestNode**); 38 void addCurrencyTest(TestNode**); 39 void addPluralRulesTest(TestNode**); 40 void addURegionTest(TestNode** root); 41 void addUListFmtTest(TestNode** root); 42 43 void addFormatTest(TestNode** root); 44 45 void addFormatTest(TestNode** root) 46 { 47 addCalTest(root); 48 addDateForTest(root); 49 addDateTimePatternGeneratorTest(root); 50 addDateIntervalFormatTest(root); 51 #if !UCONFIG_NO_BREAK_ITERATION 52 addRelativeDateFormatTest(root); 53 #endif /* !UCONFIG_NO_BREAK_ITERATION */ 54 addNumForTest(root); 55 addNumFrDepTest(root); 56 addMsgForTest(root); 57 addDateForRgrTest(root); 58 addDtFrDepTest(root); 59 addUtmsTest(root); 60 addCurrencyTest(root); 61 addPluralRulesTest(root); 62 addURegionTest(root); 63 addUListFmtTest(root); 64 } 65 /*Internal functions used*/ 66 67 UChar* myDateFormat(UDateFormat* dat, UDate d1) 68 { 69 UChar *result1=NULL; 70 int32_t resultlength, resultlengthneeded; 71 UErrorCode status = U_ZERO_ERROR; 72 73 74 resultlength=0; 75 resultlengthneeded=udat_format(dat, d1, NULL, resultlength, NULL, &status); 76 if(status==U_BUFFER_OVERFLOW_ERROR) 77 { 78 status=U_ZERO_ERROR; 79 resultlength=resultlengthneeded+1; 80 result1=(UChar*)ctst_malloc(sizeof(UChar) * resultlength); 81 udat_format(dat, d1, result1, resultlength, NULL, &status); 82 } 83 if(U_FAILURE(status)) 84 { 85 log_err("Error in formatting using udat_format(.....): %s\n", myErrorName(status)); 86 return 0; 87 } 88 return result1; 89 90 } 91 92 #endif /* #if !UCONFIG_NO_FORMATTING */ 93