Branch Coverage

rdb_parser.c
Criterion Covered Total %
branch 117 144 81.2


line true false branch
15 0 4 if (parser == NULL) {
19 0 4 if (SvROK(master)) {
48 0 4 if (parser->default_cb != NULL)
50 1 3 if (parser->mblk_reply != NULL)
54 0 4 while (store != NULL) {
68 3 2 if(av_len(parser->callbacks) >= 0) {
72 1 1 else if (parser->default_cb != NULL) {
84 0 4 PUSHMARK(SP);
85 0 4 XPUSHs(sv_2mortal(newRV_inc(parser->master)));
86 0 4 XPUSHs(sv_2mortal(newSVsv(reply)));
89 4 0 FREETMPS;
100 336 4 for (i=0; i < length - 1; i++, pos++) {
101 95 241 if (*pos == '\r' && pos[1] == '\n') {
95 0 if (*pos == '\r' && pos[1] == '\n') {
120 10 3 if (len >= 0) {
139 24 1 if (len >= 0) {
160 61 0 if (len >= 0) {
180 0 4 PUSHMARK(SP);
181 0 4 XPUSHs(parser->error_class);
182 0 4 XPUSHs(sv_2mortal(msg));
185 0 4 if (count != 1)
190 4 0 FREETMPS;
218 0 13 if (store == NULL)
235 49 20 if (parser->mblk_len > 1) {
240 10 10 else if (parser->mblk_level > 1) {
258 59 14 if (parser->mblk_level) {
259 49 10 if (_mblk_item(parser, value))
273 23 1 if (av_len(parser->callbacks) >= 0) {
277 0 1 else if (parser->default_cb != NULL) {
281 0 23 PUSHMARK(SP);
282 0 23 XPUSHs(sv_2mortal(newRV_inc(parser->master)));
283 0 23 XPUSHs(sv_2mortal(reply));
286 23 0 FREETMPS;
299 0 38 if (sv_len(parser->buffer) == 0) return 0;
301 25 13 if (parser->state == RDBP_CLEAN) {
309 2 23 if (op == '+')
311 3 20 else if (op == '-')
313 4 16 else if (op == ':')
315 3 13 else if (op == '$')
317 13 0 else if (op == '*') {
327 7 204 if (sv_len(parser->buffer) < 2) return 0;
329 8 196 if (parser->state == RDBP_READ_LINE) {
331 2 6 if (line == NULL) return 0;
332 3 3 if (_reply_completed(parser, line)) return 1;
334 5 191 else if (parser->state == RDBP_READ_ERROR) {
336 1 4 if (line == NULL) return 0;
338 3 1 if (_reply_completed(parser, err)) return 1;
340 25 166 else if (parser->state == RDBP_READ_NUMBER) {
342 1 24 if (line == NULL) return 0;
343 4 19 if (_reply_completed(parser, line)) return 1;
345 35 131 else if (parser->state == RDBP_READ_BULK_LEN) {
347 33 2 if (length >= 0) {
351 2 0 else if (length == -1) {
352 1 1 if (_reply_completed(parser, newSVpvn(NULL, 0))) return 1;
356 35 96 else if (parser->state == RDBP_READ_BULK) {
357 2 33 if (sv_len(parser->buffer) < 2 + parser->bulk_len) return 0;
361 4 29 if (parser->utf8) {
362 1 3 if (!sv_utf8_decode(bulk))
365 10 22 if (_reply_completed(parser, bulk)) return 1;
367 26 70 else if (parser->state == RDBP_READ_MBLK_LEN) {
369 21 5 if (length > 0) {
374 2 3 else if (length == 0 || length == -1) {
2 0 else if (length == 0 || length == -1) {
375 3 2 mblk = (length == 0) ? newRV_noinc((SV *)newAV()) : newSVpvn(NULL, 0);
377 3 2 if (parser->mblk_level > 0)
379 2 3 if (_reply_completed(parser, mblk)) return 1;
383 70 0 else if (parser->state == RDBP_WAIT_BUCKS) {
389 32 38 if (op == '$') parser->state = RDBP_READ_BULK_LEN;
390 20 18 else if (op == ':') parser->state = RDBP_READ_NUMBER;
391 4 14 else if (op == '+') parser->state = RDBP_READ_LINE;
392 1 13 else if (op == '-') parser->state = RDBP_READ_ERROR;
393 13 0 else if (op == '*') {