from pathlib import Path
root=Path(__file__).resolve().parents[1]
compose=(root/"src/com/lemenzo/messenger/ComposeActivity.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()
repo=(root/"src/com/lemenzo/messenger/data/MessageRepository.java").read_text()
main=(root/"src/com/lemenzo/messenger/MainActivity.java").read_text()
activity=(root/"src/com/lemenzo/messenger/BroadcastActivity.java").read_text()
manifest=(root/"AndroidManifest.xml").read_text()
checks={
"broadcast record created before send":"new BroadcastStore(getApplicationContext())" in compose and ".create(text, storedRecipients)" in compose,
"each recipient sent separately":"for (Recipient recipient : recipients)" in compose and "sendBroadcastRecipient" in compose,
"broadcast id tracked":"broadcast_id" in tracker,
"successful broadcast does not insert provider sent row":"if (broadcastId != null && !broadcastId.isEmpty())" in tracker,
"pending broadcast hidden from provider inbox merge":"isBroadcastToken(appContext, pending.token)" in repo,
"local broadcast merged into inbox":"broadcastStore.all()" in main,
"broadcast opens local detail":"BroadcastActivity.EXTRA_BROADCAST_ID" in main,
"local broadcast deletable":"broadcastStore.remove(conversation.broadcast.id)" in main,
"detail registered non-exported":'android:name=".BroadcastActivity" android:exported="false"' in manifest,
"aggregate message statuses displayed":"statusSummary(message)" in activity and "broadcast_status_progress" in activity,
}
bad=[k for k,v in checks.items() if not v]
if bad:
    print("PRIVATE BROADCAST VALIDATION: FAIL")
    for x in bad: print("-",x)
    raise SystemExit(1)
print("PRIVATE BROADCAST VALIDATION: PASS")
for x in checks: print("-",x)
