]> git.vpit.fr Git - perl/modules/Test-Leaner.git/commitdiff
Only is() should treat undef specially
authorVincent Pit <vince@profvince.com>
Fri, 24 Dec 2010 17:15:02 +0000 (18:15 +0100)
committerVincent Pit <vince@profvince.com>
Fri, 24 Dec 2010 17:16:51 +0000 (18:16 +0100)
lib/Test/Leaner.pm
t/21-is.t

index 5e2f0a5f227e488256aa9677155c20763fe12a78..a022c92bedc56565fc3b671e60705b995b3878ab 100644 (file)
@@ -296,11 +296,7 @@ BEGIN {
   eval <<"IS_BINOP";
 sub is_$name (\$\$;\$) {
  my (\$x, \$y, \$desc) = \@_;
- no warnings 'uninitialized';
- \@_ = (
-  (not(defined \$x xor defined \$y) and \$x $op \$y),
-  \$desc,
- );
+ \@_ = ((\$x $op \$y), \$desc);
  goto &ok;
 }
 IS_BINOP
@@ -308,11 +304,14 @@ IS_BINOP
  }
 }
 
-{
- no warnings 'once';
- *is     = \&is_eq;
- *like   = \&is_like;
- *unlike = \&is_unlike;
+sub is ($$;$) {
+ my ($got, $expected, $desc) = @_;
+ no warnings 'uninitialized';
+ @_ = (
+  (not(defined $got xor defined $expected) and $got eq $expected),
+  $desc,
+ );
+ goto &ok;
 }
 
 sub isnt ($$;$) {
@@ -325,6 +324,12 @@ sub isnt ($$;$) {
  goto &ok;
 }
 
+{
+ no warnings 'once';
+ *like   = \&is_like;
+ *unlike = \&is_unlike;
+}
+
 sub cmp_ok ($$$;$) {
  my ($x, $op, $y, $desc) = @_;
  my $name = $binops{$op};
index 97dc57a627de317f4278abc9f32bf6028fe7dbdc..2059fca2dc8baa86f4a432334276e846966bf1e5 100644 (file)
--- a/t/21-is.t
+++ b/t/21-is.t
@@ -5,11 +5,12 @@ use warnings;
 
 use Test::Leaner;
 
-plan tests => 7;
+plan tests => 8;
 
 is   undef, undef, 'undef is undef';
-isnt 1,     undef, 'one is not undef';
-isnt undef, 1,     'undef is not one';
+isnt 0,     undef, 'zero is not undef';
+isnt undef, 0,     'undef is not zero';
+is   0,     0,     'zero is zero';
 is   1,     1,     'one is one';
 isnt '1.0', 1,     '1.0 is not one string-wise';