Branch Coverage

bson/bson-iter.c
Criterion Covered Total %
branch 175 444 39.4


line true false branch
46 0 5067 BSON_ASSERT (iter);
47 0 5067 BSON_ASSERT (bson);
49 0 5067 if (BSON_UNLIKELY (bson->len < 5)) {
94 0 261 BSON_ASSERT (iter);
95 0 261 BSON_ASSERT (child);
97 247 14 if (ITER_TYPE (iter) == BSON_TYPE_DOCUMENT) {
99 14 0 } else if (ITER_TYPE (iter) == BSON_TYPE_ARRAY) {
143 0 0 BSON_ASSERT (iter);
144 0 0 BSON_ASSERT (bson);
145 0 0 BSON_ASSERT (key);
147 0 0 return bson_iter_init (iter, bson) && bson_iter_find (iter, key);
0 0 return bson_iter_init (iter, bson) && bson_iter_find (iter, key);
172 0 0 BSON_ASSERT (iter);
173 0 0 BSON_ASSERT (bson);
174 0 0 BSON_ASSERT (key);
176 0 0 return bson_iter_init (iter, bson) && bson_iter_find_case (iter, key);
0 0 return bson_iter_init (iter, bson) && bson_iter_find_case (iter, key);
203 0 0 if (keylen == 0) {
207 0 0 if (keylen < 0) {
211 0 0 while (bson_iter_next (iter)) {
214 0 0 if ((0 == strncmp (key, ikey, keylen)) && (ikey [keylen] == '\0')) {
0 0 if ((0 == strncmp (key, ikey, keylen)) && (ikey [keylen] == '\0')) {
245 0 0 BSON_ASSERT (iter);
246 0 0 BSON_ASSERT (key);
274 0 0 BSON_ASSERT (iter);
275 0 0 BSON_ASSERT (key);
277 0 0 while (bson_iter_next (iter)) {
281 0 0 if (!strcasecmp (key, bson_iter_key (iter))) {
318 0 0 BSON_ASSERT (iter);
319 0 0 BSON_ASSERT (dotkey);
320 0 0 BSON_ASSERT (descendant);
322 0 0 if ((dot = strchr (dotkey, '.'))) {
328 0 0 if (_bson_iter_find_with_len (iter, dotkey, (int)sublen)) {
329 0 0 if (!dot) {
334 0 0 if (BSON_ITER_HOLDS_DOCUMENT (iter) || BSON_ITER_HOLDS_ARRAY (iter)) {
0 0 if (BSON_ITER_HOLDS_DOCUMENT (iter) || BSON_ITER_HOLDS_ARRAY (iter)) {
335 0 0 if (bson_iter_recurse (iter, &tmp)) {
365 0 1905 BSON_ASSERT (iter);
391 0 2020 BSON_ASSERT (iter);
392 0 2020 BSON_ASSERT (iter->raw);
393 0 2020 BSON_ASSERT (iter->len);
432 0 7360 BSON_ASSERT (iter);
436 0 7360 if (!iter->raw) {
453 9029 3528 for (o = iter->off + 1; o < len; o++) {
454 3832 5197 if (!data [o]) {
480 0 263 if ((o + 4) >= len) {
489 6 257 if (l > (len - (o + 4))) {
499 253 4 if (BSON_UNLIKELY ((l == 0) || (iter->next_off >= len))) {
5 248 if (BSON_UNLIKELY ((l == 0) || (iter->next_off >= len))) {
507 3 245 if (BSON_UNLIKELY ((iter->raw + iter->d2)[l - 1] != '\0')) {
518 0 58 if (o >= (len - 4)) {
529 2 56 if (l >= (len - o)) {
536 10 46 if (subtype == BSON_SUBTYPE_BINARY_DEPRECATED) {
537 0 10 if (l < 4) {
551 0 522 if (o >= (len - 4)) {
559 522 0 if ((l > len) || (l > (len - o))) {
0 522 if ((l > len) || (l > (len - o))) {
574 24 10 if ( val != 0x00 && val != 0x01 ) {
2 22 if ( val != 0x00 && val != 0x01 ) {
587 238 0 for (; o < len; o++) {
588 46 192 if (!data [o]) {
595 0 46 if (!eor) {
600 110 0 for (; o < len; o++) {
601 46 64 if (!data [o]) {
607 0 46 if (!eoo) {
619 0 19 if (o >= (len - 4)) {
628 18 1 if ((l > len) || (l > (len - o))) {
0 18 if ((l > len) || (l > (len - o))) {
633 1 17 if ( *(iter->raw + o + l + 3) ) {
648 37 0 if ((len < 19) || (o >= (len - 14))) {
0 37 if ((len < 19) || (o >= (len - 14))) {
659 35 2 if ((l < 14) || (l >= (len - o))) {
3 32 if ((l < 14) || (l >= (len - o))) {
666 0 32 if (iter->next_off >= len) {
674 2 30 if (l >= (len - o - 4 - 4)) {
679 0 30 if ((o + 4 + 4 + l + 4) >= iter->next_off) {
688 3 27 if ((o + 4 + 4 + l + doclen) != iter->next_off) {
720 9 3778 if (iter->next_off >= len) {
804 0 56 BSON_ASSERT (iter);
805 56 0 BSON_ASSERT (!binary || binary_len);
0 56 BSON_ASSERT (!binary || binary_len);
807 56 0 if (ITER_TYPE (iter) == BSON_TYPE_BINARY) {
808 0 56 if (!subtype) {
814 56 0 if (binary) {
819 10 46 if (*subtype == BSON_SUBTYPE_BINARY_DEPRECATED) {
828 0 0 if (binary) {
832 0 0 if (binary_len) {
836 0 0 if (subtype) {
861 0 18 BSON_ASSERT (iter);
863 18 0 if (ITER_TYPE (iter) == BSON_TYPE_BOOL) {
894 0 0 BSON_ASSERT (iter);
935 0 59 BSON_ASSERT (iter);
937 59 0 if (ITER_TYPE (iter) == BSON_TYPE_DOUBLE) {
964 0 69 BSON_ASSERT (iter);
966 69 0 if (ITER_TYPE (iter) == BSON_TYPE_INT32) {
994 0 25 BSON_ASSERT (iter);
996 25 0 if (ITER_TYPE (iter) == BSON_TYPE_INT64) {
1028 0 0 BSON_ASSERT (iter);
1066 0 2412 BSON_ASSERT (iter);
1068 2412 0 if (ITER_TYPE (iter) == BSON_TYPE_DECIMAL128) {
1097 0 20 BSON_ASSERT (iter);
1099 20 0 if (ITER_TYPE (iter) == BSON_TYPE_OID) {
1131 0 46 BSON_ASSERT (iter);
1133 46 0 if (ITER_TYPE (iter) == BSON_TYPE_REGEX) {
1138 46 0 if (options) {
1171 0 203 BSON_ASSERT (iter);
1173 203 0 if (ITER_TYPE (iter) == BSON_TYPE_UTF8) {
1174 203 0 if (length) {
1181 0 0 if (length) {
1215 0 0 BSON_ASSERT (iter);
1217 0 0 if ((str = bson_iter_utf8 (iter, &local_length))) {
1223 0 0 if (length) {
1257 0 18 BSON_ASSERT (iter);
1259 18 0 if (ITER_TYPE (iter) == BSON_TYPE_CODE) {
1260 18 0 if (length) {
1267 0 0 if (length) {
1310 0 27 BSON_ASSERT (iter);
1312 27 0 if (ITER_TYPE (iter) == BSON_TYPE_CODEWSCOPE) {
1313 27 0 if (length) {
1324 0 0 if (length) {
1328 0 0 if (scope_len) {
1332 0 0 if (scope) {
1376 0 15 BSON_ASSERT (iter);
1378 15 0 if (collection) {
1382 15 0 if (oid) {
1386 15 0 if (ITER_TYPE (iter) == BSON_TYPE_DBPOINTER) {
1387 15 0 if (collection_len) {
1391 14 1 if ((*collection_len) > 0) {
1396 15 0 if (collection) {
1400 15 0 if (oid) {
1436 0 24 BSON_ASSERT (iter);
1438 24 0 if (ITER_TYPE (iter) == BSON_TYPE_SYMBOL) {
1443 24 0 if (length) {
1471 0 21 BSON_ASSERT (iter);
1473 21 0 if (ITER_TYPE (iter) == BSON_TYPE_DATE_TIME) {
1501 0 0 BSON_ASSERT (iter);
1503 0 0 if (ITER_TYPE (iter) == BSON_TYPE_DATE_TIME) {
1542 0 16 BSON_ASSERT (iter);
1544 16 0 if (ITER_TYPE (iter) == BSON_TYPE_TIMESTAMP) {
1551 16 0 if (timestamp) {
1555 16 0 if (increment) {
1586 0 0 BSON_ASSERT (iter);
1588 0 0 if (ITER_TYPE (iter) == BSON_TYPE_DATE_TIME) {
1645 0 492 BSON_ASSERT (iter);
1646 0 492 BSON_ASSERT (document_len);
1647 0 492 BSON_ASSERT (document);
1652 492 0 if (ITER_TYPE (iter) == BSON_TYPE_DOCUMENT) {
1707 0 28 BSON_ASSERT (iter);
1708 0 28 BSON_ASSERT (array_len);
1709 0 28 BSON_ASSERT (array);
1714 28 0 if (ITER_TYPE (iter) == BSON_TYPE_ARRAY) {
1792 0 1879 BSON_ASSERT (iter);
1793 0 1879 BSON_ASSERT (visitor);
1795 1873 1863 while (_bson_iter_next_internal (iter, &key, &bson_type, &unsupported)) {
1796 1869 4 if (*key && !bson_utf8_validate (key, strlen (key), false)) {
0 1869 if (*key && !bson_utf8_validate (key, strlen (key), false)) {
1801 1873 0 if (VISIT_BEFORE (iter, key, data)) {
0 1873 if (VISIT_BEFORE (iter, key, data)) {
1808 0 59 if (VISIT_DOUBLE (iter, key, bson_iter_double (iter), data)) {
0 0 if (VISIT_DOUBLE (iter, key, bson_iter_double (iter), data)) {
1820 3 97 if (!bson_utf8_validate (utf8, utf8_len, true)) {
1825 97 0 if (VISIT_UTF8 (iter, key, utf8_len, utf8, data)) {
0 97 if (VISIT_UTF8 (iter, key, utf8_len, utf8, data)) {
1838 244 1 if (bson_init_static (&b, docbuf, doclen) &&
244 0 if (bson_init_static (&b, docbuf, doclen) &&
1839 0 244 VISIT_DOCUMENT (iter, key, &b, data)) {
1852 14 0 if (bson_init_static (&b, docbuf, doclen)
1853 14 0 && VISIT_ARRAY (iter, key, &b, data)) {
0 14 && VISIT_ARRAY (iter, key, &b, data)) {
1866 0 28 if (VISIT_BINARY (iter, key, subtype, binary_len, binary, data)) {
0 0 if (VISIT_BINARY (iter, key, subtype, binary_len, binary, data)) {
1873 0 2 if (VISIT_UNDEFINED (iter, key, data)) {
0 0 if (VISIT_UNDEFINED (iter, key, data)) {
1880 0 18 if (VISIT_OID (iter, key, bson_iter_oid (iter), data)) {
0 0 if (VISIT_OID (iter, key, bson_iter_oid (iter), data)) {
1887 0 14 if (VISIT_BOOL (iter, key, bson_iter_bool (iter), data)) {
0 0 if (VISIT_BOOL (iter, key, bson_iter_bool (iter), data)) {
1894 0 15 if (VISIT_DATE_TIME (iter, key, bson_iter_date_time (iter), data)) {
0 0 if (VISIT_DATE_TIME (iter, key, bson_iter_date_time (iter), data)) {
1901 0 7 if (VISIT_NULL (iter, key, data)) {
0 0 if (VISIT_NULL (iter, key, data)) {
1912 0 23 if (VISIT_REGEX (iter, key, regex, options, data)) {
0 0 if (VISIT_REGEX (iter, key, regex, options, data)) {
1925 0 8 if (VISIT_DBPOINTER (iter, key, collection_len, collection, oid,
0 0 if (VISIT_DBPOINTER (iter, key, collection_len, collection, oid,
1938 0 9 if (VISIT_CODE (iter, key, code_len, code, data)) {
0 0 if (VISIT_CODE (iter, key, code_len, code, data)) {
1950 0 12 if (VISIT_SYMBOL (iter, key, symbol_len, symbol, data)) {
0 0 if (VISIT_SYMBOL (iter, key, symbol_len, symbol, data)) {
1965 14 0 if (bson_init_static (&b, docbuf, doclen) &&
14 0 if (bson_init_static (&b, docbuf, doclen) &&
1966 13 1 VISIT_CODEWSCOPE (iter, key, length, code, &b, data)) {
1973 0 59 if (VISIT_INT32 (iter, key, bson_iter_int32 (iter), data)) {
0 0 if (VISIT_INT32 (iter, key, bson_iter_int32 (iter), data)) {
1984 0 7 if (VISIT_TIMESTAMP (iter, key, timestamp, increment, data)) {
0 0 if (VISIT_TIMESTAMP (iter, key, timestamp, increment, data)) {
1991 0 25 if (VISIT_INT64 (iter, key, bson_iter_int64 (iter), data)) {
0 0 if (VISIT_INT64 (iter, key, bson_iter_int64 (iter), data)) {
2001 0 1206 if (VISIT_DECIMAL128 (iter, key, &dec, data)) {
0 0 if (VISIT_DECIMAL128 (iter, key, &dec, data)) {
2008 0 4 if (VISIT_MAXKEY (iter, bson_iter_key_unsafe (iter), data)) {
0 0 if (VISIT_MAXKEY (iter, bson_iter_key_unsafe (iter), data)) {
2015 0 4 if (VISIT_MINKEY (iter, bson_iter_key_unsafe (iter), data)) {
0 0 if (VISIT_MINKEY (iter, bson_iter_key_unsafe (iter), data)) {
2025 0 1857 if (VISIT_AFTER (iter, bson_iter_key_unsafe (iter), data)) {
0 0 if (VISIT_AFTER (iter, bson_iter_key_unsafe (iter), data)) {
2030 54 1809 if (iter->err_off) {
2031 5 49 if (unsupported &&
5 0 if (unsupported &&
2032 5 0 visitor->visit_unsupported_type &&
2038 49 0 VISIT_CORRUPT (iter, data);
2068 0 0 BSON_ASSERT (iter);
2071 0 0 if (ITER_TYPE (iter) == BSON_TYPE_BOOL) {
2098 0 0 BSON_ASSERT (iter);
2100 0 0 if (ITER_TYPE (iter) == BSON_TYPE_INT32) {
2130 0 0 BSON_ASSERT (iter);
2132 0 0 if (ITER_TYPE (iter) == BSON_TYPE_INT64) {
2162 0 0 BSON_ASSERT (iter);
2164 0 0 if (ITER_TYPE (iter) == BSON_TYPE_DOUBLE) {
2191 0 0 BSON_ASSERT (iter);
2193 0 0 if (ITER_TYPE (iter) == BSON_TYPE_DECIMAL128) {
2230 0 0 BSON_ASSERT (iter);