#!/usr/bin/env python3
from pathlib import Path
import xml.etree.ElementTree as ET

root=Path(__file__).resolve().parents[1]
for p in root.rglob("*.xml"):
    ET.parse(p)

frag=(root/"java/com/android/dialer/calllog/ui/NewCallLogFragment.java").read_text()
loader=(root/"java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java").read_text()
adapter=(root/"java/com/android/dialer/calllog/ui/NewCallLogAdapter.java").read_text()
coalescer=(root/"java/com/android/dialer/calllog/database/Coalescer.java").read_text()
provider=(root/"java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java").read_text()
db=(root/"java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java").read_text()
module=(root/"java/com/android/dialer/calllog/database/CallLogDatabaseModule.java").read_text()
mutation=(root/"java/com/android/dialer/calllog/database/MutationApplier.java").read_text()
layout=(root/"java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml").read_text()
strings=(root/"java/com/android/dialer/calllog/ui/res/values/strings.xml").read_text()

checks={
 "two filters only": "FILTER_ALL" in loader and "FILTER_MISSED" in loader and "FILTER_ANSWERED" not in loader,
 "All is default": "callFilter = AnnotatedCallLogCursorLoader.FILTER_ALL" in frag,
 "All contains normal and missed history": "if (filter == FILTER_MISSED)" in loader,
 "Missed-only selection": "Calls.MISSED_TYPE" in loader,
 "Answered UI fully removed": "lemenzo_call_filter_answered" not in layout and "FILTER_ANSWERED" not in frag,
 "call types stay visually separate": "sameCallType(annotatedCallLogRow)" in coalescer,
 "boundary merge respects call type": "newer.getCallType() != older.getCallType()" in adapter,
 "bounded 250-row page": "PAGE_SIZE = 250" in loader,
 "keyset timestamp cursor": "beforeTimestamp" in loader and "AnnotatedCallLog.TIMESTAMP" in loader,
 "keyset id cursor": "beforeId" in loader and "AnnotatedCallLog._ID" in loader,
 "provider validated limit": "validatedLimit(uri)" in provider,
 "lazy older-page load": "loadOlderPage()" in frag,
 "RecyclerView virtualization": "RecyclerView" in frag,
 "missed read only on Missed": "scheduleMissedReadTimerIfNeeded" in frag and "FILTER_MISSED" in frag,
 "timestamp index": "timestamp_id_index" in db,
 "type/timestamp index": "call_type_timestamp_id_index" in db,
 "5000-entry annotated history": "return 5000;" in module,
 "batched provider mutations": "MAX_OPERATIONS_PER_BATCH = 400" in mutation,
 "retention trigger upgrade": "drop trigger if exists delete_old_rows" in db,
 "two-tab UI": "lemenzo_call_filter_all" in layout and "lemenzo_call_filter_missed" in layout,
 "two empty states": "lemenzo_call_empty_all" in strings and "lemenzo_call_empty_missed" in strings,
}
bad=[k for k,v in checks.items() if not v]
if bad:
    raise SystemExit("FAIL: "+", ".join(bad))
print("LEMENZO PHONE ALL/MISSED + PERFORMANCE VALIDATION: PASS")
for k in checks:
    print(" -",k)
