HIPC  0.5
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
test_client_err.c
Go to the documentation of this file.
1 #include <assert.h>
2 #include <errno.h>
3 #include <stdio.h>
4 #include <string.h>
5 
6 #include "client.c"
7 
8 static void test_StdErrno(void)
9 {
10  struct HIPC_client cl;
11  int errno_saved;
12 
13  errno_saved = errno;
14 
15  errno = 0;
17  assert(0 == hipcClientGetStdErrno(&cl));
18 
19  errno = 1;
21  assert(1 == hipcClientGetStdErrno(&cl));
22 
23  errno = errno_saved;
24 
25  return;
26 }
27 
28 static void test_ErrorDetailStr(void)
29 {
30  struct HIPC_client cl;
31  const char *str;
32 
33  hipcClientSetErrDtlStr(&cl, "012", NULL, 0);
34  str = hipcClientGetErrDtlStr(&cl);
35  assert(0 == strcmp("012", str));
36 
37  hipcClientSetErrDtlStr(&cl, "012", NULL, 9);
38  str = hipcClientGetErrDtlStr(&cl);
39  assert(0 == strcmp("012", str));
40 
41  hipcClientSetErrDtlStr(&cl, "abc", "", 0);
42  str = hipcClientGetErrDtlStr(&cl);
43  assert(0 == strcmp("abc", str));
44 
45  hipcClientSetErrDtlStr(&cl, "012", "345", 3);
46  str = hipcClientGetErrDtlStr(&cl);
47  assert(0 == strcmp("012345", str));
48 
49  hipcClientSetErrDtlStr(&cl, "012", "345", 2);
50  str = hipcClientGetErrDtlStr(&cl);
51  assert(0 == strcmp("01234", str));
52 
53  hipcClientSetErrDtlStr(&cl, "012", "345", 1);
54  str = hipcClientGetErrDtlStr(&cl);
55  assert(0 == strcmp("0123", str));
56 
57  hipcClientSetErrDtlStr(&cl, "012", "345", 0);
58  str = hipcClientGetErrDtlStr(&cl);
59  assert(0 == strcmp("012345", str));
60 
61  hipcClientSetErrDtlStr(&cl, NULL, "xxx", 3);
62  str = hipcClientGetErrDtlStr(&cl);
63  assert(0 == strcmp("012345", str));
64 
65  hipcClientSetErrDtlStr(&cl, NULL, NULL, 0);
66  str = hipcClientGetErrDtlStr(&cl);
67  assert(0 == strcmp("012345", str));
68 
69  return;
70 }
71 
72 static void test_ErrorDetailStr_longStr(void)
73 {
74  static char buf[HIPC_IMG_ALLOCSIZE + 2];
75  struct HIPC_client cl;
76  const char *str;
77  size_t i;
78 
79  for (i = 0; i < sizeof(buf); ++i) {
80  buf[i] = 'a';
81  }
82  buf[HIPC_IMG_ALLOCSIZE - 2] = 'x';
83  buf[HIPC_IMG_ALLOCSIZE - 1] = 'y';
84  buf[HIPC_IMG_ALLOCSIZE] = 'z';
85  buf[HIPC_IMG_ALLOCSIZE + 1] = '\0';
86  hipcClientSetErrDtlStr(&cl, buf, "AAA", 0);
87  str = hipcClientGetErrDtlStr(&cl);
88  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
89  assert('a' == str[i]);
90  }
91  assert('x' == str[HIPC_IMG_ALLOCSIZE - 2]);
92  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
93 
94  buf[HIPC_IMG_ALLOCSIZE] = '\0';
95  hipcClientSetErrDtlStr(&cl, buf, NULL, 0);
96  str = hipcClientGetErrDtlStr(&cl);
97  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
98  assert('a' == str[i]);
99  }
100  assert('x' == str[HIPC_IMG_ALLOCSIZE - 2]);
101  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
102 
103  buf[HIPC_IMG_ALLOCSIZE - 1] = '\0';
104  hipcClientSetErrDtlStr(&cl, buf, NULL, 0);
105  str = hipcClientGetErrDtlStr(&cl);
106  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
107  assert('a' == str[i]);
108  }
109  assert('x' == str[HIPC_IMG_ALLOCSIZE - 2]);
110  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
111 
112  hipcClientSetErrDtlStr(&cl, buf, "", 0);
113  str = hipcClientGetErrDtlStr(&cl);
114  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
115  assert('a' == str[i]);
116  }
117  assert('x' == str[HIPC_IMG_ALLOCSIZE - 2]);
118  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
119 
120  hipcClientSetErrDtlStr(&cl, buf, "A", 0);
121  str = hipcClientGetErrDtlStr(&cl);
122  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
123  assert('a' == str[i]);
124  }
125  assert('x' == str[HIPC_IMG_ALLOCSIZE - 2]);
126  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
127 
128  hipcClientSetErrDtlStr(&cl, buf, "AA", 0);
129  str = hipcClientGetErrDtlStr(&cl);
130  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
131  assert('a' == str[i]);
132  }
133  assert('x' == str[HIPC_IMG_ALLOCSIZE - 2]);
134  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
135 
136  buf[HIPC_IMG_ALLOCSIZE - 2] = '\0';
137  hipcClientSetErrDtlStr(&cl, buf, "", 0);
138  str = hipcClientGetErrDtlStr(&cl);
139  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
140  assert('a' == str[i]);
141  }
142  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 2]);
143  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
144 
145  hipcClientSetErrDtlStr(&cl, buf, "A", 0);
146  str = hipcClientGetErrDtlStr(&cl);
147  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
148  assert('a' == str[i]);
149  }
150  assert('A' == str[HIPC_IMG_ALLOCSIZE - 2]);
151  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
152 
153  hipcClientSetErrDtlStr(&cl, buf, "BB", 0);
154  str = hipcClientGetErrDtlStr(&cl);
155  for (i = 0; i < HIPC_IMG_ALLOCSIZE - 2; ++i) {
156  assert('a' == str[i]);
157  }
158  assert('B' == str[HIPC_IMG_ALLOCSIZE - 2]);
159  assert('\0' == str[HIPC_IMG_ALLOCSIZE - 1]);
160 
161  return;
162 }
163 
164 static void test_Err(void)
165 {
166  struct HIPC_client cl;
167  const char *str;
168 
171  str = hipcClientGetErrStr(&cl);
172  assert(0 ==
173  strcmp("HIPC_ERR_PROTOCOL_VIOLATION: Protocol violation", str));
174  str = hipcClientGetErrDtlStr(&cl);
175  assert(0 == strcmp("NG", str));
176 
178  assert(HIPC_SUCCESS == hipcClientGetHipcErrno(&cl));
179  str = hipcClientGetErrStr(&cl);
180  assert(0 == strcmp("HIPC_SUCCESS: No error", str));
181  str = hipcClientGetErrDtlStr(&cl);
182  assert(0 == strcmp("", str));
183 
184  hipcClientSetError(&cl, HIPC_N_ERR, "");
185  str = hipcClientGetErrStr(&cl);
186  assert(0 == strcmp("Unknown HIPC errorno value", str));
187 
188  return;
189 }
190 
191 int main(int argc, char *argv[])
192 {
193  if (2 != argc) {
194  fprintf(stderr, "Usage: %s test_id\n", argv[0]);
195  exit(EXIT_FAILURE);
196  }
197 
198  switch (argv[1][0]) {
199  case 'a':
200  test_StdErrno();
201  break;
202  case 'b':
204  break;
205  case 'c':
207  break;
208  case 'd':
209  test_Err();
210  break;
211  default:
212  fprintf(stderr, "Invalid test_id: %s \n", argv[1]);
213  exit(EXIT_FAILURE);
214  }
215 
216  return 0;
217 }
#define HIPC_IMG_ALLOCSIZE
Definition: hipc.h:46
static void test_StdErrno(void)
enum HIPC_errno hipcClientGetHipcErrno(const struct HIPC_client *const cl_p)
Gets a HIPC error number that has been set.
Definition: client.c:143
const char * hipcClientGetErrStr(const struct HIPC_client *const cl_p)
Gets a string describing a HIPC error number that has been set to a HIPC client.
Definition: client.c:155
const char * hipcClientGetErrDtlStr(const struct HIPC_client *const cl_p)
Gets a string describing details of an error that has been set to a HIPC client.
Definition: client.c:171
int hipcClientGetStdErrno(const struct HIPC_client *const cl_p)
Gets an errno value saved by hipcClientSetStdErrno().
Definition: client.c:131
static void test_Err(void)
static void hipcClientSetErrDtlStr(struct HIPC_client *const cl_p, char const *const str0, char const *const str1, size_t ls1)
Sets a string describing details of an error, which will be a concatenation of str0 and str1...
Definition: client.c:196
enum HIPC_errno hipcClientSetError(struct HIPC_client *const cl_p, enum HIPC_errno hipc_errno, char const *const str)
Sets an error to a client with error detail.
Definition: client.c:240
int main(int argc, char *argv[])
static void test_ErrorDetailStr_longStr(void)
static void test_ErrorDetailStr(void)
void hipcClientSetStdErrno(struct HIPC_client *const cl_p)
Sets errno value to a HIPC client.
Definition: client.c:119