validateQuranData static method

bool validateQuranData(
  1. QuranData data
)

Validate the loaded data structure

Implementation

static bool validateQuranData(QuranData data) {
  try {
    // Check basic structure
    if (data.surahs.length != 114) {
      return false;
    }

    // Check total ayat count
    final totalAyat =
        data.surahs.fold<int>(0, (sum, surah) => sum + surah.numberOfAyahs);
    if (totalAyat != 6236) {
      return false;
    }

    // Check surah ordering
    for (int i = 0; i < data.surahs.length; i++) {
      if (data.surahs[i].id != i + 1) {
        return false;
      }
    }

    // Check ayah ordering within surahs
    for (final surah in data.surahs) {
      if (surah.ayat.length != surah.numberOfAyahs) {
        return false;
      }

      for (int i = 0; i < surah.ayat.length; i++) {
        if (surah.ayat[i].id != i + 1) {
          return false;
        }
      }
    }

    // Check Juz and Hizb mappings
    final juzSet = <int>{};
    final hizbSet = <int>{};

    for (final surah in data.surahs) {
      for (final ayah in surah.ayat) {
        if (ayah.juz < 1 || ayah.juz > 30) {
          return false;
        }
        if (ayah.hizb < 1 || ayah.hizb > 60) {
          return false;
        }

        juzSet.add(ayah.juz);
        hizbSet.add(ayah.hizb);
      }
    }

    // Should have all 30 Juz and 60 Hizb
    if (juzSet.length != 30 || hizbSet.length != 60) {
      return false;
    }

    return true;
  } catch (e) {
    return false;
  }
}