Branch Coverage

lib/Sentinel.xs
Criterion Covered Total %
branch 54 74 72.9


line true false branch
33 13 3 if(ctx[CTX_GET_CB]) {
39 0 13 PUSHMARK(SP);
40 7 6 if(ctx[CTX_OBJ]) {
41 0 7 EXTEND(SP, 1);
46 7 6 if(ctx[CTX_OBJ] && SvPOK(ctx[CTX_GET_CB]))
2 5 if(ctx[CTX_OBJ] && SvPOK(ctx[CTX_GET_CB]))
57 13 0 FREETMPS;
69 10 0 if(ctx[CTX_SET_CB]) {
73 0 10 PUSHMARK(SP);
74 5 5 if(ctx[CTX_OBJ]) {
75 0 5 EXTEND(SP, 2);
79 0 5 EXTEND(SP, 1);
84 5 5 if(ctx[CTX_OBJ] && SvPOK(ctx[CTX_SET_CB]))
2 3 if(ctx[CTX_OBJ] && SvPOK(ctx[CTX_SET_CB]))
90 0 10 FREETMPS;
116 43 20 for(i = 0; i < items; i += 2) {
117 43 0 char *argname = SvPV_nolen(ST(i));
120 38 5 if(streq(argname, "value")) {
123 13 25 else if(streq(argname, "get")) {
13 0 else if(streq(argname, "get")) {
13 0 else if(streq(argname, "get")) {
25 13 else if(streq(argname, "get")) {
126 15 10 else if(streq(argname, "set")) {
15 0 else if(streq(argname, "set")) {
15 0 else if(streq(argname, "set")) {
10 15 else if(streq(argname, "set")) {
129 10 0 else if(streq(argname, "obj")) {
10 0 else if(streq(argname, "obj")) {
10 0 else if(streq(argname, "obj")) {
0 10 else if(streq(argname, "obj")) {
149 5 15 if(value)
152 17 3 if(get_cb || set_cb) {
160 13 4 ctx[CTX_GET_CB] = get_cb ? newSVsv(get_cb) : NULL;
161 15 2 ctx[CTX_SET_CB] = set_cb ? newSVsv(set_cb) : NULL;
162 10 7 ctx[CTX_OBJ] = obj ? newSVsv(obj) : NULL;
168 0 20 if (!items)
169 0 0 EXTEND(SP, 1);