from pathlib import Path
root=Path(__file__).resolve().parents[1]
record=(root/"src/com/lemenzo/messenger/model/BroadcastRecord.java").read_text()
store=(root/"src/com/lemenzo/messenger/data/BroadcastStore.java").read_text()
activity=(root/"src/com/lemenzo/messenger/BroadcastActivity.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()
bridge=(root/"src/com/lemenzo/messenger/sms/BulkSmsBridgeReceiver.java").read_text()
checks={
"broadcast stores message history":"ArrayList<Message> messages" in record,
"message has own aggregate status":"public int sent;" in record and "public int failed;" in record,
"message has per-recipient status":"MessageRecipient" in record and "renderedBody" in record,
"legacy v5.5 records migrate":"v5.5 migration" in store,
"conversation can begin another message":"beginMessage(" in store,
"message-specific status update":"updateRecipient(" in store and "messageId" in store,
"broadcast activity has normal composer":"EditText input" in activity and "R.drawable.composer_background" in activity,
"send again reuses same recipients":"new ArrayList<>(record.recipients)" in activity,
"send again uses same broadcast id":"recipient.number" in activity and "id," in activity and "messageId" in activity,
"paced resend":"Thread.sleep(25L)" in activity,
"history renders every broadcast message":"for(BroadcastRecord.Message message:r.messages)" in activity,
"each bubble shows aggregate status":"statusSummary(message)" in activity,
"sms tracker carries message id":"broadcast_message_id" in tracker,
"sender supports message-aware broadcast":"broadcastMessageId" in sender,
"Multi SMS bridge reads message id":'getStringExtra("broadcast_message_id")' in bridge,
}
bad=[k for k,v in checks.items() if not v]
if bad:
 print("REUSABLE BROADCAST CONVERSATION VALIDATION: FAIL")
 for x in bad:print("-",x)
 raise SystemExit(1)
print("REUSABLE BROADCAST CONVERSATION VALIDATION: PASS")
for x in checks:print("-",x)
