Example #1
0
 public static function run($className)
 {
     $runner = new TestRunner();
     $rc = new ReflectionClass($className);
     $methods = $rc->GetMethods(ReflectionMethod::IS_PUBLIC);
     foreach ($methods as $m) {
         $name = $m->name;
         if (!$runner->isValidTest($name)) {
             continue;
         }
         $count = count($className::$errors);
         $rt = new $className();
         try {
             $rt->setUp();
             $rt->{$name}();
             echo $count === count($className::$errors) ? "." : "F";
         } catch (Exception $e) {
             if ($e instanceof RedisException) {
                 $className::$errors[] = "Uncaught exception '" . $e->getMessage() . "' ({$name})\n";
                 echo 'F';
             } else {
                 echo 'S';
             }
         }
     }
     echo "\n";
     echo implode('', $className::$warnings);
     if (empty($className::$errors)) {
         echo "All tests passed.\n";
         return 0;
     }
     echo implode('', $className::$errors);
     return 1;
 }
Example #2
0
 public static function run($className, $str_limit)
 {
     $rc = new ReflectionClass($className);
     $methods = $rc->GetMethods(ReflectionMethod::IS_PUBLIC);
     $i_limit = -1;
     $i_idx = 0;
     $boo_printed = false;
     $arr_ran_methods = array();
     if ($str_limit && is_numeric($str_limit)) {
         echo "Limiting to {$str_limit} tests!\n";
         $i_limit = (int) $str_limit;
     } else {
         if ($str_limit) {
             echo "Limiting to tests with the substring: '{$str_limit}'\n";
         }
     }
     foreach ($methods as $m) {
         $name = $m->name;
         if (substr($name, 0, 4) !== 'test') {
             continue;
         }
         /* If TestRedis.php was envoked with an argument, do a simple
          * match against the routine.  Useful to limit to one test */
         if ($i_limit == -1 && $str_limit && strpos(strtolower($name), strtolower($str_limit)) === false) {
             continue;
         }
         if ($i_limit > -1 && $i_idx++ >= $i_limit) {
             continue;
         }
         $arr_ran_methods[] = $name;
         $count = count($className::$errors);
         $rt = new $className();
         try {
             $rt->setUp();
             $rt->{$name}();
             echo $count === count($className::$errors) ? "." : "F";
         } catch (Exception $e) {
             if ($e instanceof RedisException) {
                 $className::$errors[] = "Uncaught exception '" . $e->getMessage() . "' ({$name})\n";
                 echo 'F';
             } else {
                 echo 'S';
             }
         }
     }
     echo "\n";
     echo implode('', $className::$warnings);
     echo " --- tests run ---\n";
     echo implode("\n", $arr_ran_methods) . "\n";
     echo " --- fin ---\n";
     if (empty($className::$errors)) {
         echo "All tests passed.\n";
         return 0;
     }
     echo implode('', $className::$errors);
     return 1;
 }
Example #3
0
 public static function run($className)
 {
     $rc = new ReflectionClass($className);
     $methods = $rc->GetMethods(ReflectionMethod::IS_PUBLIC);
     foreach ($methods as $m) {
         $name = $m->name;
         if (substr($name, 0, 4) !== 'test') {
             continue;
         }
         $count = count($className::$errors);
         $rt = new $className();
         $rt->setUp();
         $rt->{$name}();
         echo $count === count($className::$errors) ? "." : "F";
     }
     echo "\n";
     if (empty($className::$errors)) {
         echo "All tests passed.\n";
     }
     echo implode('', $className::$errors);
 }
Example #4
0
 public function LinkObject($Object, $ConstsWithPrefix = true, $MethodsWithPrefix = false, $PropertiesWithPrefix = false)
 {
     # Reflection
     $Class = new ReflectionClass($Object);
     $ClassName = $Class->GetShortName();
     $Constants = $Class->GetConstants();
     $Methods = $Class->GetMethods(ReflectionMethod::IS_PUBLIC);
     $Properties = $Class->GetProperties(ReflectionProperty::IS_PUBLIC);
     # Prefixes
     $ClassPrefix = $ClassName . '_';
     $ConstsPrefix = $ConstsWithPrefix ? strtoupper($ClassPrefix) : null;
     $MethodsPrefix = $MethodsWithPrefix ? $ClassPrefix : null;
     $PropertiesPrefix = $PropertiesWithPrefix ? $ClassPrefix : null;
     # Consts
     $this->AssignVariables($Constants, $ConstsPrefix);
     # Callbacks
     /**
      * If you can do this
      * In one line
      * Without using aux vars
      * Without repeating code
      * Without doing things like: asd($a = dsa(), ...)
      * 
      * YOU'RE A GOD. 
      */
     // Convert ReflectionMethod's into array(MethodName => Callback, [...])
     $Methods = array_map(function ($Method) {
         return $Method->name;
     }, $Methods);
     $Methods = array_combine($Methods, array_map(function ($Method) use($Object) {
         return array($Object, $Method);
     }, $Methods));
     $Methods = array_filter($Methods, function ($Method) {
         return strpos($Method, '__') !== 0;
     }, ARRAY_FILTER_USE_KEY);
     $this->RegisterCallbacks($Methods, $MethodsPrefix);
     # Vars
     // Convert ReflectionProperty's into array(PropertyName => Value, [...])
     $Properties = array_map(function ($Property) {
         return $Property->name;
     }, $Properties);
     $Properties = array_combine($Properties, array_map(function ($Property) use($Object) {
         return $Object->{$Property};
     }, $Properties));
     $this->AssignVariables($Properties);
     return true;
     // Return consts && methods && properties (all of it)
 }
Example #5
0
 public static function run($className, $str_limit = NULL)
 {
     /* Lowercase our limit arg if we're passed one */
     $str_limit = $str_limit ? strtolower($str_limit) : $str_limit;
     $rc = new ReflectionClass($className);
     $methods = $rc->GetMethods(ReflectionMethod::IS_PUBLIC);
     $i_max_len = self::getMaxTestLen($methods, $str_limit);
     foreach ($methods as $m) {
         $name = $m->name;
         if (substr($name, 0, 4) !== 'test') {
             continue;
         }
         /* If we're trying to limit to a specific test and can't match the
          * substring, skip */
         if ($str_limit && strstr(strtolower($name), $str_limit) === FALSE) {
             continue;
         }
         $str_out_name = str_pad($name, $i_max_len + 1);
         echo self::make_bold($str_out_name);
         $count = count($className::$errors);
         $rt = new $className();
         try {
             $rt->setUp();
             $rt->{$name}();
             if ($count === count($className::$errors)) {
                 $str_msg = self::make_success('PASSED');
             } else {
                 $str_msg = self::make_fail('FAILED');
             }
             //echo ($count === count($className::$errors)) ? "." : "F";
         } catch (Exception $e) {
             if ($e instanceof RedisException) {
                 $className::$errors[] = "Uncaught exception '" . $e->getMessage() . "' ({$name})\n";
                 $str_msg = self::make_fail('FAILED');
             } else {
                 $str_msg = self::make_warning('SKIPPED');
             }
         }
         echo "[" . $str_msg . "]\n";
     }
     echo "\n";
     echo implode('', $className::$warnings) . "\n";
     if (empty($className::$errors)) {
         echo "All tests passed. \\o/\n";
         return 0;
     }
     echo implode('', $className::$errors);
     return 1;
 }