#!/usr/bin/env bash
set -euo pipefail

PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
JAVA_DIR="$PROJECT_DIR/app/src/main/java/com/cpt/electronicmenu/tv"
BOOT_RECEIVER="$JAVA_DIR/BootReceiver.java"
BOOT_SERVICE="$JAVA_DIR/BootLaunchService.java"
ACCESSIBILITY_SERVICE="$JAVA_DIR/AutoStartAccessibilityService.java"
MAIN_ACTIVITY="$JAVA_DIR/MainActivity.java"
BUILD_FILE="$PROJECT_DIR/app/build.gradle"
MANIFEST="$PROJECT_DIR/app/src/main/AndroidManifest.xml"
BUILD_SCRIPT="$PROJECT_DIR/tools/build-rdfz-signed-release.sh"

assert_contains() {
  local file="$1"
  local expected="$2"
  if ! grep -Fq "$expected" "$file"; then
    echo "FAIL: $file 缺少：$expected" >&2
    exit 1
  fi
}

assert_not_contains() {
  local file="$1"
  local forbidden="$2"
  if grep -Fq "$forbidden" "$file"; then
    echo "FAIL: $file 仍包含：$forbidden" >&2
    exit 1
  fi
}

assert_contains "$BUILD_FILE" "versionCode 15"
assert_contains "$BUILD_FILE" "versionName '1.3.11'"
assert_not_contains "$BOOT_RECEIVER" "context.startActivity(BootLaunchService.menuIntent(context));"
assert_contains "$BOOT_RECEIVER" '}, 3_000L);'
assert_contains "$BOOT_SERVICE" "new long[]{3_000L, 6_000L, 10_000L, 20_000L, 40_000L}"
assert_contains "$BOOT_SERVICE" 'private boolean launchScheduleStarted;'
assert_contains "$BOOT_SERVICE" 'if (launchScheduleStarted) {'
assert_contains "$ACCESSIBILITY_SERVICE" 'MIN_LAUNCH_INTERVAL_MS = 3_000L'
assert_contains "$ACCESSIBILITY_SERVICE" "new long[]{3_000L, 6_000L, 10_000L, 20_000L, 40_000L, 80_000L, 120_000L, 180_000L}"
assert_contains "$MANIFEST" '<action android:name="mitv.action.STR_BOOT_COMPLETED" />'
assert_contains "$MAIN_ACTIVITY" 'showStatus(R.string.loading_menu);'
assert_contains "$BUILD_SCRIPT" 'electronic-menu-tv-rdfz-v1.3.11-xiaomi-3s-first-screen-release-signed.apk'
assert_contains "$BUILD_SCRIPT" 'TOPIC_DIR="$(cd "$PROJECT_DIR/../.." && pwd)"'
assert_contains "$BUILD_SCRIPT" "if [[ \"\$VERSION_NAME\" != '1.3.11' ]]"

echo "PASS: v1.3.11 电子菜牌 3 秒开机首屏契约满足。"
