<?php
namespace app\common\service {class BaseService {}}
namespace think {class Config {public static $type='mysql';public static function get($key){return self::$type;}}}
namespace {
require $argv[1];$class=new \ReflectionClass(\app\p\logic\BillingRecord::class);$instance=$class->newInstanceWithoutConstructor();$method=$class->getMethod('formatNullableTime');$method->setAccessible(true);
$cases=[[null,'--','--'],['','--','--'],['2000-01-01','--','--'],['2000-01-01 00:00:00','--','--'],['2000-01-01 00:00:00.000000','--','2000-01-01 00:00:00.000000'],['2026-10-10 19:10:20','2026-10-10 19:10:20','2026-10-10 19:10:20'],['2026-10-10 19:10:20.123456','2026-10-10 19:10:20','2026-10-10 19:10:20.123456'],['2024-02-29 23:59:59.1','2024-02-29 23:59:59','2024-02-29 23:59:59.1'],['2026-02-29 23:59:59.000000','2026-02-29 23:59:59.000000','2026-02-29 23:59:59.000000'],['2026-10-10 25:10:20.000000','2026-10-10 25:10:20.000000','2026-10-10 25:10:20.000000'],['2026-10-10 19:10:20.1234567','2026-10-10 19:10:20.1234567','2026-10-10 19:10:20.1234567'],['2026-10-10T19:10:20.000000','2026-10-10T19:10:20.000000','2026-10-10T19:10:20.000000'],['not-a-date','not-a-date','not-a-date'],['0000-01-01 00:00:00.000000','0000-01-01 00:00:00.000000','0000-01-01 00:00:00.000000']];
$fail=[];$total=0;foreach(['mysql','app\\cores\\database\\Dm']as $lane){\think\Config::$type=$lane;foreach($cases as $i=>$case){$total++;if($method->invoke($instance,$case[0])!==$case[$lane==='mysql'?2:1])$fail[]=['lane'=>$lane,'case'=>$i];}}
if($class->hasMethod('normalizeTimePrecision')){$normal=$class->getMethod('normalizeTimePrecision');$normal->setAccessible(true);foreach([[null,null],['',''],['2000-01-01 00:00:00.000000','2000-01-01 00:00:00'],[23,23],['2026-02-30 12:00:00.000000','2026-02-30 12:00:00.000000']]as $i=>$case){$total++;if($normal->invoke(null,$case[0],true)!==$case[1])$fail[]=['lane'=>'log-normalizer','case'=>$i];}}
echo json_encode(['total'=>$total,'failed'=>$fail]),"\n";exit($fail?1:0);
}
