<?php
require __DIR__.'/metadata.php';$n=0;$check=static function($got,$want)use(&$n){$n++;if($got!==$want)throw new RuntimeException('Metadata assertion '.$n);};
$base=['column_name'=>'ID','data_type'=>'BIGINT','data_length'=>8,'data_scale'=>0,'data_default'=>null];
$fresh=$base;$fresh['data_length']=8.0;$fresh['data_scale']=0.0;$check(FLcatalogSame([$fresh],[$base]),true);
foreach(['data_default'=>'NULL','data_type'=>'INTEGER','column_name'=>'NOT_ID','nullable'=>'Y','data_length'=>'8','data_scale'=>1.0]as $key=>$value){$bad=$fresh;$bad[$key]=$value;$check(FLcatalogSame([$bad],[$base]),false);}
foreach([1000001,2147483647,-1]as $length){$old=$base;$old['data_length']=$length;$new=$old;$new['data_length']=(float)$length;$check(FLcatalogSame([$new],[$old]),false);}
foreach(['STRATEGY_SNAPSHOT','QUOTE_SNAPSHOT']as $name){$old=['column_name'=>$name,'data_type'=>'CLOB','data_length'=>2147483647,'data_default'=>null];$new=$old;$new['data_length']=2147483647.0;$check(FLcatalogSame([$new],[$old]),true);$new['data_default']='NULL';$check(FLcatalogSame([$new],[$old]),false);}
$old=$base;$new=$old;$new['data_length']=INF;$check(FLcatalogSame([$new],[$old]),false);
echo json_encode(['passed'=>true,'assertions'=>$n,'DB'=>0,'HTTP'=>0]),"\n";
