1// Licensed to the .NET Foundation under one or more agreements.
2// The .NET Foundation licenses this file to you under the MIT license.
3// See the LICENSE file in the project root for more information.
4
5/*=============================================================
6**
7** Source: test1.c
8**
9** Purpose: Tests _i64tow_s with normal values and different radices, negative
10** values, as well as the highest and lowest values.
11**
12**
13**============================================================*/
14
15#include <palsuite.h>
16
17typedef struct
18{
19 INT64 value;
20 int radix;
21 char *result;
22} testCase;
23
24
25int __cdecl main(int argc, char *argv[])
26{
27 WCHAR buffer[256];
28 WCHAR *testStr;
29 WCHAR *ret;
30 int i;
31 testCase testCases[] =
32 {
33 {42, 10, "42"},
34 {42, 2, "101010"},
35 {29, 32, "t"},
36 {-1, 10, "-1"},
37 {-1, 8, "1777777777777777777777"},
38 {-1, 32, "fvvvvvvvvvvvv"},
39 {I64(0x7FFFFFFFFFFFFFFF), 10, "9223372036854775807"},
40 {I64(0x8000000000000000), 10, "-9223372036854775808"},
41 {0,2,"0"},
42 {0,16,"0"},
43 {3,16,"3"},
44 {15,16,"f"},
45 {16,16,"10"},
46
47 };
48
49
50 if (0 != (PAL_Initialize(argc, argv)))
51 {
52 return FAIL;
53 }
54
55 for (i=0; i<sizeof(testCases) / sizeof(testCase); i++)
56 {
57 errno_t err = _i64tow_s(testCases[i].value, buffer, sizeof(buffer) / sizeof(buffer[0]), testCases[i].radix);
58
59 if(err != 0)
60 {
61 Fail("ERROR: _i64tow_s didn't return success, error code %d.\n", err);
62 }
63
64 testStr = convert(testCases[i].result);
65 if (wcscmp(testStr, buffer) != 0)
66 {
67 Fail("_i64tow_s did not give the correct string.\n"
68 "Expected %S, got %S\n", testStr, buffer);
69 }
70 free(testStr);
71 }
72
73
74 PAL_Terminate();
75 return PASS;
76}
77