summaryrefslogtreecommitdiff
path: root/tests/test_stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_stream.c')
-rw-r--r--tests/test_stream.c127
1 files changed, 0 insertions, 127 deletions
diff --git a/tests/test_stream.c b/tests/test_stream.c
deleted file mode 100644
index 4c9880d..0000000
--- a/tests/test_stream.c
+++ /dev/null
@@ -1,127 +0,0 @@
-
-#undef NDEBUG /* ensure tests always assert. */
-#include "upb/handlers.h"
-
-typedef struct {
- upb_string *str;
- bool should_delegate;
-} test_data;
-
-extern upb_handlerset test_handlers;
-
-static void strappendf(upb_string *s, const char *format, ...) {
- upb_string *str = upb_string_new();
- va_list args;
- va_start(args, format);
- upb_string_vprintf(str, format, args);
- va_end(args);
- upb_strcat(s, str);
- upb_string_unref(str);
-}
-
-static upb_flow_t startmsg(void *closure) {
- test_data *d = closure;
- strappendf(d->str, "startmsg\n");
- return UPB_CONTINUE;
-}
-
-static upb_flow_t endmsg(void *closure) {
- test_data *d = closure;
- strappendf(d->str, "endmsg\n");
- return UPB_CONTINUE;
-}
-
-static upb_flow_t value(void *closure, struct _upb_fielddef *f, upb_value val) {
- (void)f;
- test_data *d = closure;
- strappendf(d->str, "value, %lld\n", upb_value_getint64(val));
- return UPB_CONTINUE;
-}
-
-static upb_flow_t startsubmsg(void *closure, struct _upb_fielddef *f,
- upb_handlers *delegate_to) {
- (void)f;
- test_data *d = closure;
- strappendf(d->str, "startsubmsg\n");
- if (d->should_delegate) {
- upb_register_handlerset(delegate_to, &test_handlers);
- upb_set_handler_closure(delegate_to, closure, NULL);
- return UPB_DELEGATE;
- } else {
- return UPB_CONTINUE;
- }
-}
-
-static upb_flow_t endsubmsg(void *closure, struct _upb_fielddef *f) {
- (void)f;
- test_data *d = closure;
- strappendf(d->str, "endsubmsg\n");
- return UPB_CONTINUE;
-}
-
-static upb_flow_t unknownval(void *closure, upb_field_number_t fieldnum,
- upb_value val) {
- (void)val;
- test_data *d = closure;
- strappendf(d->str, "unknownval, %d\n", fieldnum);
- return UPB_CONTINUE;
-}
-
-upb_handlerset test_handlers = {
- &startmsg,
- &endmsg,
- &value,
- &startsubmsg,
- &endsubmsg,
- &unknownval,
-};
-
-static void test_dispatcher() {
- test_data data;
- data.should_delegate = false;
- data.str = upb_string_new();
- upb_handlers h;
- upb_handlers_init(&h);
- upb_handlers_reset(&h);
- upb_register_handlerset(&h, &test_handlers);
- upb_set_handler_closure(&h, &data, NULL);
- upb_dispatcher d;
- upb_dispatcher_init(&d);
- upb_dispatcher_reset(&d, &h, false);
-
- upb_dispatch_startmsg(&d);
- upb_value val;
- upb_value_setint64(&val, 5);
- upb_dispatch_value(&d, NULL, val);
- upb_dispatch_startsubmsg(&d, NULL);
- data.should_delegate = true;
- upb_dispatch_startsubmsg(&d, NULL);
- data.should_delegate = false;
- upb_dispatch_startsubmsg(&d, NULL);
- upb_dispatch_value(&d, NULL, val);
- upb_dispatch_endsubmsg(&d, NULL);
- upb_dispatch_endsubmsg(&d, NULL);
- upb_dispatch_endsubmsg(&d, NULL);
- upb_dispatch_endmsg(&d);
-
- upb_string expected = UPB_STACK_STRING(
- "startmsg\n"
- "value, 5\n"
- "startsubmsg\n"
- "startsubmsg\n"
- "startmsg\n" // Because of the delegation.
- "startsubmsg\n"
- "value, 5\n"
- "endsubmsg\n"
- "endmsg\n" // Because of the delegation.
- "endsubmsg\n"
- "endsubmsg\n"
- "endmsg\n");
- assert(upb_streql(data.str, &expected));
- upb_string_unref(data.str);
-}
-
-int main() {
- test_dispatcher();
- return 0;
-}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback