<?php
declare(strict_types=1);
namespace {
 $root=$argv[1]??__DIR__.'/source';$target=$argv[2]??$root.'/app/store/model/nutrition/NutritionLack.php';require $root.'/vendor/autoload.php';spl_autoload_register(static function($class)use($root){foreach(['app\\'=>'app/','cores\\'=>'cores/'] as $p=>$d)if(strpos($class,$p)===0){$f=$root.'/'.$d.str_replace('\\','/',substr($class,strlen($p))).'.php';if(is_file($f))require $f;}});
 final class AllergyConnectionEdge {private $connection;public function __construct($c){$this->connection=$c;}public function getConnection(){return $this->connection;}}
}
namespace app\common\model\nurtition {
 class NutritionLack {}
 class NutritionMeals implements \ArrayAccess {
  public static $connection;public static $existing=false;public static $saved=[];public static $inserted=null;private $id;
  public function __construct($id=81){$this->id=$id;}
  public static function getOne($where){if(self::$existing)return new self(63);return self::$inserted;}
  public function db(){return new \AllergyConnectionEdge(self::$connection);}
  public function save($data){self::$saved=$data;if(!self::$existing)self::$inserted=$this;return true;}
  public function offsetExists($offset):bool{return $offset==='id';}public function offsetGet($offset){return $this->id;}public function offsetSet($offset,$value):void{throw new \RuntimeException('Unexpected fixture mutation');}public function offsetUnset($offset):void{throw new \RuntimeException('Unexpected fixture mutation');}
 }
}
namespace {
 require $target;$assertions=0;$failures=[];
 foreach([false,true] as $dm)foreach([false,true] as $existing)foreach(['missing','null','empty','value'] as $presence){
  \app\common\model\nurtition\NutritionMeals::$connection=$dm?new \app\common\database\Dm(['type'=>'mysql']):new \think\db\connector\Mysql(['type'=>'mysql']);
  \app\common\model\nurtition\NutritionMeals::$existing=$existing;\app\common\model\nurtition\NutritionMeals::$inserted=null;\app\common\model\nurtition\NutritionMeals::$saved=[];
  $data=['staff_id'=>1851,'set_date'=>'2097-11-11','user_id'=>10010,'type'=>6,'other_text'=>'CDXIW11C8F2','store_id'=>2147001111];if($presence!=='missing')$data['food_allergy']=$presence==='null'?null:($presence==='empty'?'':'CDX_EXPLICIT');$expected=$data;if(!$existing)$expected['create_by']='cdxop11f64c_store';if($dm&&!$existing&&$presence==='missing')$expected['food_allergy']='';
  $id=(new \app\store\model\nutrition\NutritionLack())->addMaseter(['staff_id'=>1851,'set_date'=>'2097-11-11','user_id'=>10010,'type'=>6],$data,'cdxop11f64c_store');
  $name=($dm?'DM':'MYSQL').'_'.($existing?'UPDATE':'INSERT').'_'.$presence;$actual=\app\common\model\nurtition\NutritionMeals::$saved;$assertions++;if($actual!==$expected)$failures[]=['case'=>$name,'expected'=>$expected,'actual'=>$actual];$assertions++;if($id!==($existing?63:81))$failures[]=['case'=>$name.'_master_id','expected'=>$existing?63:81,'actual'=>$id];
 }
 foreach([false,true] as $dm)foreach([false,true] as $existing)foreach(['missing','null','empty','value','lower_only','both_value','both_null','both_empty'] as $presence){
  \app\common\model\nurtition\NutritionMeals::$connection=$dm?new \app\common\database\Dm(['type'=>'mysql']):new \think\db\connector\Mysql(['type'=>'mysql']);\app\common\model\nurtition\NutritionMeals::$existing=$existing;\app\common\model\nurtition\NutritionMeals::$inserted=null;\app\common\model\nurtition\NutritionMeals::$saved=[];
  $data=['staff_id'=>1851,'set_date'=>'2097-11-11','user_id'=>10010,'type'=>11,'other_text'=>'CDXIW11C8F2','store_id'=>2147001111,'food_allergy'=>'CDX_ALLERGY'];
  if(!in_array($presence,['missing','lower_only'],true))$data['food_Intolerance']=in_array($presence,['null','both_null'],true)?null:(in_array($presence,['empty','both_empty'],true)?'':'CDX_CANONICAL');if($presence==='lower_only'||strpos($presence,'both_')===0)$data['food_intolerance']='CDX_LOWER_CONFLICT';
  $expected=$data;if(!$existing)$expected['create_by']='cdxop11f64c_store';if($dm&&array_key_exists('food_Intolerance',$expected)){$expected['food_intolerance']=$expected['food_Intolerance'];unset($expected['food_Intolerance']);}
  $id=(new \app\store\model\nutrition\NutritionLack())->addMaseter(['staff_id'=>1851,'set_date'=>'2097-11-11','user_id'=>10010,'type'=>11],$data,'cdxop11f64c_store');$actual=\app\common\model\nurtition\NutritionMeals::$saved;$name=($dm?'DM':'MYSQL').'_'.($existing?'UPDATE':'INSERT').'_camel_'.$presence;$assertions++;if($actual!==$expected)$failures[]=['case'=>$name,'expected'=>$expected,'actual'=>$actual];$assertions++;if($id!==($existing?63:81))$failures[]=['case'=>$name.'_master_id'];
 }
 echo json_encode(['target_sha256'=>hash_file('sha256',$target),'scope'=>'Actual addMaseter method + actual Dm/Mysql connection types; fake save/read edge, no ORM/PDO proof','assertions'=>$assertions,'failures'=>$failures,'HTTP'=>0,'DML'=>0,'DDL'=>0,'business_connections'=>0],JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE),"\n";exit($failures?1:0);
}
