HIPC  0.5
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
mockio.c
Go to the documentation of this file.
1 #include <assert.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 
6 #include <mockio.h>
7 
8 void mockIOInit(struct MockIO *mio_p, const struct MockIOOp *ops,
9  const unsigned int nops)
10 {
11  mio_p->ops = ops;
12  mio_p->nops = nops;
13  mio_p->i = 0;
14  mio_p->mock_errno = MOCK_SUCESS;
15 
16  return;
17 }
18 
19 int mockIOCheckCompletion(struct MockIO *mio_p)
20 {
21  if (MOCK_SUCESS != mio_p->mock_errno) {
22  return -1;
23  }
24  if (mio_p->nops != mio_p->i) {
25  return 0;
26  }
27  return 1;
28 }
29 
30 enum HIPC_errno mockIORead(struct MockIO *mio_p, void *buf,
31  const size_t size)
32 {
33  enum HIPC_errno retval;
34 
35  if (mio_p->nops <= mio_p->i) {
36  fprintf(stderr, "ERROR: mockio overrun at i==%d in read\n",
37  mio_p->i);
40  }
41  if (0 != mio_p->ops[mio_p->i].code) {
42  fprintf(stderr,
43  "ERROR: mockio code mismatch: i==%d Eepected/Actual %d/0\n",
44  mio_p->i, mio_p->ops[mio_p->i].code);
45  mio_p->mock_errno = MOCK_ERR_OPCODE;
47  }
48  if (size != mio_p->ops[mio_p->i].size) {
49  fprintf(stderr,
50  "ERROR: mockio size mismatch: i==%d Eepected/Actual %lu/%lu\n",
51  mio_p->i, mio_p->ops[mio_p->i].size, size);
52  mio_p->mock_errno = MOCK_ERR_SIZE;
54  }
55 
56  memcpy(buf, mio_p->ops[mio_p->i].data, size);
57  retval = mio_p->ops[mio_p->i].retval;
58  ++(mio_p->i);
59 
60  return retval;
61 }
62 
63 enum HIPC_errno mockIOWrite(struct MockIO *mio_p, const void *buf,
64  const size_t size)
65 {
66  enum HIPC_errno retval;
67  unsigned int i;
68 
69  if (mio_p->nops <= mio_p->i) {
70  fprintf(stderr, "ERROR: mockio overrun at i==%d in write\n",
71  mio_p->i);
74  }
75  if (1 != mio_p->ops[mio_p->i].code) {
76  fprintf(stderr,
77  "ERROR: mockio code mismatch: i==%d Eepected/Actual %d/1\n",
78  mio_p->i, mio_p->ops[mio_p->i].code);
79  mio_p->mock_errno = MOCK_ERR_OPCODE;
81  }
82  if (size != mio_p->ops[mio_p->i].size) {
83  fprintf(stderr,
84  "ERROR: mockio size mismatch: i==%d Eepected/Actual %lu/%lu\n",
85  mio_p->i, mio_p->ops[mio_p->i].size, size);
86  mio_p->mock_errno = MOCK_ERR_SIZE;
88  }
89 
90  if (0 != memcmp(buf, mio_p->ops[mio_p->i].data, size)) {
91  fprintf(stderr, "ERROR: write contents mismatch: i==%d\n",
92  mio_p->i);
93  fprintf(stderr, "Expected:\n");
94  for (i = 0; i < size; ++i) {
95  fprintf(stderr, "0x%02x,",
96  ((unsigned char *) mio_p->ops[mio_p->i].data)[i]);
97  }
98  fprintf(stderr, "\n");
99  fprintf(stderr, "Actual:\n");
100  for (i = 0; i < size; ++i) {
101  fprintf(stderr, "0x%02x,", ((unsigned char *) buf)[i]);
102  }
103  fprintf(stderr, "\n");
104  mio_p->mock_errno = MOCK_ERR_DATA;
106  }
107 
108  retval = mio_p->ops[mio_p->i].retval;
109  ++(mio_p->i);
110 
111  return retval;
112 }
unsigned char data[HIPC_IMG_ALLOCSIZE]
Definition: mockio.h:16
HIPC_errno
Definition: hipc.h:4
int mockIOCheckCompletion(struct MockIO *mio_p)
Definition: mockio.c:19
void mockIOInit(struct MockIO *mio_p, const struct MockIOOp *ops, const unsigned int nops)
Definition: mockio.c:8
unsigned int i
Definition: mockio.h:21
enum MOCK_errno mock_errno
Definition: mockio.h:20
enum HIPC_errno mockIOWrite(struct MockIO *mio_p, const void *buf, const size_t size)
Definition: mockio.c:63
int code
Definition: mockio.h:13
Definition: mockio.h:19
enum HIPC_errno mockIORead(struct MockIO *mio_p, void *buf, const size_t size)
Definition: mockio.c:30
size_t size
Definition: mockio.h:15
unsigned int nops
Definition: mockio.h:22
const struct MockIOOp * ops
Definition: mockio.h:23
enum HIPC_errno retval
Definition: mockio.h:14