Branch Coverage

blib/lib/MQUL.pm
Criterion Covered Total %
branch 235 324 72.5


line true false branch
238 2 97 unless $doc and ref $doc and ref $doc eq 'HASH'
240 2 94 if $query and !ref($query) || ref $query ne 'HASH'
242 0 19 if $defs and !ref($defs) || ref $defs ne 'ARRAY' || scalar @$defs % 2 != 0
247 19 76 if ($defs)
257 10 103 if ($key eq '$or' and ref $value eq 'ARRAY') { }
260 0 17 unless ref $_ eq 'HASH'
264 11 7 unless (&_attribute_matches($doc, $k, $v))
270 6 11 if ($ok)
275 4 6 unless $found
277 25 78 unless &_attribute_matches($doc, $key, $value)
303 17 104 if ($key =~ /\./) { }
308 13 4 if defined $v
311 98 6 if exists $$doc{$key}
315 26 95 if (not ref $value) { }
0 95 elsif (blessed $value and blessed $value eq 'MongoDB::OID' || blessed $value eq 'MorboDB::OID') { }
2 93 elsif (ref $value eq 'Regexp') { }
92 1 elsif (ref $value eq 'HASH') { }
1 0 elsif (ref $value eq 'ARRAY') { }
318 2 24 unless defined $virt{$key}
319 0 24 if (ref $virt{$key} eq 'ARRAY') { }
24 0 elsif (not ref $virt{$key}) { }
320 0 0 unless &_array_has_eq($value, $virt{$key})
322 7 17 unless $virt{$key} eq $value
329 0 0 unless defined $virt{$key}
330 0 0 if (blessed($virt{$key}) and blessed($virt{$key}) eq 'MongoDB::OID' || blessed($virt{$key}) eq 'MorboDB::OID') { }
331 0 0 unless $virt{$key}->value eq $value->value
339 0 2 unless defined $virt{$key}
340 0 2 if (ref $virt{$key} eq 'ARRAY') { }
2 0 elsif (not ref $virt{$key}) { }
341 0 0 unless &_array_has_re($value, $virt{$key})
343 1 1 unless $virt{$key} =~ /$value/
350 2 90 if (not &_has_adv_que($value)) { }
355 0 2 unless Compare($value, $virt{$key})
363 14 84 if ($q eq '$gt') { }
8 76 elsif ($q eq '$gte') { }
6 70 elsif ($q eq '$lt') { }
6 64 elsif ($q eq '$lte') { }
1 63 elsif ($q eq '$eq') { }
2 61 elsif ($q eq '$ne') { }
15 46 elsif ($q eq '$exists') { }
4 42 elsif ($q eq '$mod' and ref $term eq 'ARRAY' and scalar @$term == 2) { }
4 38 elsif ($q eq '$in' and ref $term eq 'ARRAY') { }
3 35 elsif ($q eq '$nin' and ref $term eq 'ARRAY') { }
4 31 elsif ($q eq '$size' and is_int $term) { }
3 28 elsif ($q eq '$all' and ref $term eq 'ARRAY') { }
28 0 elsif ($q eq '$type' and not ref $term) { }
364 0 14 unless defined $virt{$key} and not ref $virt{$key}
365 14 0 if (is_float($virt{$key})) { }
366 7 7 unless $virt{$key} > $term
368 0 0 unless $virt{$key} gt $term
371 0 8 unless defined $virt{$key} and not ref $virt{$key}
372 8 0 if (is_float($virt{$key})) { }
373 1 7 unless $virt{$key} >= $term
375 0 0 unless $virt{$key} ge $term
378 0 6 unless defined $virt{$key} and not ref $virt{$key}
379 5 1 if (is_float($virt{$key})) { }
380 1 4 unless $virt{$key} < $term
382 0 1 unless $virt{$key} lt $term
385 0 6 unless defined $virt{$key} and not ref $virt{$key}
386 6 0 if (is_float($virt{$key})) { }
387 1 5 unless $virt{$key} <= $term
389 0 0 unless $virt{$key} le $term
392 0 1 unless defined $virt{$key} and not ref $virt{$key}
393 0 1 if (is_float($virt{$key})) { }
394 0 0 unless $virt{$key} == $term
396 0 1 unless $virt{$key} eq $term
399 0 2 unless defined $virt{$key} and not ref $virt{$key}
400 1 1 if (is_float($virt{$key})) { }
401 0 1 unless $virt{$key} != $term
403 0 1 unless $virt{$key} ne $term
406 10 5 if ($term) { }
407 5 5 unless exists $virt{$key}
409 1 4 if exists $virt{$key}
412 1 3 unless defined $virt{$key} and is_float($virt{$key}) and $virt{$key} % $$term[0] == $$term[1]
414 1 3 unless defined $virt{$key} and &_value_in($virt{$key}, $term)
416 1 2 unless defined $virt{$key} and not &_value_in($virt{$key}, $term)
418 1 1 unless defined $virt{$key} and ref $virt{$key} eq 'ARRAY' && scalar @{$virt{$key};} == $term || ref $virt{$key} eq 'HASH' && scalar keys %{$virt{$key};} == $term
420 0 3 unless defined $virt{$key} and ref $virt{$key} eq 'ARRAY'
422 1 5 unless &_value_in($_, $virt{$key})
425 3 25 if ($term eq 'int') { }
4 21 elsif ($term eq 'float') { }
2 19 elsif ($term eq 'real') { }
2 17 elsif ($term eq 'whole') { }
2 15 elsif ($term eq 'string') { }
2 13 elsif ($term eq 'array') { }
5 8 elsif ($term eq 'hash') { }
1 7 elsif ($term eq 'bool') { }
3 4 elsif ($term eq 'date') { }
3 1 elsif ($term eq 'null') { }
1 0 elsif ($term eq 'regex') { }
426 1 2 unless defined $virt{$key} and is_int($virt{$key})
428 0 4 unless defined $virt{$key} and is_float($virt{$key})
430 0 2 unless defined $virt{$key} and is_real($virt{$key})
432 1 1 unless defined $virt{$key} and is_whole($virt{$key})
434 0 2 unless defined $virt{$key} and is_string($virt{$key})
436 0 2 unless defined $virt{$key} and ref $virt{$key} eq 'ARRAY'
438 1 4 unless defined $virt{$key} and ref $virt{$key} eq 'HASH'
442 0 3 unless defined $virt{$key} and not ref $virt{$key}
444 1 2 unless blessed $date and blessed $date eq 'DateTime'
446 1 2 unless exists $virt{$key} and not defined $virt{$key}
448 0 1 unless defined $virt{$key} and ref $virt{$key} eq 'Regexp'
454 0 1 unless Compare($value, $virt{$key})
474 0 0 if $_ eq $value
494 0 0 if /$re/
513 90 592 if exists $$hash{$_}
533 0 46 if is_float $_ and not is_float $value
534 0 46 if not is_float $_ and is_float $value
535 0 46 if is_float $_ and $value == $_
536 9 37 if not is_float $_ and $value eq $_
559 2 17 unless defined $doc and ref $doc and ref $doc eq 'HASH'
561 1 15 unless defined $obj and ref $obj and ref $obj eq 'HASH'
567 14 1 if (&_has_adv_upd($obj)) { }
569 2 16 if ($op eq '$inc') { }
2 14 elsif ($op eq '$set') { }
2 12 elsif ($op eq '$unset') { }
1 11 elsif ($op eq '$rename') { }
1 10 elsif ($op eq '$push') { }
1 9 elsif ($op eq '$pushAll') { }
2 7 elsif ($op eq '$addToSet') { }
2 5 elsif ($op eq '$pop') { }
1 4 elsif ($op eq '$shift') { }
1 3 elsif ($op eq '$splice') { }
2 1 elsif ($op eq '$pull') { }
1 0 elsif ($op eq '$pullAll') { }
571 0 2 unless ref $$obj{$op} eq 'HASH'
578 0 2 unless ref $$obj{$op} eq 'HASH'
584 0 2 unless ref $$obj{$op} eq 'HASH'
586 2 0 if $$obj{$op}{$field}
590 0 1 unless ref $$obj{$op} eq 'HASH'
592 1 0 if exists $$doc{$field}
597 0 1 unless ref $$obj{$op} eq 'HASH'
599 0 1 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
606 0 1 unless ref $$obj{$op} eq 'HASH'
608 0 1 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
615 0 2 unless ref $$obj{$op} eq 'HASH'
617 0 2 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
620 1 1 ref $$obj{$op}{$field} && ref $$obj{$op}{$field} eq 'ARRAY' ? :
622 2 2 unless defined &_index_of($val, $$doc{$field})
628 0 2 unless ref $$obj{$op} eq 'HASH'
630 0 2 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
633 2 0 if $$obj{$op}{$field}
638 0 1 unless ref $$obj{$op} eq 'HASH'
640 0 1 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
643 1 0 if $$obj{$op}{$field}
648 0 1 unless ref $$obj{$op} eq 'HASH'
650 0 1 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
654 0 1 unless ref $$obj{$op}{$field} and ref $$obj{$op}{$field} eq 'ARRAY' and scalar @{$$obj{$op}{$field};} == 2
660 0 2 unless ref $$obj{$op} eq 'HASH'
662 0 2 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
673 0 1 unless ref $$obj{$op} eq 'HASH'
675 0 1 if defined $$doc{$field} and ref $$doc{$field} ne 'ARRAY'
709 14 84 if exists $$hash{$_}
730 0 22 if (is_float($$array[$i]) and is_float $value) { }
731 0 0 if $$array[$i] == $value
733 6 16 if $$array[$i] eq $value
757 0 23 unless exists $BUILTINS{$func}
760 4 19 unless ref $$def{$func}
766 49 4 if defined $v
770 2 21 unless scalar @vals
790 42 28 unless $key =~ /\./
802 35 15 if ($have and ref $have eq 'HASH' and exists $$have{$key}) { }
10 5 elsif ($have and ref $have eq 'ARRAY' and $key =~ /^\d+$/ and scalar @$have > $key) { }