| 3043 | } |
| 3044 | |
| 3045 | void |
| 3046 | test_message (const struct message *message) |
| 3047 | { |
| 3048 | size_t raw_len = strlen(message->raw); |
| 3049 | size_t msg1len; |
| 3050 | for (msg1len = 0; msg1len < raw_len; msg1len++) { |
| 3051 | parser_init(message->type); |
| 3052 | |
| 3053 | size_t read; |
| 3054 | const char *msg1 = message->raw; |
| 3055 | const char *msg2 = msg1 + msg1len; |
| 3056 | size_t msg2len = raw_len - msg1len; |
| 3057 | |
| 3058 | if (msg1len) { |
| 3059 | read = parse(msg1, msg1len); |
| 3060 | |
| 3061 | if (message->upgrade && parser->upgrade && num_messages > 0) { |
| 3062 | messages[num_messages - 1].upgrade = msg1 + read; |
| 3063 | goto test; |
| 3064 | } |
| 3065 | |
| 3066 | if (read != msg1len) { |
| 3067 | print_error(msg1, read); |
| 3068 | abort(); |
| 3069 | } |
| 3070 | } |
| 3071 | |
| 3072 | |
| 3073 | read = parse(msg2, msg2len); |
| 3074 | |
| 3075 | if (message->upgrade && parser->upgrade) { |
| 3076 | messages[num_messages - 1].upgrade = msg2 + read; |
| 3077 | goto test; |
| 3078 | } |
| 3079 | |
| 3080 | if (read != msg2len) { |
| 3081 | print_error(msg2, read); |
| 3082 | abort(); |
| 3083 | } |
| 3084 | |
| 3085 | read = parse(NULL, 0); |
| 3086 | |
| 3087 | if (read != 0) { |
| 3088 | print_error(message->raw, read); |
| 3089 | abort(); |
| 3090 | } |
| 3091 | |
| 3092 | test: |
| 3093 | |
| 3094 | if (num_messages != 1) { |
| 3095 | printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name); |
| 3096 | abort(); |
| 3097 | } |
| 3098 | |
| 3099 | if(!message_eq(0, message)) abort(); |
| 3100 | |
| 3101 | parser_free(); |
| 3102 | } |
no test coverage detected