<?php
declare(strict_types=1);
namespace think {
class Config {public static $driver='mysql';public static function get($key){return self::$driver;}}
class Db {public static $calls=[];public static function name($table){self::$calls[]=['table'=>$table];return new DomainQuery();}}
class DomainQuery {public function where($where){Db::$calls[]=['where'=>$where];return $this;}public function field($field){return $this;}public function order($order){return $this;}public function find(){return ['code'=>5];}}
}
namespace {
$root=$argv[1]??'';require $root.'/application/p/logic/Equipment.php';$r=new ReflectionClass(\app\p\logic\Equipment::class);$logic=$r->newInstanceWithoutConstructor();$checks=0;$fail=[];
$same=static function($want,$actual,$name)use(&$checks,&$fail):void{$checks++;if($want!==$actual){$fail[]=$name;}};
$outside=[128,-129,2147483646,PHP_INT_MAX,PHP_INT_MIN,'128','+128','-129','00000128','-00000129','9223372036854775808','18446744073709551615','-9999999999999999999999999999999'];
$inside=[-128,127,0,1,98,'-128','+127','-000128','000127','+0','-0','000000000000000000000000000000000000000000000000000000000000001'];
$unknown=[128.0,'128.0','1e3',' 128','128 ','abc',null,true,[]];
foreach(['mysql','app\\cores\\database\\Dm'] as $driver){\think\Config::$driver=$driver;foreach(array_merge($outside,$inside,$unknown) as $i=>$value){\think\Db::$calls=[];$actual=$logic->getCode($value);$skip=$driver!=='mysql'&&$i<count($outside);$same(['code'=>$skip?1:6],$actual,$driver.'.'.$i.'.return');$same($skip?0:2,count(\think\Db::$calls),$driver.'.'.$i.'.query_calls');if(!$skip){$same($value,\think\Db::$calls[1]['where']['type'],$driver.'.'.$i.'.original_type');}}}
echo json_encode(['assertions'=>$checks,'failures'=>$fail,'real_database_operations'=>0]),PHP_EOL;exit($fail?1:0);
}
