l和r指表达式的左右两边,数字代表关联表达式为真的次数。
例如,对于以下表达式,l && !r 的覆盖范围为 0:
exists $self->{'true'} and exists $self->{'false'}
这意味着0 测试涵盖了以下情况:
(exists $self->{'true'}) && !(exists $self->{'false'})
Logical-and 和logical-or 有两个输入,可以分别取两个值。
+-----------------+-----------------+
| Left-hand side | Right-hand side |
+-----------------+-----------------+
| False | False |
| False | True |
| True | False |
| True | True |
+-----------------+-----------------+
但是,由于短路,Perl 并不总是计算右手边。实际情况如下:
+-----------------------------------+
| Logical AND |
+-----------------+-----------------+
| Left-hand side | Right-hand side |
+-----------------+-----------------+
| False | - |
| True | False |
| True | True |
+-----------------+-----------------+
+-----------------------------------+
| Logical OR |
+-----------------+-----------------+
| Left-hand side | Right-hand side |
+-----------------+-----------------+
| False | False |
| False | True |
| True | - |
+-----------------+-----------------+
Devel::Cover 正在报告这些输入集中的哪些已经过测试。
+--------------------------------------------------------+
| Logical AND |
+--------------------+-----------------+-----------------+
| Devel::Cover label | Left-hand side | Right-hand side |
+--------------------+-----------------+-----------------+
| !l | False | - |
| l && !r | True | False |
| l && r | True | True |
+--------------------+-----------------+-----------------+
+--------------------------------------------------------+
| Logical OR |
+--------------------+-----------------+-----------------+
| Devel::Cover label | Left-hand side | Right-hand side |
+--------------------+-----------------+-----------------+
| l | True | - |
| !l && r | False | True |
| !l && !r | False | False |
+--------------------+-----------------+-----------------+
如果我们查看链接页面的第一行,我们会看到
!l 2
l && !r 0
l && r 2
为
exists $self->{'true'} and exists $self->{'false'}
意思是
!l meaning !(exists $self->{'true'}) was true 2 times.
l && !r meaning (exists $self->{'true'}) && !(exists $self->{'false'}) was true 0 times.
l && r meaning (exists $self->{'true'}) && (exists $self->{'false'}) was true 2 times.
这意味着 (exists $self->{'true'}) && !(exists $self->{'false'}) 的真实性从未经过测试。