static void append_ie(struct ast_str **str, const struct ast_event *event, const enum ast_event_ie_type ie_type, enum ie_required required) { if (!required && !ie_is_present(event, ie_type)) { /* Optional IE isn't present. Ignore. */ return; } /* At this point, it _better_ be there! */ ast_assert(ie_is_present(event, ie_type)); switch (ast_event_get_ie_pltype(ie_type)) { case AST_EVENT_IE_PLTYPE_UINT: ast_str_append(str, 0, ",%s=\"%u\"", ast_event_get_ie_type_name(ie_type), ast_event_get_ie_uint(event, ie_type)); break; case AST_EVENT_IE_PLTYPE_STR: ast_str_append(str, 0, ",%s=\"%s\"", ast_event_get_ie_type_name(ie_type), ast_event_get_ie_str(event, ie_type)); break; case AST_EVENT_IE_PLTYPE_BITFLAGS: ast_str_append(str, 0, ",%s=\"%u\"", ast_event_get_ie_type_name(ie_type), ast_event_get_ie_bitflags(event, ie_type)); break; case AST_EVENT_IE_PLTYPE_UNKNOWN: case AST_EVENT_IE_PLTYPE_EXISTS: case AST_EVENT_IE_PLTYPE_RAW: ast_log(LOG_WARNING, "Unexpected payload type for IE '%s'\n", ast_event_get_ie_type_name(ie_type)); break; } }
static int check_event(struct ast_event *event, struct ast_test *test, enum ast_event_type expected_type, const char *type_name, const char *str, uint32_t uint, uint32_t bitflags) { enum ast_event_type type; const void *foo; /* Check #1: Ensure event type is set properly. */ type = ast_event_get_type(event); if (ast_event_get_type(event) != type) { ast_test_status_update(test, "Expected event type: '%d', got '%d'\n", expected_type, type); return -1; } /* Check #2: Check string representation of event type */ if (strcmp(type_name, ast_event_get_type_name(event))) { ast_test_status_update(test, "Didn't get expected type name: '%s' != '%s'\n", type_name, ast_event_get_type_name(event)); return -1; } /* Check #3: Check for automatically included EID */ if (memcmp(&ast_eid_default, ast_event_get_ie_raw(event, AST_EVENT_IE_EID), sizeof(ast_eid_default))) { ast_test_status_update(test, "Failed to get EID\n"); return -1; } /* Check #4: Check for the string IE */ if (strcmp(str, ast_event_get_ie_str(event, AST_EVENT_IE_MAILBOX))) { ast_test_status_update(test, "Failed to get string IE.\n"); return -1; } /* Check #5: Check for the uint IE */ if (uint != ast_event_get_ie_uint(event, AST_EVENT_IE_NEWMSGS)) { ast_test_status_update(test, "Failed to get uint IE.\n"); return -1; } /* Check #6: Check for the bitflags IE */ if (bitflags != ast_event_get_ie_bitflags(event, AST_EVENT_IE_OLDMSGS)) { ast_test_status_update(test, "Failed to get bitflags IE.\n"); return -1; } /* Check #7: Check if a check for a str IE that isn't there works */ if ((foo = ast_event_get_ie_str(event, AST_EVENT_IE_DEVICE))) { ast_test_status_update(test, "DEVICE IE check returned non-NULL %p\n", foo); return -1; } /* Check #8: Check if a check for a uint IE that isn't there returns 0 */ if (ast_event_get_ie_uint(event, AST_EVENT_IE_STATE)) { ast_test_status_update(test, "OLDMSGS IE should be 0\n"); return -1; } ast_test_status_update(test, "Event looks good.\n"); return 0; }