<?php
namespace think {class Db {public static function name($table){return new \NutritionRowsBoundary();}}}
namespace {
function config($key){return $GLOBALS['database_type'];}
class NutritionRowsBoundary {
 public $rows=[];public $one;
 public function inquiry(...$args){return $this->rows;}public function inquiryAll(...$args){return $this->rows;}
 public function inquiryColumn(...$args){return ['fixture-time'=>'训练期'];}public function inquiryCount(...$args){return count($this->rows);}
 public function read(...$args){return $this->one;}public function count(...$args){return count($this->rows);}
 public function field(...$args){return $this;}public function where(...$args){return $this;}public function order(...$args){return $this;}public function page(...$args){return $this;}public function alias(...$args){return $this;}public function select(){return $this;}public function toArray(){return $this->rows;}
}
require $argv[1];require $argv[2];
$nutrition=(new \ReflectionClass(\app\p\logic\Nutrition::class))->newInstanceWithoutConstructor();
$time=(new \ReflectionClass(\app\p\logic\NutritionTime::class))->newInstanceWithoutConstructor();
$n=new NutritionRowsBoundary();$t=new NutritionRowsBoundary();$nutrition->modelSet=$n;
$prop=new \ReflectionProperty($nutrition,'modelNutritionTime');$prop->setAccessible(true);$prop->setValue($nutrition,$t);
$prop=new \ReflectionProperty($time,'model');$prop->setAccessible(true);$prop->setValue($time,$t);
$checks=0;$failed=[];$check=static function($actual,$expected,$label)use(&$checks,&$failed){$checks++;if($actual!==$expected)$failed[]=$label;};
$samples=[['2001-02-03 04:05:06.000000','2001-02-03 04:05:06'],['2024-02-29 23:59:59.0','2024-02-29 23:59:59'],['2001-02-03 04:05:06.123456','2001-02-03 04:05:06.123456'],['2001-02-29 04:05:06.000000','2001-02-29 04:05:06.000000'],['2001-02-03 24:05:06.000000','2001-02-03 24:05:06.000000'],['2001-02-03 04:60:06.000000','2001-02-03 04:60:06.000000'],['2001-02-03 04:05:60.000000','2001-02-03 04:05:60.000000'],['0999-02-03 04:05:06.000000','0999-02-03 04:05:06.000000'],['2001-02-03 04:05:06.0000000','2001-02-03 04:05:06.0000000'],['0000-00-00 00:00:00.000000','0000-00-00 00:00:00.000000'],['2001-02-03 04:05:06','2001-02-03 04:05:06'],['',''],[null,null],[0,0],[0.0,0.0],[false,false]];
foreach(['mysql','app\\cores\\database\\Dm'] as $type){$GLOBALS['database_type']=$type;
 foreach($samples as $index=>$sample){[$value,$want]=$sample;if($type==='mysql')$want=$value;
  $row=['id'=>1,'uuid'=>'fixture-time','name'=>'测试','use_time'=>'fixture-time','create_time'=>$value,'other_time'=>$value];$expected=$row;$expected['create_time']=$want;$n->rows=[$row];$n->one=$row;$t->rows=[$row];$t->one=$row;
  $listExpected=$expected;$listExpected['delete_able']=1;$listExpected['take_time']='训练期';
  $check($nutrition->listSet([],1,10,[],['*'])['data'],['rows'=>[$listExpected],'total'=>1],$type.':set list '.$index);
  $check($nutrition->infoSet('fixture-time')['data'],$expected,$type.':set info '.$index);
  $timeExpected=$expected;$timeExpected['delete_able']=1;$check($time->lists([],1,10,[],['*'])['data'],['rows'=>[$timeExpected],'total'=>1],$type.':time list '.$index);
  $check($time->info('fixture-time')['data'],$expected,$type.':time info '.$index);
 }
 foreach([null,false,[]] as $missing){$n->one=$missing;$t->one=$missing;$check($nutrition->infoSet('missing')['data'],$missing,$type.':missing set');$check($time->info('missing')['data'],'',$type.':missing time');}
 $row=['uuid'=>'fixture-time','name'=>'no-date','use_time'=>''];$n->one=$row;$t->one=$row;
 $check($nutrition->infoSet('fixture-time')['data'],$row,$type.':missing date set');$check($time->info('fixture-time')['data'],$row,$type.':missing date time');
 $n->rows=[];$t->rows=[];$check($nutrition->listSet([],1,10,[],['*'])['data'],['rows'=>[],'total'=>0],$type.':empty set');$check($time->lists([],1,10,[],['*'])['data'],['rows'=>[],'total'=>0],$type.':empty time');
}
echo json_encode(['passed'=>$failed===[],'assertions'=>$checks,'failures'=>$failed]),"\n";exit($failed===[]?0:2);
}
