<?php
function activityExtraPureTests():int {
 $n=0;$b=static function($v,$t){return ['value'=>$v,'type'=>$t,'php_type'=>gettype($v),'ok'=>true];};$check=static function($sql,$bind,$schema,$valid)use(&$n){ActivityGate::$dml=0;try{ActivityGate::execute($sql,$bind,null,$schema);$ok=true;}catch(RuntimeException $e){$ok=false;}if($ok!==$valid)throw new RuntimeException('Extra pure contract expectation');$n++;};
 $uuid='00000000-0000-0000-0000-000000000001';$sql='UPDATE `yoshop_activity` SET `status`=:data__status WHERE `uuid` = :where_AND_uuid';$bind=[':data__status'=>$b('0',1),':where_AND_uuid'=>$b($uuid,2)];ActivityGate::$case=['method'=>'able','allowed'=>['kind'=>'update','uuid'=>$uuid,'data'=>['status'=>'0']]];
 ActivityGate::$lane='B';$check($sql,$bind,'ai',true);$guardSql=$sql.' AND `status` <> :where_AND_status';$guardBind=$bind+[':where_AND_status'=>$b(0,1)];$check($guardSql,$guardBind,'ai',false);ActivityGate::$lane='C';$check($guardSql,$guardBind,'ai',true);$check($sql,$bind,'ai',false);foreach([1,'0',null]as $wrong){$bad=$guardBind;$bad[':where_AND_status']=$b($wrong,1);$check($guardSql,$bad,'ai',false);}$bad=$guardBind;$bad[':where_AND_uuid']=$b('OTHER',2);$check($guardSql,$bad,'ai',false);$check($guardSql,$guardBind,'store',false);$check(str_replace('<>','=',$guardSql),$guardBind,'ai',false);
 ActivityGate::$lane='B';$data=['title'=>'CDXACT11W2','type_id'=>'1','status'=>'1','create_by'=>'CDX','store_id'=>10001];ActivityGate::$case=['method'=>'add','allowed'=>['kind'=>'insert','data'=>$data]];$all=$data+['uuid'=>$uuid,'create_time'=>date('Y-m-d H:i:s')];$parts=[];$ib=[];foreach($all as $f=>$v){$parts[]=':data__'.$f;$ib[':data__'.$f]=$b($v,in_array($f,['type_id','status','store_id'],true)?1:2);}$insert='INSERT INTO `yoshop_activity` (`'.implode('`,`',array_keys($all)).'`) VALUES ('.implode(',',$parts).')';$check($insert,$ib,'ai',true);$check($insert,$ib,'store',false);foreach(['title','store_id','uuid','create_by']as $f){$bad=$ib;$bad[':data__'.$f]['value']=$f==='uuid'?'INVALID':($f==='store_id'?999:'OTHER');$check($insert,$bad,'ai',false);}
 ActivityGate::$case=['method'=>'delete','allowed'=>['kind'=>'delete','uuid'=>$uuid,'data'=>[]]];$del='DELETE FROM `yoshop_activity` WHERE `uuid` IN (:where_AND_uuid_in_1)';$db=[':where_AND_uuid_in_1'=>$b($uuid,2)];$check($del,$db,'ai',true);$check(str_replace('yoshop_activity','yoshop_activity_register',$del),$db,'ai',false);$check(str_replace(' IN (:where_AND_uuid_in_1)',' IN (:where_AND_uuid_in_1,:other)',$del),$db+[':other'=>$b('OTHER',2)],'ai',false);
 $old=getenv('ACT_LANE');putenv('ACT_LANE=C');foreach(['2099-02-01 00:00:00.000000'=>'2099-02-01 00:00:00','2099-02-01 00:00:00.0'=>'2099-02-01 00:00:00','2099-02-01 00:00:00.000001'=>'2099-02-01 00:00:00.000001','2099-02-31 00:00:00.000000'=>'2099-02-31 00:00:00.000000','0999-02-01 00:00:00.000000'=>'0999-02-01 00:00:00.000000','2099-02-01 24:00:00.000000'=>'2099-02-01 24:00:00.000000']as $value=>$expected){$dto=activityOracle([['start_time'=>$value,'other_time'=>$value,'img'=>null]],'info')['data'];if($dto['start_time']!==$expected||$dto['other_time']!==$value||$dto['img']!==null)throw new RuntimeException('Independent date oracle boundary');$n++;}putenv('ACT_LANE='.$old);ActivityGate::$lane='';ActivityGate::$dml=0;ActivityGate::$case=[];return $n;
}
