koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] CVS: koha/t Boolean.t,NONE,1.1


From: Ambrose Li
Subject: [Koha-cvs] CVS: koha/t Boolean.t,NONE,1.1
Date: Wed, 05 Feb 2003 22:15:02 -0800

Update of /cvsroot/koha/koha/t
In directory sc8-pr-cvs1:/tmp/cvs-serv20029/t

Added Files:
        Boolean.t 
Log Message:
Convenience function to check for 1/0/true/false/on/off/yes/no


--- NEW FILE ---
use strict;
use C4::Boolean;

use vars qw( @tests );
use vars qw( $loaded );

sub f ($) {
   my($x) = @_;
   my $it;
   # Returns either the value returned prefixed with 'OK:',
   # or the caught exception (string expected)
   local($@);
   eval {
      $it = 'OK:' . C4::Boolean::true_p($x);
   };
   if ($@) {
      $it = $@;
      $it =~ s/ at \S+ line \d+$\.\n//s;
   }
   return $it;
}

BEGIN {
   @tests = (
   [
      'control',
      sub { C4::Boolean::INVALID_BOOLEAN_STRING_EXCEPTION },
      'The given value does not seem to be interpretable as a Boolean value',
      undef

   # False strings
   ], [
      '"0"',     \&f, 'OK:0', '0'
   ], [
      '"false"', \&f, 'OK:0', 'false'
   ], [
      '"off"',   \&f, 'OK:0', 'off'
   ], [
      '"no"',    \&f, 'OK:0', 'no'

   # True strings
   ], [
      '"1"',     \&f, 'OK:1', '1'
   ], [
      '"true"',  \&f, 'OK:1', 'true'
   ], [
      '"on"',    \&f, 'OK:1', 'on'
   ], [
      '"yes"',   \&f, 'OK:1', 'yes'
   ], [
      '"YES"',   \&f, 'OK:1', 'YES'     # verify case insensitivity

   # Illegal strings
   ], [
      'undef',   \&f, C4::Boolean::INVALID_BOOLEAN_STRING_EXCEPTION, undef
   ], [
      '"foo"',   \&f, C4::Boolean::INVALID_BOOLEAN_STRING_EXCEPTION, 'foo'
   ],
);
}

BEGIN { $| = 1; printf "1..%d\n", scalar(@tests); }
END {print "not ok 1\n" unless $loaded;}
$loaded = 1;


# Run all tests in sequence
for (my $i = 1; $i <= scalar @tests; $i += 1) {
   my $test = $tests[$i - 1];
   my($title, $f, $expected, $input) = @$test;
   die "not ok $i (malformed test case)\n"
      unless @$test == 4 && ref $f eq 'CODE';

   my $output = &$f($input);
   if (
         (!defined $output && !defined $expected)
      || (defined $output && defined $expected && $output eq $expected)
   ) {
      print "ok $i - $title\n";
   } else {
      print "not ok $i - $title: got ",
            (defined $output? "\"$output\"": 'undef'),
            ', expected ',
            (defined $expected? "\"$expected\"": 'undef'),
            "\n";
   }
}









reply via email to

[Prev in Thread] Current Thread [Next in Thread]