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