<?php
/** * OPBE * Copyright (C) 2013 Jstar * * This file is part of OPBE. * * OPBE is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OPBE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with OPBE. If not, see <http://www.gnu.org/licenses/>. * * @package OPBE * @author Jstar <frascafresca@gmail.com> * @copyright 2013 Jstar <frascafresca@gmail.com> * @license http://www.gnu.org/licenses/ GNU AGPLv3 License * @version beta(26-10-2013) * @link https://github.com/jstar88/opbe */
require (dirname(__DIR__) . DIRECTORY_SEPARATOR ."utils".DIRECTORY_SEPARATOR."includer.php"); require (OPBEPATH . "tests".DIRECTORY_SEPARATOR."LangImplementation.php");
class RunnableTest { private $time; private $memory; private $report;
public static $reslist, $pricelist, $requeriments, $resource, $CombatCaps; public function __construct($debug = false) { if(empty(self::$reslist)) { self::includeVars('XG'); } if(!LangManager::getInstance()->implementationExist()) { LangManager::getInstance()->setImplementation(new LangImplementation('XG')); } $attackers = $this->getAttachers(); $defenders = $this->getDefenders(); $memory1 = memory_get_usage(); $micro1 = microtime();
$engine = new Battle($attackers, $defenders); $startBattle = DebugManager::runDebugged(array($engine,'startBattle'),array('RunnableTest', 'myErrorHandler'), array('RunnableTest', 'save')); $startBattle($debug);
$micro1 = microtime() - $micro1; $memory1 = memory_get_usage() - $memory1;
$this->report = $engine->getReport();
$this->time = round(1000 * $micro1, 2); $this->memory = round($memory1 / 1000); echo $this;
} public function getShipType($id, $count) { $rf = self::$CombatCaps[$id]['sd']; $shield = self::$CombatCaps[$id]['shield']; $cost = array(self::$pricelist[$id]['metal'], self::$pricelist[$id]['crystal']); $power = self::$CombatCaps[$id]['attack']; if (in_array($id, self::$reslist['fleet'])) { return new Ship($id, $count, $rf, $shield, $cost, $power); } return new Defense($id, $count, $rf, $shield, $cost, $power); } public function getAttachers() {
} public function getDefenders() {
} public static function myErrorHandler($errno, $errstr, $errfile, $errline) { $error = ''; switch ($errno) { case E_USER_ERROR: $error .= "ERROR [$errno] $errstr<br />"; break;
case E_USER_WARNING: $error .= "WARNING [$errno] $errstr<br />"; break;
case E_USER_NOTICE: $error .= "NOTICE [$errno] $errstr<br />"; break;
default: $error .= "Unknown error type: [$errno] $errstr<br />"; break; } $error .= "Error on line $errline in file $errfile"; $error .= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />"; self::save($error); /* Don't execute PHP internal error handler */ return true;
} public static function save($other) { date_default_timezone_set(TIMEZONE); $time = date('l jS \of F Y h:i:s A'); $post = '$_POST =' . var_export($_POST); $get = '$_GET =' . var_export($_GET); $output = ob_get_clean(); $path = OPBEPATH.'tests'.DIRECTORY_SEPARATOR.'runnable'.DIRECTORY_SEPARATOR.'errors'.DIRECTORY_SEPARATOR.'internals'; if (!file_exists($path)) { mkdir($path, 0777, true); } file_put_contents($path.DIRECTORY_SEPARATOR . date('d-m-y__H-i-s') . '.html', $time . PHP_EOL . self::br2nl($other) . PHP_EOL . $post . PHP_EOL . $get . PHP_EOL . self::br2nl($output)); die('An error occurred, we will resolve it soon as possible'); } private static function br2nl($text) { $x = preg_replace('/<br\\\\s*?\\/??>/i', PHP_EOL, $text); return str_ireplace('<br />', '', $x); } public function __toString() { $micro = $this->time; $memory = $this->memory; if(get_class($this) != 'WebTest') { $this->report->css = '../../../'; } return $this->report . <<< EOT <br>______________________________________________<br> Battle calculated in <font color=blue>$micro ms</font>.<br> Memory used: <font color=blue>$memory KB</font><br> _______________________________________________<br> EOT;
}
public static function includeVars($name) { require (OPBEPATH."tests".DIRECTORY_SEPARATOR."runnable".DIRECTORY_SEPARATOR."vars".DIRECTORY_SEPARATOR."$name.php"); RunnableTest::$reslist = $reslist; RunnableTest::$pricelist = $pricelist; RunnableTest::$requeriments = $requeriments; RunnableTest::$resource = $resource; RunnableTest::$CombatCaps = $CombatCaps; } public static function getVarsList() { $list = array(); if ($handle = opendir(OPBEPATH."tests".DIRECTORY_SEPARATOR."runnable".DIRECTORY_SEPARATOR."vars")) { while (false !== ($entry = readdir($handle))) if ($entry != "." && $entry != "..") $list[] = basename($entry, ".php"); closedir($handle); } return $list; } }
?>
|