<?php
declare(strict_types=1);
namespace think {class Paginator {public $captured;public function __construct(array $v){$this->captured=$v;}}}
namespace {class LogQueryDouble {public $calls=[];public function __call($n,$a){$this->calls[$n][]=$a;if($n==='paginate')return new \think\Paginator($this->calls);return $this;}public function getPk(){return 'log_id';}public function setQueryDefaultValue($a,$d){return array_merge($d,$a);}}function between_time($v){return ['start_time'=>1791648000,'end_time'=>1791648000];}}
namespace app\common\model\user {class PointsLog extends \LogQueryDouble {}class BalanceLog extends \LogQueryDouble {}}
namespace {
 $root=$argv[1]??'';if(!is_dir($root))throw new \RuntimeException('Explicit source root required');$assertions=0;$fail=[];
 foreach(['store','terminal'] as $m)foreach(['PointsLog','BalanceLog'] as $name){require $root.'/app/'.$m.'/model/user/'.$name.'.php';$class='app\\'.$m.'\\model\\user\\'.$name;$params=['search'=>"甲'乙",'userId'=>123,'user_id'=>123,'scene'=>10,'betweenTime'=>['2026-10-11','2026-10-11']];$p=(new $class)->getList($params);$join=$p->captured['join'][0];$filter=$p->captured['where'][0][0];$alias=$name==='PointsLog'?'m':'log';
  $tests=['safe_join_alias'=>$join===['user u','u.user_id = '.$alias.'.user_id'],'safe_search_qualifier'=>in_array(['u.nick_name','like',"%甲'乙%"],$filter,true),'bound_search_bytes'=>count(array_filter($filter,static function($r){return is_array($r)&&isset($r[2])&&$r[2]==="%甲'乙%";}))===1,'user_filter_unchanged'=>in_array([$alias.'.user_id','=',123],$filter,true),'date_lower_bound'=>in_array([$alias.'.create_time','>=',1791648000],$filter,true),'date_upper_exclusive'=>in_array([$alias.'.create_time','<',1791734400],$filter,true),'original_projection'=>$p->captured['field'][0]===[$alias.'.*'],'original_page15'=>$p->captured['paginate'][0]===[15],'original_eager_user_avatar'=>$p->captured['with'][0]===[['user.avatar']]];
  if($name==='BalanceLog')$tests['original_scene_int']=in_array(['log.scene','=',10],$filter,true);foreach($tests as $label=>$ok){$assertions++;if(!$ok)$fail[]=$m.'/'.$name.':'.$label;}
 }echo json_encode(['assertions'=>$assertions,'failures'=>$fail,'PDO'=>0,'SQL'=>0,'HTTP'=>0,'DML'=>0]),"\n";exit($fail?1:0);
}
