MACSio  0.9
Multi-purpose, Application-Centric, Scalable I/O Proxy App
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
test_parse_int64.c
Go to the documentation of this file.
1 
2 #include <stdio.h>
3 #include <string.h>
4 
5 #include "config.h"
6 
7 #include "json_inttypes.h"
8 #include "json_util.h"
9 
10 void checkit(const char *buf)
11 {
12  int64_t cint64 = -666;
13 
14  int retval = json_parse_int64(buf, &cint64);
15  printf("buf=%s parseit=%d, value=%" PRId64 " \n", buf, retval, cint64);
16 }
17 
26 int main()
27 {
28  char buf[100];
29 
30  checkit("x");
31 
32  checkit("0");
33  checkit("-0");
34 
35  checkit("00000000");
36  checkit("-00000000");
37 
38  checkit("1");
39 
40  strcpy(buf, "2147483647"); // aka INT32_MAX
41  checkit(buf);
42 
43  strcpy(buf, "-1");
44  checkit(buf);
45 
46  strcpy(buf, " -1");
47  checkit(buf);
48 
49  strcpy(buf, "00001234");
50  checkit(buf);
51 
52  strcpy(buf, "0001234x");
53  checkit(buf);
54 
55  strcpy(buf, "-00001234");
56  checkit(buf);
57 
58  strcpy(buf, "-00001234x");
59  checkit(buf);
60 
61  strcpy(buf, "4294967295"); // aka UINT32_MAX
62 
63  sprintf(buf, "4294967296"); // aka UINT32_MAX + 1
64 
65  strcpy(buf, "21474836470"); // INT32_MAX * 10
66  checkit(buf);
67 
68  strcpy(buf, "31474836470"); // INT32_MAX * 10 + a bunch
69  checkit(buf);
70 
71  strcpy(buf, "-2147483647"); // INT32_MIN + 1
72  checkit(buf);
73 
74  strcpy(buf, "-2147483648"); // INT32_MIN
75  checkit(buf);
76 
77  strcpy(buf, "-2147483649"); // INT32_MIN - 1
78  checkit(buf);
79 
80  strcpy(buf, "-21474836480"); // INT32_MIN * 10
81  checkit(buf);
82 
83  strcpy(buf, "9223372036854775806"); // INT64_MAX - 1
84  checkit(buf);
85 
86  strcpy(buf, "9223372036854775807"); // INT64_MAX
87  checkit(buf);
88 
89  strcpy(buf, "9223372036854775808"); // INT64_MAX + 1
90  checkit(buf);
91 
92  strcpy(buf, "-9223372036854775808"); // INT64_MIN
93  checkit(buf);
94 
95  strcpy(buf, "-9223372036854775809"); // INT64_MIN - 1
96  checkit(buf);
97 
98  strcpy(buf, "18446744073709551614"); // UINT64_MAX - 1
99  checkit(buf);
100 
101  strcpy(buf, "18446744073709551615"); // UINT64_MAX
102  checkit(buf);
103 
104  strcpy(buf, "18446744073709551616"); // UINT64_MAX + 1
105  checkit(buf);
106 
107  strcpy(buf, "-18446744073709551616"); // -UINT64_MAX
108  checkit(buf);
109 
110  // Ensure we can still parse valid numbers after parsing out of range ones.
111  strcpy(buf, "123");
112  checkit(buf);
113 
114  return 0;
115 }
#define PRId64
Definition: json_inttypes.h:23
int main()
int json_parse_int64(const char *buf, int64_t *retval)
Definition: json_util.c:188
void checkit(const char *buf)