#!/usr/bin/env python3
"""Exact Python-integer verification; no JavaScript number parsing or DB access."""
import copy,hashlib,json,pathlib
P=pathlib.Path(__file__).resolve().parent
V=['0','9007199254740991','9007199254740993','9223372036854775807','18446744073709551615']
def check(proposal,b,c,diag,offline):
    assert proposal['status']=='proposal_only_not_insert_authorized'
    assert proposal['rows_per_side']==5 and proposal['dml_executed']==0
    assert proposal['account_mutations']==proposal['existing_log_mutations']==0
    assert proposal['marker']=='CDXP5W11A91C'
    assert proposal['fully_frozen_row_assertions']==10
    assert b['status']=='pass' and c['exit_code']==c['stderr_bytes']==0
    assert c['report']['status']=='pass'
    for lane,meta,uid in [('B',b,46912),('C',c['report'],1926)]:
        u=meta['owned_user'];assert int(u['user_id'])==uid and int(u['store_id'])==2147001111 and int(u['is_delete'])==1 and u['nick_name']=='CDXCM11F782_store'
        assert all(str(u[f]) in ('0','0.00') for f in ['gift_balance_text','balance_text','subsidy_balance_text'])
        assert meta['marker_collisions']==meta['owned_user_id_collisions']==meta['owned_user_existing_logs']==0
        names=[x['column_name'].lower() for x in meta['columns']]
        assert len(names)==(16 if lane=='B' else 19)
        assert meta['triggers']==[]
        for i,row in enumerate(proposal['rows'][lane]):
            d=row['explicit_values'];assert list(d)==names[1:] and 'log_id' not in d
            assert d['user_id']==uid and d['store_id']==2147001111 and d['scene']==30
            assert d['money']==d['balance_before']==d['balance_after']=='0.00'
            assert d['biz_order_id']==V[i] and isinstance(d['biz_order_id'],str)
            assert row['biz_order_id_bind_type']=='PDO::PARAM_STR' and row['log_id']=='omitted_database_auto_increment'
            assert d['biz_order_no']=='CDXP5W11A91C_'+str(i) and d['idempotency_key']=='CDXP5W11A91C:gift:'+str(i)
            assert d['biz_type']=='precision_probe' and d['remark'].startswith('CDXP5W11A91C fixture-only;')
            assert d['create_time']==(978278400 if lane=='B' else '2001-01-01 00:00:00')
            if lane=='C':assert d['is_delete']==1 and d['create_by']=='CDXP5W11A91C' and d['update_time']=='2001-01-01 00:00:00'
    ds=diag['report']['results'];assert diag['exit_code']==diag['stderr_bytes']==0
    assert ds['all_target_triggers']['status']=='pass' and ds['all_target_triggers']['rows']==[{'n':0}]
    assert ds['all_target_constraints']['status']=='pass' and len(ds['all_target_constraints']['rows'])==1 and ds['all_target_constraints']['rows'][0]['constraint_type']=='P'
    assert ds['dba_owner_columns']['driver_code']==ds['dba_exact_constraint']['driver_code']==-5504
    assert offline['status']=='pass' and offline['assertions']==17 and offline['business_reads']==offline['dml']==offline['ddl']==0
    wire=offline['exact_wire'];assert hashlib.sha256(wire.encode()).hexdigest()==offline['wire_sha256']
    parsed=json.loads(wire)
    assert [r['biz_order_id'] for r in parsed]==[0,9007199254740991,9007199254740993,9223372036854775807,'18446744073709551615']
    assert [type(r['biz_order_id']) for r in parsed]==[int,int,int,int,str]
    assert '"biz_order_id":9007199254740993,' in wire and '"biz_order_id":"18446744073709551615",' in wire

def main():
    vals=[json.loads((P/f).read_text()) for f in ['FIXTURE_PROPOSAL.json','metadata-B.json','metadata-C.json','catalog-diagnostics.json','offline-vectors.json']]
    check(*vals)
    mutations=[('dml_executed',1),('rows_per_side',6),('account_mutations',1),('existing_log_mutations',1),('fully_frozen_row_assertions',9)]
    for k,v in mutations:
        a=copy.deepcopy(vals);a[0][k]=v
        try:check(*a)
        except AssertionError:continue
        raise AssertionError('Escaped mutation '+k)
    for k,v in [('biz_order_id','9007199254740992'),('money','0.01'),('user_id',1927),('create_time',0),('scene',20)]:
        a=copy.deepcopy(vals);a[0]['rows']['C'][2]['explicit_values'][k]=v
        try:check(*a)
        except AssertionError:continue
        raise AssertionError('Escaped row mutation '+k)
    print(json.dumps({'status':'pass','evidence_positive':1,'negative_mutations':10,'exact_integer_parser':'Python arbitrary precision int','business_reads':0,'dml':0}))
if __name__=='__main__':main()
