21int main(
int,
const char *[])
26 char yaml[] =
"do: a deer, a female deer\n"
27 "re: a drop of golden sun\n"
28 "mi: a name I call myself\n"
29 "fa: a long long way to run\n";
31 const int expected_events[] = {
73 constexpr const int events_size = 100;
74 int events[events_size] = {};
75 static_assert(events_size >=
sizeof(expected_events)/
sizeof(expected_events[0]),
"buffer too small");
83 if (estimated_size > events_size)
85 printf(
"the estimated size (%d) will not fit the events array (%d)\n", estimated_size, events_size);
95 handler.
reset(yaml, arena, events, estimated_size);
103 printf(
"error: buffers too small: required_evt=%d actual_evt=%d\n required_arena=%zu actual_arena=%zu\n",
113 printf(
"success! YAML requires event size %d, estimated=%d (required_arena=%zu actual_arena=%zu)\n",
124 bool status = (events[pos] == expected_events[pos]);
127 memset(flags, 0,
sizeof(flags));
129 if(len + 1 >=
sizeof(flags)) { printf(
"error: could not format flags");
return 1; }
131 printf(
"pos=%d\tevent[%d]:\t%20s = 0x%08x", pos, evt, flags, events[pos]);
132 if(events[pos] &
WSTR)
134 int offset = events[pos + 1];
135 int length = events[pos + 2];
136 bool in_arena = (events[pos] &
AREN);
138 const char *ptr = in_arena ? arena : yaml;
139 const char *str = ptr + offset;
140 printf(
"\tstr=(%d,%d)\t'%.*s'", offset, length, length, str);
141 status = status && (offset == expected_events[pos + 1]);
142 status = status && (length == expected_events[pos + 2]);
147 printf(
" ... fail!");
153 return success ? 0 : 1;