from pathlib import Path
root=Path(__file__).resolve().parents[1]
bridge=(root/"src/com/lemenzo/messenger/sms/BulkSmsBridgeReceiver.java").read_text()
sender=(root/"src/com/lemenzo/messenger/sms/SmsSender.java").read_text()
tracker=(root/"src/com/lemenzo/messenger/sms/MultipartSendTracker.java").read_text()
store=(root/"src/com/lemenzo/messenger/data/BroadcastStore.java").read_text()
repo=(root/"src/com/lemenzo/messenger/data/MessageRepository.java").read_text()
activity=(root/"src/com/lemenzo/messenger/BroadcastActivity.java").read_text()
checks={
"bridge reads common broadcast id":'getStringExtra("broadcast_id")' in bridge,
"bridge reads message id":'getStringExtra("broadcast_message_id")' in bridge,
"bridge reads recipient name":'getStringExtra("recipient_name")' in bridge,
"bridge builds/upserts one local broadcast":'upsertExternalRecipient(' in bridge,
"bridge sends with request id AND broadcast id":'sendExternalBroadcastRecipient(' in bridge,
"legacy bridge remains compatible":': SmsSender.send(' in bridge,
"tracker sends Multi SMS status callback":'external_request_id' in tracker and 'com.lemenzo.multisms.BULK_STATUS' in tracker,
"tracker updates local broadcast status":'new BroadcastStore(c).updateRecipient' in tracker,
"broadcast success skips individual sent provider row":'if (broadcastId != null && !broadcastId.isEmpty())' in tracker,
"broadcast pending rows hidden from normal conversations":'isBroadcastToken(appContext, pending.token)' in repo,
"store tracks expected total":'expectedTotal' in store and 'Math.max(r.expectedTotal' in store,
"store tracks per-recipient rendered body":'recipient.body' in store,
"broadcast conversation preserves personalized message state":'renderedBody' in store and 'MessageRecipient' in store,
"broadcast detail shows aggregate per-message status":'statusSummary(message)' in activity,
}
bad=[k for k,v in checks.items() if not v]
if bad:
 print("MESSENGER MULTI SMS BROADCAST BRIDGE VALIDATION: FAIL")
 for x in bad: print("-",x)
 raise SystemExit(1)
print("MESSENGER MULTI SMS BROADCAST BRIDGE VALIDATION: PASS")
for x in checks: print("-",x)
