Branch Coverage

Normalize.xs
Criterion Covered Total %
branch 294 356 82.5


line true false branch
127 184 899 if (ret_cc)
137 10 1516 if (OVER_UTF_MAX(uv))
140 5 1511 if (! plane)
143 1264 247 return row ? row[uv & 0xff] : NULL;
149 6 423 if (OVER_UTF_MAX(uv))
152 3 420 if (! plane)
155 397 23 return row ? row[uv & 0xff] : NULL;
162 429 9 if (!uv2 || OVER_UTF_MAX(uv) || OVER_UTF_MAX(uv2))
429 0 if (!uv2 || OVER_UTF_MAX(uv) || OVER_UTF_MAX(uv2))
0 429 if (!uv2 || OVER_UTF_MAX(uv) || OVER_UTF_MAX(uv2))
165 237 192 if (Hangul_IsL(uv) && Hangul_IsV(uv2)) {
77 160 if (Hangul_IsL(uv) && Hangul_IsV(uv2)) {
69 8 if (Hangul_IsL(uv) && Hangul_IsV(uv2)) {
68 1 if (Hangul_IsL(uv) && Hangul_IsV(uv2)) {
171 65 296 if (Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
65 0 if (Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
56 9 if (Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
46 10 if (Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
44 2 if (Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
176 0 317 if (! plane)
179 38 279 if (! row)
182 122 157 if (! cell)
184 832 76 for (i = cell; i->nextchar; i++) {
185 81 751 if (uv2 == i->nextchar)
194 22 2957 if (OVER_UTF_MAX(uv))
197 11 2946 if (! plane)
200 1754 1192 return row ? row[uv & 0xff] : 0;
210 233 0 if (! Hangul_IsS(uv))
0 233 if (! Hangul_IsS(uv))
215 10 223 if (tindex)
224 660 11 s = SvPV(sv,len);
225 95 576 if (!SvUTF8(sv)) {
227 0 95 if (!SvPOK(tmpsv))
228 0 0 s = SvPV_force(tmpsv,len);
230 95 0 s = SvPV(tmpsv,len);
232 671 0 if (lp)
245 1778 405 while (p < e) {
248 0 1778 if (!retlen)
252 337 1441 if (Hangul_IsS(uv)) {
225 112 if (Hangul_IsS(uv)) {
253 63 162 Renew_d_if_not_enough_to(UTF8_MAXLEN * 3)
257 321 1232 U8* r = iscompat ? dec_compat(uv) : dec_canonical(uv);
259 265 1288 if (r) {
261 95 170 Renew_d_if_not_enough_to(len)
262 1417 265 while (len--)
266 324 964 Renew_d_if_not_enough_to(UTF8_MAXLEN)
289 1411 380 while (p < e) {
293 0 1411 if (!retlen)
299 734 677 if (curCC != 0) {
300 54 680 if (seq_max < cc_pos + 1) { /* extend if need */
302 12 42 if (CC_SEQ_SIZE == cc_pos) { /* seq_ary full */
304 0 12 New(0, seq_ext, seq_max, UNF_cc);
305 120 12 for (i = 0; i < cc_pos; i++)
309 0 42 Renew(seq_ext, seq_max, UNF_cc);
319 635 99 if (p < e)
324 217 559 if (cc_pos) {
327 101 116 if (cc_pos > 1) /* reordered if there are two c.c.'s */
330 734 217 for (i = 0; i < cc_pos; i++) {
331 51 683 Renew_d_if_not_enough_to(UTF8_MAXLEN)
337 677 99 if (curCC == 0) {
338 314 363 Renew_d_if_not_enough_to(UTF8_MAXLEN)
342 12 368 if (seq_ext)
366 1063 273 while (p < e) {
370 0 1063 if (!retlen)
376 294 769 if (!valid_uvS) {
377 259 35 if (curCC == 0) {
380 182 77 if (p < e)
384 28 7 Renew_d_if_not_enough_to(UTF8_MAXLEN)
393 184 585 if ((iscontig && cc_pos) || /* discontiguous combination */
51 133 if ((iscontig && cc_pos) || /* discontiguous combination */
387 249 if ((iscontig && cc_pos) || /* discontiguous combination */
394 205 182 (curCC != 0 && preCC == curCC) || /* blocked by same CC */
37 417 (curCC != 0 && preCC == curCC) || /* blocked by same CC */
406 184 233 if (uvComp && !isExclusion(uvComp)) {
184 0 if (uvComp && !isExclusion(uvComp)) {
412 120 64 if (p < e)
419 585 64 if (!composed) {
421 147 438 if (curCC != 0 || !(p < e)) {
68 79 if (curCC != 0 || !(p < e)) {
422 50 456 if (seq_max < cc_pos + 1) { /* extend if need */
424 10 40 if (CC_SEQ_SIZE == cc_pos) { /* seq_ary full */
425 0 10 New(0, seq_ext, seq_max, UV);
426 0 10 Copy(seq_ary, seq_ext, cc_pos, UV);
429 0 40 Renew(seq_ext, seq_max, UV);
436 438 147 if (curCC != 0 && p < e)
388 50 if (curCC != 0 && p < e)
443 217 121 Renew_d_if_not_enough_to(UTF8_MAXLEN)
447 137 201 if (cc_pos) {
450 506 137 for (i = 0; i < cc_pos; i++) {
451 12 494 Renew_d_if_not_enough_to(UTF8_MAXLEN)
459 10 263 if (seq_ext)
481 48 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 48 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 48 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
32 16 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
32 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
32 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 32 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 32 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
16 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
16 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 16 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
16 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
0 0 dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
638 61 12 for (p = s; p < e; p += retlen) {
640 0 61 if (!retlen)
644 1 60 if (preCC > curCC && curCC != 0) { /* canonical ordering violated */
0 1 if (preCC > curCC && curCC != 0) { /* canonical ordering violated */
648 6 55 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv))) {
6 0 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv))) {
28 33 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv))) {
7 21 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv))) {
4 29 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv))) {
654 12 11 RETVAL = boolSV(result);
675 103 25 for (p = s; p < e; p += retlen) {
677 0 103 if (!retlen)
681 4 99 if (preCC > curCC && curCC != 0) { /* canonical ordering violated */
2 2 if (preCC > curCC && curCC != 0) { /* canonical ordering violated */
687 10 91 if (Hangul_IsS(uv)) /* Hangul syllables are canonical composites */
3 7 if (Hangul_IsS(uv)) /* Hangul syllables are canonical composites */
689 98 0 else if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv)) {
92 6 else if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv)) {
0 92 else if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv)) {
693 13 79 else if (isComp2nd(uv))
695 34 45 else if (ix) {
700 9 25 if (compat && !(canon && strEQ(canon, compat))) {
5 4 if (compat && !(canon && strEQ(canon, compat))) {
0 5 if (compat && !(canon && strEQ(canon, compat))) {
708 10 27 if (isMAYBE && result) /* NO precedes MAYBE */
6 4 if (isMAYBE && result) /* NO precedes MAYBE */
710 19 12 RETVAL = boolSV(result);
730 179 46 for (p = s; p < e; p += retlen) {
735 0 179 if (!retlen)
740 24 155 if (sCan) {
744 0 24 if (!canret)
753 104 75 if (curCC != 0 && curCC < preCC) { /* canonical ordering violated */
18 86 if (curCC != 0 && curCC < preCC) { /* canonical ordering violated */
758 21 140 if (ix) {
759 21 0 if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv)) {
18 3 if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv)) {
0 18 if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv)) {
763 8 10 else if (isComp2nd(uv))
767 21 137 if (sCan) {
772 0 21 if (pCan < sCan)
775 0 21 if (!canret)
783 7 60 if (isMAYBE && result) /* NO precedes MAYBE */
5 2 if (isMAYBE && result) /* NO precedes MAYBE */
785 41 21 RETVAL = boolSV(result);
829 8 36 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
6 2 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
21 21 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
14 7 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
12 9 if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
831 28 16 RETVAL = boolSV(result);
846 51 15 if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv))
39 12 if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv))
6 33 if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv))
848 11 22 else if (ix) {
852 3 8 if (compat && (!canon || strNE(canon, compat)))
1 2 if (compat && (!canon || strNE(canon, compat)))
0 1 if (compat && (!canon || strNE(canon, compat)))
855 35 31 RETVAL = boolSV(result);
868 9 12 RETVAL = composite ? newSVuv(composite) : &PL_sv_undef;
881 11 27 if (Hangul_IsS(uv)) {
8 3 if (Hangul_IsS(uv)) {
887 14 16 U8* rstr = ix ? dec_compat(uv) : dec_canonical(uv);
888 8 22 if (!rstr)
908 133 2 while (s < p) {
911 0 133 if (p < s)
914 74 59 if (getCombinClass(uv) == 0) /* Last Starter found */
920 0 76 XPUSHs(svp);
924 0 76 XPUSHs(svp);