Assert.class.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************************
00003  *   Copyright (C) 2005-2007 by Konstantin V. Arkhipov                     *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU Lesser General Public License as        *
00007  *   published by the Free Software Foundation; either version 3 of the    *
00008  *   License, or (at your option) any later version.                       *
00009  *                                                                         *
00010  ***************************************************************************/
00011 /* $Id: Assert.class.php 4687 2007-12-09 18:57:18Z voxus $ */
00012 
00018     final class Assert extends StaticFactory
00019     {
00020         public static function isTrue($boolean, $message = null)
00021         {
00022             if ($boolean !== true)
00023                 self::fail(
00024                     $message.', '.self::dumpArgument($boolean)
00025                 );
00026         }
00027         
00028         public static function isFalse($boolean, $message = null)
00029         {
00030             if ($boolean !== false)
00031                 self::fail(
00032                     $message.', '.self::dumpArgument($boolean)
00033                 );
00034         }
00035         
00036         public static function isNull($variable, $message = null)
00037         {
00038             if ($variable !== null)
00039                 self::fail(
00040                     $message.', '.self::dumpArgument($variable)
00041                 );
00042         }
00043 
00044         public static function isNotNull($variable, $message = null)
00045         {
00046             if ($variable === null)
00047                 self::fail($message);
00048         }
00049 
00050         public static function isArray(&$variable, $message = null)
00051         {
00052             if (!is_array($variable))
00053                 self::fail(
00054                     $message.', '.self::dumpArgument($variable)
00055                 );
00056         }
00057 
00058         public static function isInteger($variable, $message = null)
00059         {
00060             if (
00061                 !(
00062                     is_numeric($variable)
00063                     && $variable == (int) $variable
00064                 )
00065             )
00066                 self::fail(
00067                     $message.', '.self::dumpArgument($variable)
00068                 );
00069         }
00070         
00071         public static function isPositiveInteger($variable, $message = null)
00072         {
00073             if (
00074                 !self::checkInteger($variable)
00075                 || $variable < 0
00076             )
00077                 self::fail(
00078                     $message.', '.self::dumpArgument($variable)
00079                 );
00080         }
00081 
00082         public static function isFloat($variable, $message = null)
00083         {
00084             if (
00085                 !(
00086                     $variable == (float) $variable
00087                     && is_numeric($variable)
00088                 )
00089             )
00090                 self::fail(
00091                     $message.', '.self::dumpArgument($variable)
00092                 );
00093         }
00094 
00095         public static function isString($variable, $message = null)
00096         {
00097             if (!is_string($variable))
00098                 self::fail(
00099                     $message.', '.self::dumpArgument($variable)
00100                 );
00101         }
00102         
00103         public static function isBoolean($variable, $message = null)
00104         {
00105             if (!($variable === true || $variable === false))
00106                 self::fail(
00107                     $message.', '.self::dumpArgument($variable)
00108                 );
00109         }
00110 
00111         public static function isTernaryBase($variable, $message = null)
00112         {
00113             if (
00114                 !(
00115                     ($variable === true)
00116                     || ($variable === false)
00117                     || ($variable === null)
00118                 )
00119             )
00120                 self::fail($message);
00121         }
00122 
00123         public static function brothers(&$first, &$second, $message = null)
00124         {
00125             if (get_class($first) !== get_class($second))
00126                 self::fail($message);
00127         }
00128         
00129         public static function isEqual($first, $second, $message = null)
00130         {
00131             if ($first !== $second)
00132                 self::fail(
00133                     $message.', '.self::dumpOppositeArguments($first, $second)
00134                 );
00135         }
00136         
00137         public static function isInstance($first, $second, $message = null)
00138         {
00139             if (!ClassUtils::isInstanceOf($first, $second))
00140                 self::fail(
00141                     $message.', '.self::dumpOppositeArguments($first, $second)
00142                 );
00143         }
00144         
00145         public static function isUnreachable($message = 'unreachable code reached')
00146         {
00147             self::fail($message);
00148         }
00149         
00151 
00152         public static function checkInteger($value)
00153         {
00154             return (
00155                 is_numeric($value)
00156                 && ($value == (int) $value)
00157                 && (strlen($value) == strlen((int) $value))
00158             );
00159         }
00160         
00161         public static function dumpArgument($argument)
00162         {
00163             return 'argument: ['.print_r($argument, true).']';
00164         }
00165         
00166         public static function dumpOppositeArguments($first, $second)
00167         {
00168             return
00169                 'arguments: ['.print_r($first, true).'] '
00170                 .'vs. ['.print_r($second, true).'] ';
00171         }
00173         
00174         private static function fail($message = null)
00175         {
00176             throw new WrongArgumentException(
00177                 $message
00178                 .(
00179                     defined('__LOCAL_DEBUG__')
00180                         ? "\n\n".print_r(debug_backtrace(), true)
00181                         : null
00182                 )
00183             );
00184         }
00185     }
00186 ?>

Generated on Sun Dec 9 21:56:22 2007 for onPHP by  doxygen 1.5.4