[cases.bench_superblocks_found]
# support benchmarking with files
defines.N = [0, 1024]
defines.FILE_SIZE = 8
defines.CHUNK_SIZE = 8
code = '''
    lfs_t lfs;
    lfs_format(&lfs, cfg) => 0;

    // create files?
    lfs_mount(&lfs, cfg) => 0;
    char name[256];
    uint8_t buffer[CHUNK_SIZE];
    for (lfs_size_t i = 0; i < N; i++) {
        sprintf(name, "file%08x", i);
        lfs_file_t file;
        lfs_file_open(&lfs, &file, name,
                LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => 0;

        for (lfs_size_t j = 0; j < FILE_SIZE; j += CHUNK_SIZE) {
            for (lfs_size_t k = 0; k < CHUNK_SIZE; k++) {
                buffer[k] = i+j+k;
            }
            lfs_file_write(&lfs, &file, buffer, CHUNK_SIZE) => CHUNK_SIZE;
        }

        lfs_file_close(&lfs, &file) => 0;
    }
    lfs_unmount(&lfs) => 0;

    BENCH_START();
    lfs_mount(&lfs, cfg) => 0;
    BENCH_STOP();

    lfs_unmount(&lfs) => 0;
'''

[cases.bench_superblocks_missing]
code = '''
    lfs_t lfs;

    BENCH_START();
    int err = lfs_mount(&lfs, cfg);
    assert(err != 0);
    BENCH_STOP();
'''

[cases.bench_superblocks_format]
code = '''
    lfs_t lfs;

    BENCH_START();
    lfs_format(&lfs, cfg) => 0;
    BENCH_STOP();
'''