#name=flash_test_thonny.py
import uos
import time

def test_flash():
    print("========================================")
    print("   TEST MEMOIRE FLASH RP2040 (THONNY)   ")
    print("========================================")
    
    # 1. Analyse de la capacité de la mémoire Flash
    try:
        stat = uos.statvfs('/')
        block_size = stat[0]
        total_blocks = stat[2]
        free_blocks = stat[3]
        
        total_size_kb = (block_size * total_blocks) / 1024
        free_size_kb = (block_size * free_blocks) / 1024
        used_size_kb = total_size_kb - free_size_kb
        
        print(f"Taille totale  : {total_size_kb:.2f} Ko")
        print(f"Espace utilisé : {used_size_kb:.2f} Ko")
        print(f"Espace libre   : {free_size_kb:.2f} Ko")
    except Exception as e:
        print("Erreur de lecture de la taille Flash :", e)
        return

    print("----------------------------------------")
    print("Test d'écriture et de lecture...")
    
    # 2. Test d'écriture / lecture / vérification d'intégrité
    test_file = "flash_test_tmp.dat"
    test_data = "Test d'intégrité mémoire Flash RP2040 - 0123456789\n" * 20
    
    try:
        # Écriture
        start = time.ticks_ms()
        with open(test_file, "w") as f:
            f.write(test_data)
        write_time = time.ticks_diff(time.ticks_ms(), start)
        
        # Lecture
        start = time.ticks_ms()
        with open(test_file, "r") as f:
            read_data = f.read()
        read_time = time.ticks_diff(time.ticks_ms(), start)
        
        # Nettoyage du fichier temporaire
        uos.remove(test_file)
        
        # Comparaison
        if read_data == test_data:
            print(f"-> Écriture OK ({write_time} ms)")
            print(f"-> Lecture OK ({read_time} ms)")
            print(">>> STATUT : Mémoire Flash 100% Fonctionnelle !")
        else:
            print(">>> STATUT : Erreur d'intégrité des données !")
            
    except Exception as e:
        print("Erreur lors du test d'E/S :", e)

    print("========================================")

if __name__ == "__main__":
    test_flash()